亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
樓主: wlmqgzm
打印 上一主題 下一主題

[C++] 讀性能超過Memcached 65%, 單核也超過redis, 支持日志支持掉電保護(hù),歡迎試用 [復(fù)制鏈接]

論壇徽章:
0
81 [報告]
發(fā)表于 2016-06-12 21:22 |只看該作者
很龐大的一個項目啊  其實比較建議分成兩個工程獨立開發(fā):一為存儲引擎, 二為存儲服務(wù)

另外有一個地方是int可以用zigzag算法序列化為變長存儲, 占用空間最少1字節(jié),最多5字節(jié),和int值大小有關(guān),這個在protobuffer里有用到, 大部分int值比較小的時候,節(jié)省的空間非常大。這里有一個實現(xiàn): github.com/yinqiwen/ardb/blob/0.9/src/common/buffer/buffer_helper.cpp#L579


論壇徽章:
9
程序設(shè)計版塊每日發(fā)帖之星
日期:2015-10-18 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-01 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-02 06:20:00每日論壇發(fā)貼之星
日期:2015-11-02 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-03 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-04 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-06 06:20:00數(shù)據(jù)庫技術(shù)版塊每周發(fā)帖之星
日期:2015-12-02 15:02:47數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-12-08 06:20:00
82 [報告]
發(fā)表于 2016-06-14 00:00 |只看該作者
回復(fù) 81# kingwon

這個項目是比較大, 越做越大, ,  然后最近慢了下來.  
整數(shù)的壓縮代碼也已經(jīng)做了, 數(shù)據(jù)結(jié)構(gòu)方面還在改進(jìn)和優(yōu)化, 主要是考慮適應(yīng)各種情況, 包括結(jié)構(gòu)化的, 非結(jié)構(gòu)化的, 混合的等等, 最后可能類似Mysql, 每個表可采用不同的格式類型


   

論壇徽章:
9
程序設(shè)計版塊每日發(fā)帖之星
日期:2015-10-18 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-01 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-02 06:20:00每日論壇發(fā)貼之星
日期:2015-11-02 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-03 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-04 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-06 06:20:00數(shù)據(jù)庫技術(shù)版塊每周發(fā)帖之星
日期:2015-12-02 15:02:47數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-12-08 06:20:00
83 [報告]
發(fā)表于 2016-06-22 19:01 |只看該作者
最近家里有人生病住院, 暫時停止一段時間, 忙家里事情去了

論壇徽章:
9
程序設(shè)計版塊每日發(fā)帖之星
日期:2015-10-18 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-01 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-02 06:20:00每日論壇發(fā)貼之星
日期:2015-11-02 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-03 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-04 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-06 06:20:00數(shù)據(jù)庫技術(shù)版塊每周發(fā)帖之星
日期:2015-12-02 15:02:47數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-12-08 06:20:00
84 [報告]
發(fā)表于 2016-06-30 16:29 |只看該作者
現(xiàn)在醫(yī)院真貴啊,15歲孩子感冒高熱一周, 然后就進(jìn)ICU了, 每天3000-6000元, 輸液輸?shù)膬墒侄寄[了。

論壇徽章:
36
子鼠
日期:2013-08-28 22:23:29黃金圣斗士
日期:2015-12-01 11:37:51程序設(shè)計版塊每日發(fā)帖之星
日期:2015-12-14 06:20:00CU十四周年紀(jì)念徽章
日期:2015-12-22 16:50:40IT運維版塊每日發(fā)帖之星
日期:2016-01-25 06:20:0015-16賽季CBA聯(lián)賽之深圳
日期:2016-01-27 10:31:172016猴年福章徽章
日期:2016-02-18 15:30:3415-16賽季CBA聯(lián)賽之福建
日期:2016-04-07 11:25:2215-16賽季CBA聯(lián)賽之青島
日期:2016-04-29 18:02:5915-16賽季CBA聯(lián)賽之北控
日期:2016-06-20 17:38:50技術(shù)圖書徽章
日期:2016-07-19 13:54:03程序設(shè)計版塊每日發(fā)帖之星
日期:2016-08-21 06:20:00
85 [報告]
發(fā)表于 2016-07-01 11:47 |只看該作者
祝福孩子快快好起來吧,娃娃是心頭肉!~

論壇徽章:
9
程序設(shè)計版塊每日發(fā)帖之星
日期:2015-10-18 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-01 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-02 06:20:00每日論壇發(fā)貼之星
日期:2015-11-02 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-03 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-04 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-06 06:20:00數(shù)據(jù)庫技術(shù)版塊每周發(fā)帖之星
日期:2015-12-02 15:02:47數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-12-08 06:20:00
86 [報告]
發(fā)表于 2016-07-17 10:37 |只看該作者
孩子終于出院了, 算撿回了一條命, 感冒病毒感染, 繼發(fā)細(xì)菌感染, 然后各類抗生素?zé)o效, 出現(xiàn)敗血癥, 最后終于找到了特效藥美國進(jìn)口抗生素斯沃, 用上三天后退燒, 但是還有后遺癥, 肺不張肺實變, 1/4肺功能受損, 等后續(xù)二到三個月的恢復(fù)

