【问题标题】:Is there a p2p database implementation out there [closed]那里有 p2p 数据库实现吗[关闭]
【发布时间】:2011-05-21 02:18:47
【问题描述】:

目前,我正在研究 p2p 应用模型。我相信即使对等点之间共享数据,仍然有一个数据库服务器保存用户帐户信息。以 Skype 为例。尽管用户建立了 p2p 通信,但我相信他们正在/正在使用 PostgreSQL。我想知道是否有一个 p2p 数据库实现,以便数据在客户端计算机之间分布(和加密),而不是托管在服务器场中?

如果不是,那么实现 p2p 数据库会非常困难/不切实际吗?

【问题讨论】:

  • 我不确定,但我相信实现对等数据库非常困难。谁来验证数据?你怎么知道数据实际上是可靠的?看看 OpenPGP——它是一种点对点数据库,除了它存储的所有信息都是“我就是我所说的我”。
  • namecoin 类型的键值存储怎么样?它是一个只写数据库。
  • 这个问题随时更新

标签: database p2p


【解决方案1】:

如果您对非关系型数据库感兴趣,这里有许多事务性和非事务性 P2P 键值存储,例如 memcached(在工作组内),或不同的分布式哈希表 (DHT) 实现整个互联网(例如 CAN、Chord、Pastry、Tapestry 和 Chimera)。

这是一个很好的起点:http://en.wikipedia.org/wiki/Distributed_hash_table

【讨论】:

    【解决方案2】:

    你提到了 Skype,这是一个很好的例子。 AFAIK,Skype 将他们的数据库分布在同行之间。

    但是,请注意,他们对某种分布式数据库拥有专利。如果您写任何东西,请确保您不要踩到他们的专利!

    我相信这是它们以超过 $8B 的价格卖给 Microsoft 的部分原因。

    我建议您阅读一些关于 JoltID (company) 的信息,它拥有美国专利 7,480,658“涵盖分布式数据库系统和协调分散的点对点计算”的知识产权。 p>

    【讨论】:

    • 不要害怕专利。拍摄月亮。
    • 我怀疑 Skype 数据存储是基于 p2p 架构的。例如,聊天记录的存储。这意味着客户将在他们的本地机器上看到并且不断增长的加密文件。可能存在少量 p2p 数据,例如当前登录的用户,但这不一定是实际数据库。另外,实用的数据库不仅是存储,也是搜索引擎。
    【解决方案3】:

    P2P 框架通常独立于任何数据库实现。他们专注于在节点之间传输信息。有些依赖内存数据库来存储临时信息。对于 JXTA,用户可以配置节点来操作内存或基于文件的数据库。

    我从事 P2P 工作已经有一段时间了,但我还没有听说过完全面向 P2P 数据库用户的框架。我认为你必须在你的数据库之上实现你最喜欢的 P2P 框架。

    【讨论】:

      【解决方案4】:

      一个较晚的答案,但可能对其他有相同问题的人有所帮助。我同意@JVerstry 的观点,即 P2P 数据库的实现通常只是放置在标准数据库之上的通信和同步层。

      我知道一个项目,它基本上在各种网络副本之间的数据库上进行双向复制和冲突解决,每个节点都有一个完整副本。这确实是一个 P2P 数据库,但请注意还有其他类型(@Canuck 正确地提到了 DHT,它用于在每个节点都拥有数据库的部分副本的网络中实现搜索)。

      对于 NoSQL 方法,您可以查看基于 CouchDB 的 Refuge。我相信在撰写本文时还处于早期阶段,但它看起来很有趣。

      【讨论】:

        【解决方案5】:

        我不确定这是否直接回答了您的问题,但在我看来,任何在本地存储数据并提供与自身的其他实例(或兼容的应用程序)同步或共享数据的应用程序都是,事实上,某种对等数据库。

        以分布式搜索引擎应用为例。该领域有一些实验(例如http://yacy.net)。使用它们,您就有了一个本地索引,可以与您的同行共享等等。

        或者,更重要的是,有点洪流客户端......

        它们都不是通过 SQL 进行通信,也不一定存在存储用户帐户信息的数据库服务器。事实上,它们都以自己的方式在分布式数据存储领域中。

        在每种情况下,拥有“服务器”(或任何它所指的)的目的是防止应用实例形成互不相交的不相交网络。据我所知,如果没有某种“始终在线”的参考点,就没有可靠的方法来可靠地实现这一目标。

        就 Skype 而言,转折点在于,除了想要构建一个独特的网络之外,您还想要 a) 在用户加入网络时对其进行身份验证,以及 b) 存储一定数量(但不是全部)的历史记录(例如,您会收到未接电话和联系请求的通知;但未接聊天消息只会在两个 Skype 客户端都连接时出现)。

        【讨论】:

          【解决方案6】:

          其实有一个,但它需要一个新的维护者:Prophet

          http://syncwith.us/

          Prophet 是一种为后 Web-2.0 世界设计的新型数据库。它旨在让您与您的朋友和同事协作,而无需任何特殊的服务器或互联网提供商。

          Prophet 充满流行语的宣传内容如下:

          一个接地的、半关系的、对等复制、断开连接、版本控制的属性数据库,具有自我修复冲突解决方案。

          它甚至被用于创建名为 Simple Defects 的 P2P 错误跟踪器

          【讨论】:

          • 对场外资源或工具的推荐请求在 Stack Overflow 上是题外话。如果你回答了这些问题,你就特别强化了 Stack Overflow 是回答这些问题的好地方的信念。它不是。即使您知道一个好的答案,也请不要回答这些问题,因为大多数答案都是非常固执的(“我个人喜欢......”)。您可以打开问题的标志对话框,并在 off-topic 类别下或help center 中查看完整的关闭原因。您甚至不应该在评论中回答,因为效果类似于实际答案。
          • @PaulStenne:保罗,如果有人正在研究开发的可能性,那么这类问题非常相关。诚然,意见大多是个人的,但仍然可能相关。 StackOverflow 是一个非常好的资源,这些问题在大多数情况下对我有很大帮助。我鼓励允许他们。
          • @PaulSinnema 我理解保罗的观点,我倾向于同意。可悲的是,这些问题的答案往往具有较低的基础价值并且很快就会过时。请随时在SOCVR 讨论它,这是一个专门处理此类问题的聊天室 =)
          • @Kyll 有趣,这样的问题可能是访问该站点的少数几个原因之一。搜索引擎很烂。目前只有人类和他们的经验可以提供关键字,我以后可以去网上进一步调查。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-09-21
          • 2010-10-25
          • 2020-03-16
          • 1970-01-01
          • 1970-01-01
          • 2011-06-23
          • 2012-12-08
          相关资源
          最近更新 更多