作者:lippor | 来源:互联网 | 2023-05-24 11:12
我有一个分布式SQL数据库的想法,使用bittorrent协议来提取和写入其数据.
为了论证,我们假设这是一个消息传递应用程序,其中数千个用户运行包含消息传递窗口的程序,以及用于编写消息的输入框.
编写的每条消息都会对自己的sqlite DB进行INSERT.
如何做到这一点
下载一个基本上包含用于创建数据库的模式/ DDL的.torrent文件,并在本地计算机上创建它.
每当"写入"动作完成时(就像用户想要发送消息一样),INSERT行(有点像delta)会做两件事:
写入自己的内部数据库
从该行创建一个.torrent文件,名为messaging- [my-ip] - [UTC_timestamp] .torrent,并将其发布到跟踪器
运行应用程序的每个人都在不断地在跟踪器上扫描这个特定名称的文件(可能在某个特定日期之后),下载.torrent并托管它,并在其本地数据库上运行INSERT命令.
你拥有的是大量的delta文件,所有的P2P托管都是为了冗余,在很多机器上更新本地的.sqlite数据库.
我遇到的一些问题
如何刮取某个文件名的种子?我已经阅读了http bittorrent跟踪器规范,但您似乎只能根据其特定的信息名称查询文件.有没有办法查询一组文件,或基于文件名?
如何从跟踪器下载.torrent文件?我是否需要在中央服务器上托管文件,还是可以使用跟踪器以某种方式下载文件?如果我必须自己托管.torrent文件......
这不会破坏分散式数据库的目的,因为如果我的网站出现故障,应用程序将停止获取更新吗?
我在这里先向您的帮助表示感谢.
1> the8472..:
Bittorrent旨在分发不可变和有些大的数据集,并不真正知道跨越多个种子的任何操作.数据库主要是关于改变相对较小的数据块并在不同的子集上执行操作.
尝试将数据库语义变为bittorent时,你会有一点快乐.
最多可以使用它来分发数据库的快照.
如果新内容仅添加/删除文件(同样具有相当大的尺寸)而不修改旧文件,那么稍微修补bittorrent可以相当好地回收来自先前种子的数据.
除此之外的任何事情都需要对协议进行一些重大修改,它不再是真正的香草bittorrent.