我有一个分布式 SQL 数据库的想法,该数据库使用 bittorrent 协议来提取和写入其数据。
为了争论,假设这是一个消息应用程序,成千上万的用户在其中运行一个包含消息窗口的程序,以及一个供他们编写消息的输入框。
写入的每条消息都会插入到它们自己的 sqlite 数据库中。
怎么做
- 下载一个 .torrent 文件,该文件基本上包含用于创建数据库的模式/DDL,并在本地计算机上创建它。
- 任何时候完成“写入”操作(例如用户想要发送消息),该 INSERT 行(有点像增量)会做两件事:
- 写入自己的内部数据库
- 从该行创建一个 .torrent 文件,命名为messaging-[my-ip]-[UTC_timestamp].torrent,并将其发布到跟踪器
- 运行该应用程序的每个人都在不断地扫描跟踪器以查找具有此特定名称的文件(可能在特定日期之后),下载 .torrent 并托管它,并在其本地数据库上运行 INSERT 命令。
然后您将拥有大量的增量文件,所有 P2P 托管以实现冗余,在许多机器上更新本地 .sqlite 数据库。
我遇到的一些问题
如何抓取某个文件名的种子?我已经阅读了 http bittorrent tracker 规范,但您似乎只能根据文件的特定信息名称查询文件。有没有办法查询一组文件,或者基于文件名?
如何从跟踪器下载 .torrent 文件?我需要将文件托管在中央服务器上,还是可以使用跟踪器以某种方式下载文件?如果我必须自己托管 .torrent 文件......
- 这不会破坏分散数据库的目的,因为如果我的网站出现故障,应用程序将停止获取更新?
我在这里先向您的帮助表示感谢。