c++ 實時消息系統什麼in-process資料庫比較好? leveldb、LMDB 還是sqlite?

好吧說實時系統可能會被鄙視或吐槽(我是來騙眼球的),因為其實數據量不大,也就1GB per day 最多。

高峰每秒三五百KB。。。

process內大約有幾萬條記錄,各種線程交織,各種鎖,代碼混亂的慘不忍睹。

最近突然發現很多in-process db性能都很好,而且都是線程安全的,想必把這些數據都放到in-process DB裡面,由db統一提供一個線程安全的介面會讓程序清晰很多。(補充一下,redis確實很流行,但是看過網上一些文章貌似in-process roundtrips更少會更快,redis vs in-process真的合適嗎?)(再補充一下,現在說的是process內的數據,process內process內process內,說幾遍就是有人不看,下面也有提到有一台強悍的DB server,需要共享的數據都在裡面不需要再搞mysql神馬的了)

總數據量十幾萬條資料庫記錄最多(只存這麼多其餘丟掉),每秒寫入最多幾百條(200-500吧大約,每條十幾位元組左右的量級),每次查詢從這十幾萬條裡面查詢。以上我指的是進程內搞來搞去的數據。另外假如要是隨著業務增加把進程內數據增加到100萬左右呢,這些還能行嗎?

另外提一下,還有一台比較強悍的DB server,MSSQL 16core 20G左右內存吧,有專業的運維團隊。裡面存更多數據,還有一些需要共享的數據,最大的表大約1億條,同時也供web查詢展示。

想要業餘時間把系統自己重新寫一遍,如果效果好的話,未來可以show 給老闆應用到公司production,或者其它產品里。

sqlite大概看了一下,很強大的關係型資料庫,寫了一點小demo,自己以前用過MSSQL MySQL,所以感覺sqlite難度不大。

leveldb、LMDB完全是No-SQL的,完全沒有經驗,希望大牛能給與一些點撥。

大牛們輕噴,小弟經驗短(本科+2年工作),玻璃心。


1GB per day用什麼都可以,真的……


好吧sqlite輕鬆一秒五萬次插入,查詢當然更多,戳這裡:SQLite Frequently Asked Questions

性能上就像 @vczh 說的,真的是隨便哪個都可以。。。

--補充--

看了一遍redis文檔,光禿禿的五個數據類型,需要自己建立每個索引,官方性能是每秒七八萬次插入list。 sqlite每秒5萬次insert而且是在家用台式機上面,先不考慮機器配置差異,redis每秒七八萬次也就能插入兩三萬個數據吧,因為還要插索引的值。。。這倆貨寫入性能半斤八兩。。。

但是redis數據可以共享給別的進程,這點是個優勢

不過我無所謂了,反正1秒超過一萬次我就很滿足了,但是哪個編程好使啊。。。最終也沒人回答。。。

看來只能自己試用了。。。


哈哈,看了這個話題,感到很好笑。

鎚子是用來釘釘子的,刀是用來切西瓜的。你用鎚子切個西瓜試試!


一共就十幾萬條的數據,架個redis做緩存,後台隨便選用任何資料庫都可以.


實時的話幹嘛不上redis..


推薦閱讀:

Mac下如何學習資料庫?
如何評價RethinkDB?和MongoDB,Redis有什麼區別?
新浪微博「點贊功能」資料庫如何設計的?
如何用redis/memcache做Mysql緩存層?

TAG:資料庫 | NoSQL | C | SQLite | LevelDB |