Innodb
關於使用 tokuDB 或 InnoDB 處理財務數據的問題
我們想使用 Percona xtraDBcluster 來集群 4 個節點(Master-Master),我們有一個財務項目,它應該有一個相當大的數據庫。表的數量不超過 40 個,但我們大約有 2 個儲存金融交易數據的表,這些表中的數據量估計會以每天 350,000 條記錄的速度增長,我們應該至少保留它們 10 年能夠做各種報告。
這些表中的大部分操作 (98%) 是插入/讀取,但我們可以在單獨的表中分隔可更新欄位。
我的問題如下:
- 對於如此大量的數據,我應該使用 tokuDB 儲存引擎還是 InnoDB?
- 如此龐大而敏感的數據庫的最佳解決方案是什麼?
最好的祝福
但
需要注意的幾點:
- XtraDB Cluster 不擴展寫入(水平),即您不能通過添加更多節點來增加寫入數量。但是,每天大約有 350,000 條記錄。每秒 4 條記錄,這對於 XtraDB Cluster(或任何其他複製拓撲)來說完全沒有問題,至少只要節點位於同一網路上。
- XtraDB Cluster 僅支持 XtraDB / InnoDB 表儲存引擎,因此如果您想使用特定的集群技術,TokuDB 不是一個選項。
- 4 個節點不是一個好數字。您應該使用奇數(3、5、…)個節點,或偶數個節點 + 一個帶有 garbd 的節點,Galera 仲裁器。
XtraDB(即帶有一些 Percona 更新檔的 InnoDB)是一種久經考驗的技術,XtraDB / InnoDB 是 MySQL、Percona 和 MariaDB 中的預設儲存引擎。InnoDB 正在由 MySQL(由 Oracle 擁有)開發和支持。
TokuDB 較新,它沒有多年的使用和開發。如果我理解正確的話,TokuDB 是由現在由 Percona 擁有的 Tokutek 開發的。
考慮到這些因素,在金融交易數據系統的這兩種技術之間進行選擇時,我可能會選擇 XtraDB。
100M 行對於 InnoDB 來說是中等大小,但不是問題。Tokudb 不會為僅 4 行/秒的 InnoDB 購買任何額外的槓桿。
你最終會遇到麻煩的是兩個地方:
- 10 年後清除數據。(我認為這不是一個真正的問題,因為整個系統將在 10 年內重建。)我將通過使用
PARTITION BY RANGE(...)
並製作分區“宿舍”來實施清除,然後定期DROP PARTITION
和REORGANIZE PARTITION
.- 在 100M 行的表上“報告”可能會很慢而且成本很高。但是,如果您可以建構和維護匯總表,它們會快得多。