
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许可下。有关详细信息,请参见许可证文件。