論壇徽章:
9
程序設(shè)計版塊每日發(fā)帖之星
日期:2015-10-18 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-01 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-02 06:20:00每日論壇發(fā)貼之星
日期:2015-11-02 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-03 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-04 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-06 06:20:00數(shù)據(jù)庫技術(shù)版塊每周發(fā)帖之星
日期:2015-12-02 15:02:47數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-12-08 06:20:00
87 [報告]
發(fā)表于 2016-07-17 14:43 |只看該作者
本帖最后由 wlmqgzm 于 2016-07-17 14:45 編輯

繼續(xù)開發(fā)代碼, 現(xiàn)在準(zhǔn)備解決的主要的問題是:

1)計劃重新寫 Key Map  這部分代碼, 準(zhǔn)備先簡化, 主字段 整體所有的字節(jié)都放到內(nèi)存中, 包括主字段Key, hash id, Global Offset, 占用空間為主字段Key的長度+16字節(jié),  減少程序間的耦合, 后期再考慮優(yōu)化空間.

初期這部分代碼主要的思路是: 初期的設(shè)計考慮用盡可能少的內(nèi)存來實現(xiàn)最大化的記錄數(shù)的地址索引, 因此, 架構(gòu)中 主字段( key) 先hash轉(zhuǎn)化為一個64bit的長整數(shù), 然后再映射到File_maping中, 以一個64bit的offset來表示實際存儲的位置.
將所有的數(shù)據(jù)分解為兩大類, 有hash沖突的, 無哈希沖突的,然后分別處理,
無哈希沖突的, 2個64比特就足夠表示, 考慮hash沖突有可能對于多數(shù)記錄都不存在,  因此多數(shù)記錄都不需要保存主字段,  只占用16個字節(jié)就可以完整表示一個記錄的位置, 占用內(nèi)存空間比較少,  32G內(nèi)存就肯定可以處理20億的記錄,
出現(xiàn)hash沖突后, 讀取沖突的舊數(shù)據(jù), 重新寫入另外的數(shù)據(jù)結(jié)構(gòu)中, 這部分?jǐn)?shù)據(jù)結(jié)構(gòu)中主要是 包含了主字段
總之, 就是代碼復(fù)雜, 并且與下層的File_mapping的存儲結(jié)構(gòu)耦合. 要額外增加一些只讀IO.

2) MVCC的處理: 要簡化掉,
初期的設(shè)計中, 考慮到MVCC的并發(fā)情況, 因此, 對于每個數(shù)據(jù)記錄都要有多個版本的記錄, 并且正在更新的原始記錄中還要有連接號,  那么SELECT查詢就很復(fù)雜, 這部分代碼對多版本的處理部分, 目前看做的比較復(fù)雜, 從已經(jīng)寫的代碼看, 比預(yù)想的要復(fù)雜的多, TODO:的內(nèi)容也比較多, 這部分代碼準(zhǔn)備要大塊的暫時取消掉, 隱藏掉.

論壇徽章:
15
射手座
日期:2014-11-29 19:22:4915-16賽季CBA聯(lián)賽之青島
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16賽季CBA聯(lián)賽之四川
日期:2017-02-07 21:08:572015年亞冠紀(jì)念徽章
日期:2015-11-06 12:31:58每日論壇發(fā)貼之星
日期:2015-08-04 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-08-04 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-07-12 22:20:002015亞冠之浦和紅鉆
日期:2015-07-08 10:10:132015亞冠之大阪鋼巴
日期:2015-06-29 11:21:122015亞冠之廣州恒大
日期:2015-05-22 21:55:412015年亞洲杯之伊朗
日期:2015-04-10 16:28:25
88 [報告]
發(fā)表于 2016-08-17 14:06 |只看該作者
本帖最后由 yulihua49 于 2016-08-17 14:14 編輯
wlmqgzm 發(fā)表于 2016-05-08 15:14 [/sizuoe]
準(zhǔn)備開發(fā)一個高性能KV數(shù)據(jù)庫, 類似MongoDB這樣的, 學(xué)習(xí)MongoDB leveldb innodb,只是一個練手貼,  記錄一下 ...

費好大勁只做KV數(shù)據(jù)庫?檢索功能用戶需求很多啊,超過KV。
1.范圍檢索問題,>=某值 AND <=某值。
2.結(jié)果集問題。一個查詢結(jié)果是個集合。
3.條件集,查詢條件是集合。

網(wǎng)絡(luò)問題,一次網(wǎng)絡(luò)交換一個KV,注定效率不高。必定要支持集合(結(jié)果集,批量操作)才有效率。
例如,給你1000個KEY,你告訴我哪些已存在。
         給你1000個記錄,按其KEY,如不存在則插入,存在則修改。

論壇徽章:
9
程序設(shè)計版塊每日發(fā)帖之星
日期:2015-10-18 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-01 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-02 06:20:00每日論壇發(fā)貼之星
日期:2015-11-02 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-03 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-04 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-06 06:20:00數(shù)據(jù)庫技術(shù)版塊每周發(fā)帖之星
日期:2015-12-02 15:02:47數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-12-08 06:20:00
89 [報告]
發(fā)表于 2016-08-17 23:11 |只看該作者
本帖最后由 wlmqgzm 于 2016-08-18 00:02 編輯

