• <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ù)

            亚洲精品乱码久久久久久不卡| 91麻精品国产91久久久久| 精品久久久久久中文字幕大豆网| 狠狠色丁香久久婷婷综合蜜芽五月| 久久亚洲美女精品国产精品| 99久久免费国产精品| 中文字幕日本人妻久久久免费| 久久久久久综合一区中文字幕| 亚洲国产天堂久久综合| 国内精品久久久久| 伊人久久大香线蕉综合影院首页| 狠狠色丁香久久综合五月| 久久99久久99精品免视看动漫| 国产精品久久久99| 国产精品一久久香蕉国产线看观看| 久久久久亚洲精品中文字幕| 97热久久免费频精品99| 91麻豆国产精品91久久久| 精品久久综合1区2区3区激情| 久久久久久久亚洲Av无码| 久久人人爽人人爽人人爽 | 久久久噜噜噜久久中文福利| 四虎影视久久久免费观看| 久久精品无码av| 亚洲欧美精品伊人久久| 热re99久久精品国产99热| 青青青国产成人久久111网站| 精品久久久久久久无码 | 伊人色综合久久天天人手人婷| 久久精品国产亚洲一区二区三区| 久久青青草原精品影院| 国产精品久久久久久一区二区三区 | 久久亚洲精品成人av无码网站| 久久久久久精品免费免费自慰| 久久天天躁夜夜躁狠狠躁2022| 漂亮人妻被中出中文字幕久久 | 亚洲一本综合久久| 国产精品成人99久久久久91gav| 久久综合久久综合九色| 久久国产精品波多野结衣AV| 精品久久久久久久国产潘金莲|