
TIKV是一個開源,分佈式和交易鍵值數據庫。與其他傳統的NOSQL系統不同,TIKV不僅提供了經典的鍵值API,還提供具有酸合規性的交易API。 TIKV最初是由Pingcap創建的,由RAFT供電,由RAFT提供動力,以補充TIDB,這是一種與MySQL協議兼容的分佈式HTAP數據庫。
TIKV的設計('Ti'代表鈦)的靈感來自Google的一些出色的分佈式系統,例如Bigtable,Spanner和Percolator,以及近年來學術界的一些最新成就,例如Raft Consensus Consensus算法。
如果您有興趣為TIKV做出貢獻,或者想從源頭構建它,請參見pardinging.md。


TIKV是雲本機計算基礎(CNCF)的一個逐步項目。如果您是一個想要幫助塑造容器包裝,動態安排和以微服務為導向的技術的演變的組織,請考慮加入CNCF。有關誰參與其中以及TIKV如何扮演角色的詳細信息,請閱讀CNCF公告。
隨著在RockSDB中存儲的Rust和共識狀態中筏共識算法的實現,TIKV保證了數據一致性。介紹以實現自動脫落的位置驅動程序(PD),可以自動數據遷移。交易模型類似於Google的滲濾器,並進行了一些改進的性能。 TIKV還提供快照隔離(SI),鎖定的快照隔離(SQL: SELECT ... FOR UPDATE )以及外部一致的讀取和在分佈式交易中寫入和寫入。
TIKV具有以下關鍵功能:
地理複製
TIKV使用筏子和放置驅動程序來支持地理複製。
水平可擴展性
TIKV借助PD和精心設計的RAFT組,具有水平可伸縮性,並且可以輕鬆擴展到100多個數據。
一致的分佈交易
與Google的Spanner類似,TIKV支持外部一致的分佈式交易。
協處理器支持
與HBASE類似,TIKV實現了協處理器框架以支持分佈式計算。
與tidb合作
由於內部優化,TIKV和TIDB可以一起起作用,成為具有高水平可擴展性,外部一致交易,對RDBMS和NOSQL設計模式的引人注目的數據庫解決方案。
參見治理。
有關TIKV部署,配置和維護的說明,請參見我們網站上的TIKV文檔。有關TIKV背後概念和設計的更多詳細信息,請參見Deep Dive Tikv。
筆記:
我們已經將文檔從TIKV的Wiki頁面遷移到官方網站。原始的Wiki頁面已停止。如果您對文檔有任何建議或問題,請在此處提供反饋。
您可以查看TIKV採用者的列表。

當節點啟動時,將節點,存儲和區域的元數據記錄到PD中。每個區域和存儲的狀態定期報告為PD。
使用TIDB嘗試TIKV最快的是使用TIDB的組件管理器TIUP。
您可以在逐步的教程中查看此頁面。
TIKV能夠用PD單獨運行,這是所需的最小部署。
$ export TIKV_VERSION=v7.5.0
$ export GOOS=darwin # only {darwin, linux} are supported
$ export GOARCH=amd64 # only {amd64, arm64} are supported
$ curl -O https://tiup-mirrors.pingcap.com/tikv- $TIKV_VERSION - $GOOS - $GOARCH .tar.gz
$ curl -O https://tiup-mirrors.pingcap.com/pd- $TIKV_VERSION - $GOOS - $GOARCH .tar.gz
$ tar -xzf tikv- $TIKV_VERSION - $GOOS - $GOARCH .tar.gz
$ tar -xzf pd- $TIKV_VERSION - $GOOS - $GOARCH .tar.gz$ ./pd-server --name=pd --data-dir=/tmp/pd/data --client-urls= " http://127.0.0.1:2379 " --peer-urls= " http://127.0.0.1:2380 " --initial-cluster= " pd=http://127.0.0.1:2380 " --log-file=/tmp/pd/log/pd.log$ ./tikv-server --pd-endpoints= " 127.0.0.1:2379 " --addr= " 127.0.0.1:20160 " --data-dir=/tmp/tikv/data --log-file=/tmp/tikv/log/tikv.log$ pip3 install -i https://test.pypi.org/simple/ tikv-client from tikv_client import RawClient
client = RawClient . connect ( "127.0.0.1:2379" )
client . put ( b'foo' , b'bar' )
print ( client . get ( b'foo' )) # b'bar'
client . put ( b'foo' , b'baz' )
print ( client . get ( b'foo' )) # b'baz'您可以看到 @c4pt0r提供的類似生產的集群部署手冊。
參見貢獻。
如果您想嘗試GO客戶端,請參閱GO客戶端。
Cure53進行了第三方安全審核。請參閱此處的完整報告。
要報告安全漏洞,請發送電子郵件至TIKV-SECURITY組。
有關過程和策略,請參閱安全性,然後是TIKV項目。
TIKV社區內的溝通遵守TIKV行為守則。這是一個摘錄:
為了促進一個開放而熱情的環境,我們作為貢獻者和維護者保證,無論年齡,身體大小,殘疾,種族,性別特徵,性別認同和表達,經驗水平,教育水平,教育,社會經濟地位,民族與個人,個人外觀,宗教,宗教,宗教,宗教,宗教,宗教,宗教,宗教,宗教,宗教和認同,無論年齡,身體大小,性別特徵,性別認同程度和表達水平,為每個人騷擾無騷擾的體驗。
加入Slack的TIKV社區 - 註冊並加入您感興趣的TIKV主題的頻道。
TIKV在Apache 2.0許可下。有關詳細信息,請參見許可證文件。