• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            woaidongmao

            文章均收錄自他人博客,但不喜標(biāo)題前加-[轉(zhuǎn)貼],因其丑陋,見(jiàn)諒!~
            隨筆 - 1469, 文章 - 0, 評(píng)論 - 661, 引用 - 0
            數(shù)據(jù)加載中……

            Berkeley DB,用事務(wù),可以避免數(shù)據(jù)丟失

            實(shí)現(xiàn)一個(gè)開(kāi)源KV數(shù)據(jù)庫(kù)的想法來(lái)源于對(duì)目前項(xiàng)目中所使用的K-V數(shù)據(jù)庫(kù)使用情況的不滿(mǎn)意。

            先介紹一下我們的目前項(xiàng)目,作為本文的背景:

            較為底層的分布式運(yùn)行平臺(tái),使用C/C++實(shí)現(xiàn)的Actor模型(異步消息傳遞系統(tǒng))

            數(shù)據(jù)schema簡(jiǎn)單靈活,使用key-value能夠很好表示。

            數(shù)據(jù)庫(kù)有大量的讀寫(xiě)請(qǐng)求,有事務(wù)需求,數(shù)據(jù)丟失容忍度很低。

            當(dāng)前,從眾多的KVNOSQL存儲(chǔ)產(chǎn)品中,我們使用了Berkeley DB作為底層的存儲(chǔ)引擎。

             

            為什么選擇BDB呢?

            1.與傳統(tǒng)的RDBMS相比,簡(jiǎn)單K-V存儲(chǔ)的Berkeley DB(再加入嵌入式直接庫(kù)鏈接的特性)有著優(yōu)越的性能,容易滿(mǎn)足我們大量讀寫(xiě)(尤其是大量寫(xiě))的需求。

            2.作為一個(gè)嵌入式的K-V數(shù)據(jù)庫(kù),Berkeley DB歷史悠久(目前由Oracle所有),穩(wěn)定且久經(jīng)考驗(yàn),文檔豐富,輔助工具全面。這是我們之所以在眾多的開(kāi)源K-V(Nosql)數(shù)據(jù)庫(kù)中選擇BDB的首要原因:靠譜

            3.第三個(gè)選擇BDB的原因是事務(wù)支持:作為為數(shù)不多的能夠提供ACID事務(wù)支持的K-V數(shù)據(jù)庫(kù),BDB對(duì)事務(wù)支持提供了豐富的支持:從不同的隔離級(jí)別、不同的持久化保證以及分布式事務(wù)2PCprepare模型等,可配置程度很高。

             

            BDB哪些方面不能達(dá)到我們的需求?

            1.仍然是性能。作為K-V數(shù)據(jù)庫(kù),BDB的性能依然達(dá)不到我們的目標(biāo):由于有足夠大的內(nèi)存作為緩存,讀操作的性能基本沒(méi)問(wèn)題,但寫(xiě)操作(尤其是大量應(yīng)用的事務(wù)寫(xiě))的性能堪憂(yōu)。

            使用Auto-commit(每條寫(xiě)作為一個(gè)獨(dú)立的事務(wù)),一條記錄的寫(xiě)延時(shí)接近于1~10ms

            顯示開(kāi)啟事務(wù)后,寫(xiě)操作有了極大改善:10~100us(因?yàn)椴恍枰磿r(shí)sync到硬盤(pán)),但事務(wù)提交操作依然極為耗時(shí)。

            有人可能會(huì)說(shuō),你可以調(diào)節(jié)BDB事務(wù)的持久化保證的程度,比如在提交時(shí)設(shè)置:

            DB_TXN_WRITE_NO_SYNC,在提交時(shí)只寫(xiě)log到硬盤(pán),不sync(只有OS Crash才會(huì)丟數(shù)據(jù))

            或者更快一些,使用DB_TXN_NOSYNC,連同步調(diào)syscall write的開(kāi)銷(xiāo)都省下來(lái)(但App crash可能會(huì)丟數(shù)據(jù))

             

            posted on 2012-06-01 17:18 肥仔 閱讀(1793) 評(píng)論(-1)  編輯 收藏 引用 所屬分類(lèi): 數(shù)據(jù)庫(kù)

            AAA级久久久精品无码区| 91精品免费久久久久久久久| 亚洲国产天堂久久综合| 一本色道久久综合狠狠躁| 99精品久久精品一区二区| 久久精品免费一区二区三区| 久久精品夜色噜噜亚洲A∨| 亚洲精品国产字幕久久不卡 | 香蕉久久夜色精品国产小说| 欧美久久久久久精选9999| 久久国产免费观看精品3| 亚洲国产精品一区二区三区久久| 久久99精品久久只有精品| 无码人妻久久一区二区三区蜜桃 | 久久精品国产72国产精福利| 久久不见久久见免费视频7| 日本五月天婷久久网站| 国产精品九九久久精品女同亚洲欧美日韩综合区 | 国产福利电影一区二区三区,免费久久久久久久精 | 久久无码人妻一区二区三区| 久久夜色撩人精品国产| 国产精品成人久久久久三级午夜电影 | 伊人久久综合无码成人网| 久久人人爽人人爽人人片AV麻豆| 久久香蕉综合色一综合色88| 久久久久亚洲AV无码麻豆| 综合网日日天干夜夜久久| 一本久久综合亚洲鲁鲁五月天| 久久精品国产99久久久香蕉| 国产成人久久777777| 久久久久久国产精品无码下载| 99久久无码一区人妻| 国产99久久九九精品无码| 中文精品久久久久国产网址| 狠狠色丁香久久综合婷婷| 狠狠久久亚洲欧美专区 | 久久99精品国产麻豆蜜芽| 精品久久久久中文字| 色欲综合久久躁天天躁| 一本色道久久88—综合亚洲精品 | 亚洲精品乱码久久久久久中文字幕 |