0

如果我想为媒体文件(比如图像)创建一个分布式数据库,我会使用什么?

这个想法是数据库不会被任何特定实体控制(尽管软件可以,尽管它是 GPL / forkable)。

相反,你会有一个客户端,它有类似 libtorrent 的东西,可以用来浏览/缓存数据库。您将使用“源”列表配置客户端。

Cydia 是一个很好的模型。

虽然我不想使用网络主机,但我想使用充当超级节点的比特种子播种机(它将对任意树高的子节点进行编目)

libtorrent 会是最好的选择吗?或者会有更好的选择吗?

4

1 回答 1

0

仅仅因为给定的种子存在播种器并不意味着您的客户知道他们正在播种什么。对于每个单独的“事物”,您至少需要一个磁力链接或一个 torrent 文件。

所以,用洪流“缓存”内容,好的,但就“浏览”而言,你需要别的东西(例如:一个索引,它会列出磁铁/洪流文件 - 我怀疑你会使用 lib/bittorrent 构建它...)。

其次,如果使用 DHT,您的“来源”列表将由跟踪器提供,以便连接到您的集群,或者至少是已知对等节点(您称之为超级节点)的列表 - 再次由 libtorrent 的其他东西提供。

此外,显然(?)你不能用种子“更新”内容——如果有什么“改变”,那么它就是一个不同的种子——所以,短期内,你会有一个包含无法修改项目的数据库......通过bittorrent“复制”,但被其他一些技术索引。

我不太明白您为什么要使用 bittorrent 来(重新)实现“分布式数据库”,但这对我来说似乎是不正确的(如果只是因为索引,它不会被分发,几乎是失败的)目的)。

如果您的问题是可靠性/可扩展性,为什么不考虑任何(现有的)“db”引擎可以本机完成这项工作?(带有 mongo 的副本集,或者 hadoop 上的分布式文件系统,甚至是节点之间良好的老式手工数据复制,甚至是 sql 主从,或者一些云存储......)。

如果您的问题是对数据库的“所有权”,那么这与内容无关,而是与索引有关。现在,我可以想象一些同行会在他们之间交换他们拥有的项目列表,允许给定的同行从另一个给定的同行获取数据,但这与我所说的“数据库”相去甚远......

我不认为你可以放弃“所有权”(至少在索引上)而不放弃“数据库”的概念......(假设我很好理解你的意思是“数据库无法控制任何特定实体”)

于 2012-10-02T02:54:16.030 回答