2011-05-21 89 views
31

目前,我正在研究p2p應用程序模型。我相信,即使對等方之間彼此共享數據,仍然有一個數據庫服務器存放用戶帳戶信息。以Skype爲例。我相信他們是/正在使用PostgreSQL,雖然用戶建立了一個P2P通信。我想知道的是,是否有p2p數據庫實現,因此數據在客戶端計算機上分發(並加密),而不是託管在服務器場中?是否有p2p數據庫實現

如果不是,那會是非常困難/不現實實現P2P數據庫?

+0

我不知道肯定有P2P的bug跟蹤系統,但我相信這是非常* *難以實現對等數據庫。誰對數據進行身份驗證?你怎麼知道數據實際上是可靠的?看看OpenPGP--它是一種對等數據庫,除了它存儲的所有信息是「我就是我說的我」。 – 2011-05-21 02:37:45

+0

[namecoin](http://namecoin.info/)類型的鍵值存儲怎麼樣?它是一個只寫數據庫。 – Jus12 2013-11-07 13:26:34

+0

此問題隨時更新 – 2014-03-07 00:48:24

回答

2

我不知道這是否直接或沒有回答你的問題,但在我看來,在本地存儲數據,並提供同步或與自身(或兼容的應用程序)的其他實例共享任何類型的應用程序是事實上,某種點對點數據庫。

就拿分佈式搜索引擎的應用程序。在這方面有幾個實驗(例如http://yacy.net)。使用它們,你有一個本地索引,你可以與同事分享等等。

或者,更重要的一點,有點BT客戶端...

這些都不是通過SQL適當的溝通,也沒有必要存儲用戶帳戶信息的數據庫服務器。實際上,它們各自以自己的方式處於分佈式數據存儲領域。

在每種情況下,有一個「服務器」(或任何它被稱爲)的目的,是保持應用程序的情況下,從塑造不相交的網絡,不知道對方的存在。最好的我知道,沒有某種「永遠在線」的參考點沒有可靠的方法來實現這一點。

在Skype的情況下,除了想要塑造一個獨特的網絡之外,還希望a)在用戶加入網絡時對用戶進行身份驗證,b)存儲一些(但不是全部) )歷史記錄(例如,您會收到關於未接電話和聯繫請求的通知;但是當兩個Skype客戶端都連接時,只會出現錯過的聊天消息)。

2

P2P架構通常獨立於任何數據庫的實現。他們專注於在節點之間傳輸信息。有些依靠內存數據庫來存儲臨時信息。關於JXTA,用戶可以配置節點以使用內存數據庫或基於文件的數據庫。

我一直在P2P的相當一部分,我還沒有聽說過完全的P2P數據庫用戶導向框架。我想你將不得不在你的數據庫之上實現你最喜歡的P2P框架。

4

你提到的Skype,這是一個很好的例子。 AFAIK,Skype通過同行分發他們的數據庫。

但是,請注意,他們擁有關於分佈在對等設備上的某種數據庫的專利。如果你寫任何東西,確保你不要踩他們的專利!

我相信這是他們以超過8美元的價格出售給微軟的原因之一。

我建議你讀一些關於JoltID (company)持有的知識產權的美國專利7480658「覆蓋分佈式數據庫系統和協調分散的對等計算

+5

不要害怕專利。拍攝月亮。 – 2015-07-27 18:03:04

7

如果你對非關係數據庫感興趣的是,有很多事務性和非事務性的P2P鍵值存儲,例如memcached(在一個工作組內),或者整個Internet上的不同分佈式哈希表(DHT)實現(例如CAN ,Chord,糕點,掛毯和奇美拉)。

這裏是一個很好的起點:http://en.wikipedia.org/wiki/Distributed_hash_table

3

逾期答案,但可能是有同樣的問題別人有幫助的。我同意@JVerstry的觀點,P2P數據庫的實現通常只是位於標準數據庫之上的通信和同步層。

我知道一個項目,主要是對各種網絡拷貝之間的數據庫進行雙向複製和衝突解決,每個節點都有一個完整的副本。這確實是一個P2P數據庫,但請注意,還有其他類型(@Canuck正確地提到了DHT,它用於在每個節點保存數據庫的部分副本的網絡中執行搜索)。

對於NoSQL方法,您可以查看基於CouchDB的Refuge。我相信在撰寫本文時是早期的,但看起來很有趣。

1

其實是有一個,但它需要一個新的維護者:先知

http://syncwith.us/

先知是一種新型的數據庫設計的Web發佈-2.0的世界。它可以讓你與朋友和同事合作,而不需要任何特殊的服務器或互聯網提供商。

先知的流行語載貨間距讀這樣的事情:

接地的,semirelational,點對點複製,斷開版本,具有自愈解決衝突的屬性數據庫。

它甚至被用來創建名爲Simple缺陷

+0

關於堆棧溢出的離線資源或工具推薦請求不屬於主題。如果你回答它們,你特別強調了Stack Overflow是回答這些問題的好地方。不是這樣。即使你知道一個很好的答案,也不要回答這些問題,因爲大多數答案都會被高度評價(「我個人喜歡......」)。您可以打開關於該問題的標誌對話,並在** off-topic **類別下或[help/on-topic]中查看完整的原因。你甚至不應該在評論中回答,因爲效果與實際答案類似。 – 2016-01-20 22:10:51