最近一段時間忙壞了, 孩子先后2次住院, 感冒引發(fā)的肺炎,  僅第一次住院27天花了6.2萬.  然后, 又是家里其他成員住院, 現(xiàn)在還在醫(yī)院.

我這個練手的代碼, 今天終于有時間, 繼續(xù)弄了半天, 主要增加了 無鎖隊列的一部分功能, 新增加的功能點, 主要是與io_service的協(xié)調(diào), 自動處理,  當(dāng)定義2項后,  只需要push數(shù)據(jù), 然后消費者會自動處理數(shù)據(jù), 生產(chǎn)者會自動處理返回結(jié)果
測試了速度,  spsc 1:1的 無鎖隊列性能上達(dá)到了每秒800-1200萬QPS,  對比io_service的1:1任務(wù)調(diào)度性能大約是每秒300萬-400萬QPS. 性能上大約3倍的性能

template<typename T,unsigned int N=WAIT_FREE_MPSC_QUEUE_DEFAULT_SIZE>
class  Wait_free_mpsc_queue_io_service
{
  public:
     Wait_free_mpsc_queue_io_service( void );
     bool  push( std::shared_ptr<T>  sp_in, unsigned int uint_ios_num );  // 生產(chǎn)者調(diào)用
     bool  pop(  std::function<void(T*)>  function_in  );
     unsigned int   pop_all(  std::function<void(T*)>  function_in  );
     T*        pop_begin(  void );
     void   pop_end( void );
     unsigned int size( void );
     bool  empty( void );     //  消費者調(diào)用
     bool  full( unsigned int uint_ios_num );  // 生產(chǎn)者調(diào)用
     bool  is_lock_free( void );
     void   push_done( std::shared_ptr<T>  sp_in, unsigned int uint_ios_num );  // 隊列空則很快,  如果隊列滿, 將循環(huán)直到push成功, 一般不推薦,消耗資源比較多

     //  以下為io_service的新增自動處理函數(shù),
     void   push_with_io_service( std::shared_ptr<T>  sp_in, unsigned int uint_ios_num );     //  生產(chǎn)者調(diào)用,  數(shù)據(jù)隊列滿會自動將push放到io_service任務(wù)隊列尾,  過會再試,  直到push成功, 推薦, 效率比較高
     // 當(dāng)定義下列前2項后,  只需要push數(shù)據(jù), 然后消費者會自動處理數(shù)據(jù), 生產(chǎn)者會自動處理返回結(jié)果
     void   set_fuction_pop_process_and_io_service( std::function<void(T*)>  function_in, unsigned int uint_ios_num );  //  設(shè)置一個消費者函數(shù)和ios
     void   set_fuction_after_push_before_free_and_io_service( std::function<void(std::shared_ptr<T>)>  function_in, unsigned int uint_ios_num );     //  設(shè)置生產(chǎn)者回調(diào)函數(shù)和生產(chǎn)者ios

  private:
    unsigned int  d_uint_last_pop_ios_num;
    unsigned int  d_uint_ios_pool_count;
    std::vector<std::shared_ptr<Wait_free_spsc_queue_io_service<T,N> > >  d_vt_sp_spsc_queue;
    std::vector<unsigned int>  d_vt_ios_num;
};

論壇徽章:
9
程序設(shè)計版塊每日發(fā)帖之星
日期:2015-10-18 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-01 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-02 06:20:00每日論壇發(fā)貼之星
日期:2015-11-02 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-03 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-04 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-11-06 06:20:00數(shù)據(jù)庫技術(shù)版塊每周發(fā)帖之星
日期:2015-12-02 15:02:47數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-12-08 06:20:00
90 [報告]
發(fā)表于 2016-08-17 23:24 |只看該作者
yulihua49 發(fā)表于 2016-08-17 14:06
費好大勁只做KV數(shù)據(jù)庫?檢索功能用戶需求很多啊,超過KV。
1.范圍檢索問題,>=某值 AND


同意你的觀點, 確實KV數(shù)據(jù)庫用不了這么費事, 檢索功能用戶需求更多,
今后后面也是想開發(fā)一個正規(guī)的數(shù)據(jù)庫, 但是代碼量實在太大了, 只能一步一步來.
目前 先做KV數(shù)據(jù)庫, 以后再擴充功能, 這個是個人開發(fā)的業(yè)余項目, 各類資源和時間都有限, 所以, 為了有一個驗證方案的機會, 只能先從簡單的項目做起.

主要還是通過這個項目練手, 提高自己的能力, 主要側(cè)重的方向是高并發(fā)高性能方向C++編程, 積累一些技術(shù)方案, 并且測試一些比較新的架構(gòu)設(shè)計思路.
所以, 有時候會在一些比較細(xì)枝末節(jié)的地方反復(fù)的摳, 就是為了積累一些技術(shù)經(jīng)驗
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP