天天看點

TIDB和mysql優缺點對比

最近這幾年,公司一直在使用mysql,資料量在千萬級以下時,mysql有着非常優秀的性能和穩定性。随着資料增長,單表無法滿足業務需求,我們需要使用mycat、shading-jdbc等中間件去實作分庫分表。

分庫分表的缺點:

  1. 分頁查詢性能不好,需求聚合多庫資料,多次io,記憶體消耗大。
  2. 分布式事務問題
  3. 分庫之後,想二次擴容,資料遷移等會更複雜
  4. 跨庫join很難實作

随着newsql資料庫出現,分庫分表這些問題都得到解決,

newsql特性如下:

  1. SQL支援 (TiDB 是 MySQL 相容的)
  2. 水準線性彈性擴充
  3. 分布式事務
  4. 跨資料中心資料強一緻性保證
  5. 故障自恢複的高可用

TiDB是國産開源社群使用最廣的newsql資料庫,相容mysql協定,大資料水準擴充,友善企業無門檻接入。目前接近30k的star。

TIDB和mysql優缺點對比

TIDB四大核心應用場景

  1. 對資料一緻性及高可靠、系統高可用、可擴充性、容災要求較高的金融行業屬性的場景

衆所周知,金融行業對資料一緻性及高可靠、系統高可用、可擴充性、容災要求較高。傳統的解決方案是同城兩個機房提供服務、異地一個機房提供資料容災能力但不提供服務,此解決方案存在以下缺點:資源使用率低、維護成本高、RTO (Recovery Time Objective) 及 RPO (Recovery Point Objective) 無法真實達到企業所期望的值。TiDB 采用多副本 + Multi-Raft 協定的方式将資料排程到不同的機房、機架、機器,當部分機器出現故障時系統可自動進行切換,確定系統的 RTO <= 30s 及 RPO = 0。

  1. 對存儲容量、可擴充性、并發要求較高的海量資料及高并發的 OLTP 場景

随着業務的高速發展,資料呈現爆炸性的增長,傳統的單機資料庫無法滿足因資料爆炸性的增長對資料庫的容量要求,可行方案是采用分庫分表的中間件産品或者 NewSQL 資料庫替代、采用高端的儲存設備等,其中成本效益最大的是 NewSQL 資料庫,例如:TiDB。TiDB 采用計算、存儲分離的架構,可對計算、存儲分别進行擴容和縮容,計算最大支援 512 節點,每個節點最大支援 1000 并發,叢集容量最大支援 PB 級别。

  1. Real-time HTAP 場景

随着 5G、物聯網、人工智能的高速發展,企業所生産的資料會越來越多,其規模可能達到數百 TB 甚至 PB 級别,傳統的解決方案是通過 OLTP 型資料庫處理線上聯機交易業務,通過 ETL 工具将資料同步到 OLAP 型資料庫進行資料分析,這種處理方案存在存儲成本高、實時性差等多方面的問題。TiDB 在 4.0 版本中引入列存儲引擎 TiFlash 結合行存儲引擎 TiKV 建構真正的 HTAP 資料庫,在增加少量存儲成本的情況下,可以同一個系統中做聯機交易處理、實時資料分析,極大地節省企業的成本。

  1. 資料彙聚、二次加工處理的場景

目前絕大部分企業的業務資料都分散在不同的系統中,沒有一個統一的彙總,随着業務的發展,企業的決策層需要了解整個公司的業務狀況以便及時做出決策,故需要将分散在各個系統的資料彙聚在同一個系統并進行二次加工處理生成 T+0 或 T+1 的報表。傳統常見的解決方案是采用 ETL + Hadoop 來完成,但 Hadoop 體系太複雜,運維、存儲成本太高無法滿足使用者的需求。與 Hadoop 相比,TiDB 就簡單得多,業務通過 ETL 工具或者 TiDB 的同步工具将資料同步到 TiDB,在 TiDB 中可通過 SQL 直接生成報表。