2015-11-05 68 views
2

我們正在構建一個系統,需要將大量數據放入持久存儲器中一段固定時間 - 30至60天。由於數據並不重要(例如,當虛擬機停機時我們可能會丟失一些數據),並且我們不希望爲每個請求付出堅持的代價(延遲對我們至關重要),因此我們正在考慮緩衝&批處理數據或以異步方式發送。帶TTL的最佳海量數據持久存儲?

數據只能追加,我們需要每個請求持續2-3項,系統進程~10k rps在多個主機上水平縮放。

我們在選擇Mongo(3.x?)或Cassandra之間猶豫,但我們可以與任何其他解決方案。這裏有沒有人有解決這類問題的經驗或暗示?我們正在運行一些PoC,但我們可能無法及早發現所有問題,並且支出可能會很昂貴。

回答

1

我無法對MongoDB發表評論,但我可以與Cassandra交談。卡桑德拉確實有一個TTL功能,您可以在一段時間後過期數據。你必須做好應對措施,但因爲TTL的做在處理過程中卡桑德拉運行名爲「壓縮」增加一些開銷 - 見:http://docs.datastax.com/en/cassandra/2.1/cassandra/dml/dml_write_path_c.html

和:http://docs.datastax.com/en/cql/3.1/cql/cql_using/use_expire_c.html

只要你大小那種工作量,你應該好的。話雖如此,Cassandra在事件驅動的數據方面確實非常出色 - 例如時間序列,產品目錄,點擊流數據等。

如果你不熟悉帕特里克McFadin,滿足你最好的朋友:https://www.youtube.com/watch?v=tg6eIht-00M

當然並且,大量的免費教程和培訓在這裏:https://academy.datastax.com/

編輯補充的多一個想法以'安全'的方式過期數據,並且花費最少。這是一個名叫Ryan Svihla的尖銳人物完成的https://lostechies.com/ryansvihla/2014/10/20/domain-modeling-around-deletes-or-using-cassandra-as-a-queue-even-when-you-know-better/

+0

謝謝,我們實際上混合在ElastiSearch中,因爲我們可能不得不創建一些使用任意字段的查詢,但是您的回答非常有用。 – deadsimple