构建分布式 bittorrent-SQL 数据库
Building a distributed bittorrent-SQL database
我有一个 分布式 SQL 数据库 的想法,使用 bittorrent 协议来提取和写入其数据。
为了论证,假设这是一个消息传递应用程序,其中有成千上万的用户 运行 一个包含消息传递 window 的程序,以及一个供他们编写消息的输入框。
写入的每条消息都会插入到它们自己的 sqlite 数据库中。
如何实现
- 下载一个主要包含 schema/DDL 用于创建数据库的 .torrent 文件,并在本地计算机上创建它。
- 任何时候完成 'write' 操作(比如用户想要发送消息),INSERT 行(有点像 delta)会做两件事:
- 写入自己的内部数据库
- 从该行创建一个 .torrent 文件,命名为 messaging-[my-ip]-[UTC_timestamp].torrent,并将其发布到跟踪器
- 每个 运行 使用该应用程序的人都在不断扫描跟踪器以查找具有此特定名称的文件(并且可能在特定日期之后),下载 .torrent 并托管它,然后 运行s在他们的本地数据库上插入命令。
然后您将拥有大量增量文件,所有 P2P 托管以实现冗余,在许多机器上更新本地 .sqlite 数据库。
我遇到了一些问题
如何抓取特定文件名的种子文件?我已经通读了 http bittorrent tracker 规范,但您似乎只能根据文件的特定信息名称来查询文件。有没有办法查询一组文件,或者根据文件名?
如何从跟踪器下载 .torrent 文件?我需要将文件托管在中央服务器上,还是可以使用跟踪器以某种方式下载文件?如果我必须自己托管 .torrent 文件...
- 这会不会违背分散式数据库的目的,因为如果我的网站出现故障,应用程序将停止获取更新?
提前感谢您的帮助。
Bittorrent 是为分发不可变的和有点大的数据集而设计的,并且实际上不知道任何跨越多个种子的操作。
数据库主要是改变相对较小的数据块并对这些数据的不同子集执行操作。
尝试将数据库语义硬塞进 bittorent 中时,您不会有什么乐趣。
充其量你可以用它来分发数据库的快照。
如果新内容只有 adds/removes 文件(同样,相当大)而不修改旧文件,那么通过一点点修补,bittorrent 可以很好地回收以前种子的数据。
除此之外的任何内容都需要对协议进行一些重大修改,它不再是真正的普通 bittorrent。
我有一个 分布式 SQL 数据库 的想法,使用 bittorrent 协议来提取和写入其数据。
为了论证,假设这是一个消息传递应用程序,其中有成千上万的用户 运行 一个包含消息传递 window 的程序,以及一个供他们编写消息的输入框。
写入的每条消息都会插入到它们自己的 sqlite 数据库中。
如何实现
- 下载一个主要包含 schema/DDL 用于创建数据库的 .torrent 文件,并在本地计算机上创建它。
- 任何时候完成 'write' 操作(比如用户想要发送消息),INSERT 行(有点像 delta)会做两件事:
- 写入自己的内部数据库
- 从该行创建一个 .torrent 文件,命名为 messaging-[my-ip]-[UTC_timestamp].torrent,并将其发布到跟踪器
- 每个 运行 使用该应用程序的人都在不断扫描跟踪器以查找具有此特定名称的文件(并且可能在特定日期之后),下载 .torrent 并托管它,然后 运行s在他们的本地数据库上插入命令。
然后您将拥有大量增量文件,所有 P2P 托管以实现冗余,在许多机器上更新本地 .sqlite 数据库。
我遇到了一些问题
如何抓取特定文件名的种子文件?我已经通读了 http bittorrent tracker 规范,但您似乎只能根据文件的特定信息名称来查询文件。有没有办法查询一组文件,或者根据文件名?
如何从跟踪器下载 .torrent 文件?我需要将文件托管在中央服务器上,还是可以使用跟踪器以某种方式下载文件?如果我必须自己托管 .torrent 文件...
- 这会不会违背分散式数据库的目的,因为如果我的网站出现故障,应用程序将停止获取更新?
提前感谢您的帮助。
Bittorrent 是为分发不可变的和有点大的数据集而设计的,并且实际上不知道任何跨越多个种子的操作。 数据库主要是改变相对较小的数据块并对这些数据的不同子集执行操作。
尝试将数据库语义硬塞进 bittorent 中时,您不会有什么乐趣。
充其量你可以用它来分发数据库的快照。
如果新内容只有 adds/removes 文件(同样,相当大)而不修改旧文件,那么通过一点点修补,bittorrent 可以很好地回收以前种子的数据。
除此之外的任何内容都需要对协议进行一些重大修改,它不再是真正的普通 bittorrent。