豆瓣網(wǎng)開源數(shù)據(jù)庫BeansDB發(fā)布 采用分布式鍵值存儲
原創(chuàng)【51CTO快報】2009年12月31日消息,國內(nèi)著名SNS網(wǎng)站豆瓣網(wǎng)于昨日在Google Code上發(fā)布了其自主開發(fā)的數(shù)據(jù)庫存儲系統(tǒng)BeansDB。
BeansDB是一個針對大數(shù)據(jù)量、高可用性的分布式存儲系統(tǒng),其最具特色的是使用Key - Value(鍵 - 值)存儲模式;BeansDB采用HashTree和簡化的版本號來快速同步保證最終一致性;并采用類似memcached的去中心化結(jié)構(gòu),在客戶端實現(xiàn)數(shù)據(jù)路由。
據(jù)悉,豆瓣網(wǎng)是以New BSD許可證發(fā)布的BeansDB,目前只提供了Python版本的客戶端,其它語言的客戶端可以由memcached的客戶端稍加改造得到。BeansDB的Key Value存儲系統(tǒng)之前在亞馬遜公司開發(fā)的Dynamo數(shù)據(jù)庫中被廣泛使用,一些BeansDB的測試者稱BeansDB更像是Dynamo的一個簡化版。
關(guān)于豆瓣網(wǎng)技術(shù)架構(gòu)方面的更多報道請參考51CTO.com視頻專題:《大型網(wǎng)站架構(gòu)技術(shù)專家談》
BeansDB特性一覽:
◆高可用:通過多個可讀寫的用于備份實現(xiàn)高可用
◆最終一致性:通過哈希樹實現(xiàn)快速完整數(shù)據(jù)同步(短時間內(nèi)數(shù)據(jù)可能不一致)
◆容易擴展:可以在不中斷服務(wù)的情況下進行容量擴展
◆高性能:異步IO和高性能的KeyValue數(shù)據(jù)TokyoCabinet
◆可配置的可用性和一致性:通過N,W,R進行配置
◆簡單協(xié)議:Memcache兼容協(xié)議,大量可用客戶端
客戶端
目前只提供了Python版本的客戶端,在python目錄中,該目錄中各文件的左右如下:
◆dbclient.py BeansDB的客戶端,由memcached的客戶端簡單封裝而成
◆status.py 查看BeansDB的狀態(tài),各個節(jié)點的數(shù)據(jù)分布,以及同步狀態(tài)
◆sync.py 同步各節(jié)點
◆httpd.py HTTP方式訪問BeansDB的內(nèi)容(目前只有GET方式)
◆store.pyx, dbserver.py test.py setup.py
◆Python 版本的BeansDB,核心部分是C實現(xiàn)
BeansDB的一些性能測試
下面兩幅圖片是BeansDB在Google Code上性能測試截圖,BeansDB的表現(xiàn)相當不錯。
在小數(shù)據(jù)集上,它跟memcached一樣快:
BeansDB實際部署情況下的性能(客戶端測量):
【編輯推薦】
- 對SQL說不!NoSQL的數(shù)據(jù)庫技術(shù)革命
- 分布式可擴展非關(guān)系數(shù)據(jù)庫聚焦
- 云計算推波助瀾 非關(guān)系數(shù)據(jù)庫蓄勢待發(fā)
- 探尋關(guān)系數(shù)據(jù)庫和ORM的最佳替代者