您将使用什么来构建带有客户端的分布式数据库?

时间:2012-10-01 02:43:27

标签: database distributed bittorrent libtorrent

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

这个想法是任何特定的实体都无法控制数据库(虽然它是软件,但它是GPL / forkable)。

相反,您将拥有一个类似libtorrent的客户端,可用于浏览/缓存数据库。您将为客户端配置一个“来源”列表。

Cydia是一个很好的模型。

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

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

1 个答案:

答案 0 :(得分:0)

仅仅因为存在特定种子的播种者并不意味着您的客户端知道他们播种的是什么。你需要至少一个磁铁链接,或者为每个单独的东西提供一个种子文件"。

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

其次,您的"来源列表"如果使用DHT,将由跟踪器提供以连接到您的swarm,或至少一个已知对等方列表(您称之为超级节点) - 再由libtorrent提供的其他内容提供。

另外,很明显(?)你不能更新"内容与洪流 - 如果某事"更改",那么它是一个不同的洪流 - 所以,短期来说,你会有一个数据库,其中的项目无法修改......&#34 ;复制"在bittorrent,但由其他一些技术索引。

我不太明白为什么你在寻找(重新)实现一个"分布式数据库",但这对我来说似乎是不合理的(如果只是因为索引,那不会被分发,几乎打败了目的。)

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

如果您的问题是"所有权"在数据库上,又不是关于内容,而是关于索引。 现在,我可以想象一下,同伴会交换他们之间拥有的项目列表,允许给定的同伴从另一个给定的数据中获取数据,但这与我称之为"数据库" ...

我认为你不能放弃"所有权" (至少在索引之上)没有放弃"数据库" ...的概念(假设我很清楚你的意思"数据库不能被任何特定实体控制& #34)