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