簡體   English   中英

Cassandra 或 PostgreSQL:每分鍾大量插入

[英]Cassandra or PostgreSQL: High volume of Inserts per minute

這是我的場景:

  1. 我有100,000 多張桌子
  2. 我必須每分鍾在每個表中插入一次,即每分鍾在單獨的表中插入 100,000+ 次
  3. 數據丟失無關緊要,但速度和成本卻很重要。
  4. 插入字段將是 id、param1、param2、param3、param4、param5、timestamp。

請讓我知道在這種情況下哪個數據庫會更快更便宜。

Cassandra 可能會面臨 100,000 個單獨表的嚴重可擴展性問題。 100,000 個單獨的表意味着 100,000 個打開文件的倍數(因此您需要確保將內核配置為允許如此多的打開文件)、100,000 個 memtables(其中對每個表的最后修改臨時保存在內存中),因此您需要大量內存。

在 Cassandra 中執行此類操作的另一種方法是擁有一個表,其中包含 100,000 個不同的分區(這是 Cassandra 中寬行的名稱)。 每分鍾您都會向每個現有分區添加另一行(一個小條目)。 為避免分區在添加條目數月后變得龐大,人們通常所做的是每隔一周開始一個新分區(每周大約有 10,000 分鍾)。 在 Cassandra 建模中,這通常稱為“時間序列數據”。

在你的問題中,你只提到數據,而不是讀數據。 假設這不是疏忽,並且您真的更關心寫入性能而不是讀取性能,那么 Cassandra 是一個很好的選擇,因為它的寫入速度特別快。 如果您絕對關心速度和每美元性能,您還應該看看Scylla ,它是用 C++ 重新實現的 Cassandra。

聽起來像數據模型適合時間序列模型。 TimeScaleDB 可以使用新的分布式模型處理您的模型。 這些表只是一個更多的索引字段。 即按時間順序保存數據,啟用壓縮。 可以考慮不同類型的索引,而不僅僅是 B 樹。

我們的財務數據測試顯示出驚人的壓縮率 - 特別是如果所有表在關閉時間段內都有相似的數據,例如 3-4k 工具的累積和縮放值。 沒有嘗試使用 100k,但可能會考慮做一些基准測試,看看限制在哪里,以及在不同機器/集群急劇降級的情況下。

如果決定管理多個手動共享的服務器,維護可能會有點問題,但與現代集群相比,單個機器可以帶來成本奇跡。 如果可以容忍數據丟失,則可以使用多個強大的隔離盒,例如在合理的時間內從不同來源重放(例如從檔案中有效的市場數據重放)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM