gpt4 book ai didi

sql - 构建分布式 bittorrent-SQL 数据库

转载 作者:IT王子 更新时间:2023-10-29 06:32:14 26 4
gpt4 key购买 nike

我有一个分布式 SQL 数据库的想法,它使用 bittorrent 协议(protocol)来提取和写入其数据。

为了论证,假设这是一个消息传递应用程序,成千上万的用户运行一个程序,其中包含一个消息传递窗口和一个供他们编写消息的输入框。

写入的每条消息都会插入到它们自己的 sqlite 数据库中。

如何实现

  • 下载一个主要包含用于创建数据库的架构/DDL 的 .torrent 文件,并在本地计算机上创建它。
  • 任何时候完成“写入”操作(比如用户想要发送消息),INSERT 行(有点像 delta)会做两件事:
    • 写入他们自己的内部数据库
    • 从该行创建一个 .torrent 文件,命名为 messaging-[my-ip]-[UTC_timestamp].torrent,并将其发布到跟踪器
  • 运行该应用程序的每个人都在持续扫描跟踪器以查找具有此特定名称的文件(并且可能在特定日期之后),下载 .torrent 并托管它,然后在他们的本地数据库上运行 INSERT 命令。

然后您将拥有大量增量文件,所有 P2P 托管以实现冗余,在许多机器上更新本地 .sqlite 数据库。

我遇到的一些问题

  • 如何抓取特定文件名的种子文件?我已经通读了 http bittorrent tracker 规范,但您似乎只能根据文件的特定信息名称来查询文件。有没有办法查询一组文件,或者根据文件名查询?

  • 如何从跟踪器下载 .torrent 文件?我需要将文件托管在中央服务器上,还是可以使用跟踪器以某种方式下载文件?如果我必须自己托管 .torrent 文件...

    • 这会不会违背去中心化数据库的目的,因为如果我的网站出现故障,应用程序将停止获取更新?

提前感谢您的帮助。

最佳答案

Bittorrent 是为分发不可变的和有点大的数据集而设计的,并且实际上不知道任何跨越多个种子的操作。数据库主要是改变相对较小的数据 block 并对这些数据的不同子集执行操作。

尝试将数据库语义硬塞进 bittorent 中时,您将不会有什么乐趣。

充其量你可以用它来分发数据库的快照。
如果新内容仅添加/删除文件(同样是相当大的文件)而不修改旧文件,则 bittorrent 稍作修改就可以很好地回收以前的 torrent 中的数据。

除此之外的任何内容都需要对协议(protocol)进行一些重大修改,它不再是真正的普通 bittorrent。

关于sql - 构建分布式 bittorrent-SQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28241454/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com