TiDB,為SQL注入分布式可擴充套件性

2021-08-19 12:56:24 字數 1680 閱讀 3960

時下,一大批新型資料庫急劇湧現,諸如google spanner、faunadb、cockroach以及timescaledb等等,這些資料庫都在專注解決影響標準sql的規模問題。現在,另一位來自中國北京的競爭者——pingcap開源的tidb專案,旨在維持acid事務的同時,使sql也具備nosql系統的可伸縮性。

pingcap聯合創始人兼首席執行官劉奇表示,該專案全面支援mysql協議,也就意味著使用者可以重新利用mysql工具,大大減少遷移成本。在多數情況下,使用者甚至無需修改應用程式的任何**即可取代mysql。另外它是橫向擴充套件的,通過簡單地增加機器數量就可以提高效能。

去年十月,劉奇在阿姆斯特丹的percona live會議上提出了tidb專案,彼時專案還處於測試階段,目前專案已進化到候選版本。本周四,pingcap聯合創始人兼首席技術官愛德華黃將在加州,聖克拉拉的percona live會議上披露tidb專案的新進展。

他們認為tidb兼具sql和nosql的優勢,並且致力於使它:

在某次郵件採訪中,劉奇提到:作為乙個開源專案,tidb已有超過100名貢獻者。

tidb專案靈感**於google f1分布式資料庫及google spanner。google在自己的專有系統上建立了spanner,並不開源,這在一部分人看來是個缺點。

「如果使用spanner,使用者即預設承諾在gce(google compute engine)執行服務,並有可能貫穿服務的整個生命週期。即使使用者選擇執行自己的堆疊,也不會出棧。」cockroach labs首席執行官spencer kimball此前曾向the new stack透露。

tidb採用鬆散耦合的方法,由乙個mysql server層和sql層組成,其基礎是開源分布式事務鍵-值資料庫tikv。tikv是另乙個pingcap專案,使用rust程式語言和分布式協議raft,而tidb用的是go程式語言。tikv專案內含mvcc(多版本併發控制)、raft以及使用rocksdb的本地鍵值儲存等功能,它同樣使用spark connector。

劉奇表示,tidb與spanner相比較有兩點不同:

spanner底層依賴於google的colossus分布式檔案系統,但tidb可以確保安全日誌儲存在raft層。也就是說tidb不依賴任何分布式檔案系統,大大降低了寫入延遲。

「我們還看到了sql優化器的巨大潛力,但google似乎並不打算在f1專案中深入研究這方面。在設計我們的專案時,我們就旨在探索優化器的能力,」他說。

受益於原子鐘的使用,spanner獲得了廣泛關注,使用者可以借助它在地理分布的資料中心間獲得時間同步。tidb沒有使用原子鐘和gps時鐘,相反,它依靠percolator(2023年google發表的一篇**)中所介紹的timestamp allocator。

tidb支援流行的容器技術,例如docker。目前團隊正在致力於對kubernetes提供支援,劉奇表示,這方面工作中的難點,在之前的阿姆斯特丹會議上恰好提到過。

現在他們正在努力解決的最大問題是延遲,尤其是地理分布的資料中心之間存在的延遲,他希望這一問題能在不久的將來得到解決。

pingcap由高階分布式系統工程師黃東旭、高階系統工程師崔秋以及基礎設施工程師劉奇共同創立於2023年4月,它有48個在北京的工程師和其他來自中國各地的遠端工作者。

其客戶包括手機遊戲提供商gaea,它使用tidb支援跨平台的實時廣告系統,這要求面對大容量資料時能夠在一定期限內具備高峰負荷能力和經驗。tidb支援自動分片和底層,tikv自動分配集群中的資料,幫助gaea降低操作和維護的成本。

分布式資料庫TIDB

tidb 是國內 pingcap 團隊開發的乙個分布式 sql 資料庫。其靈感來自於 google 的 f1 和 google spanner,tidb 支援包括傳統 rdbms 和 nosql 的特性。架構圖 tidb 集群主要分為三個元件 tidb server tidb server 是無狀態...

TIdb 分布式資料庫

tidb 是 pingcap 公司設計的開源分布式 htap hybrid transactional and analytical processing 資料庫,結合了傳統的 rdbms 和 nosql 的最佳特性。tidb 相容 mysql,支援無限的水平擴充套件,具備強一致性和高可用性。tid...

sql 分布式查詢

遠端鏈結伺服器機器名 roy 例項名 roy sql2005de 登陸名 sa 密碼 test2005 建立鏈結伺服器 exec master.dbo.sp addlinkedserver server n roy lnk srvproduct n provider n sqloledb datas...