為什麼沒有人實現 P2P 資料庫?

有個奇怪的想法,既然有p2p模式的軟體,那麼為什麼不把資料庫做成p2p模式的,每台計算機都是資料庫一部分


DHT


你這樣子除了嚴重降低performance以外沒有帶來任何好處啊


比特幣網路早就實現了。


題主可能把p2p和分散式搞混了。


資料庫所要求的特性沒有一個和P2P沾得上關係的。

不僅僅是嚴重降低性能,如果存放某部分數據的所有節點都關機了,數據去哪取?


沒有人提Amazon Dynamo嗎。。這就是一個完全去中心化的KV資料庫。。還有開源實現Apache Cassandra。。

SQL資料庫有沒有P2P的實現我不清楚,至少KV資料庫有。其核心技術就是樓上提到的DHT。樓主可以去看看Distributed Hash Table的wiki,還有Amazon Dynamo/Yahoo PNUTS的論文。


通用的資料庫,很難P2P了。性能會是問題,網路速度就是大問題;有人沒上線,或者網路割裂,數據就不完整;某些人搞破壞,只要在自己的機器上做就好了,不容易被發現……

你要是用安全的機房、高速網路、伺服器集群,那就是HBase之類的分散式資料庫,或者是常見的資料庫系統都支持的集群了。

特殊用途的,P2P下載經常用的DHT、磁力鏈接,應該就是吧,整個網路一起維護種子和內容的信息。

之所以可以這樣做,是需求特殊。因為信息有大量冗餘,完整性就不是問題;因為下載時間比較長,信息交換的速度慢一點,問題也不大;沒什麼關鍵信息,造假也沒什麼破壞性……

而且還帶來了額外好處,有人想查版權,或者禁某些內容,都不容易了……你懂的……


題主連計算機知識都沒有吧。你想的應該是分散式。先把這二個概念理清楚,你就知道為什麼不行了。


因為資料庫這種高大上的東西,從來都是權力和金錢的附庸。譬如銀行用資料庫把你的錢變成一個數字,納粹用資料庫把猶太人變成灰燼。

一個運轉中的資料庫,就像一架精密的鐘錶,需要定期潤滑。而最上等的潤滑油,則取材於二十至三十歲的青壯年碼農。

資料庫一定要有中心,一定要有控制,一定要有主人。否則,也是生得起養不起。

就不要再想什麼p2p資料庫了。就算真有這種東西,也會像所有的公共設施一樣,要麼大而無用、死氣沉沉,要麼不堪重負、生不如死。


bitcoin系統應該是實現了一個p2p數據系統,不過題主的意思應該是分散式資料庫吧。


我現在在連接一個外網遠程資料庫,完成六個Query大概花了2500ms,而內網連接完成同樣操作則用了30ms。


這個想法其實是

「在一個【極】不穩定的硬體環境下造一個分散式資料庫的屌絲版輪子」


從廣義來講,P2P就是你從不同節點那下載的相同的數據,但是從狹義的資料庫來說,你要考慮更多的東西,比如數據一致性,比如資料庫不光讓你查(就是所謂下載),還得改啊,增啊,刪啊,你怎麼在P2P里保證這些一致性,所有的P可都是別人的節點,說白了你沒有任何控制權。資料庫數據的安全你沒法得到保障,比如某個節點安全性特別差怎麼辦?狹義的資料庫不是簡單的數據放在那而已,


推薦閱讀:

每天數據最少產生960W條記錄,我選Mysql還是Hbase?
學習做 DBA 的過程中需要精通哪些知識?
Mysql-InnoDB分表真的有意義嗎?
在 MySQL 中,從 10 萬條主鍵不連續的數據里隨機取 3000 條,如何做到高效?
有沒有自動生成複雜sql的軟體?

TAG:資料庫 | 軟體開發 | 資料庫管理員DBA |