通过与 Jira 对比,让您更全面了解 PingCode

  • 首页
  • 需求与产品管理
  • 项目管理
  • 测试与缺陷管理
  • 知识管理
  • 效能度量
        • 更多产品

          客户为中心的产品管理工具

          专业的软件研发项目管理工具

          简单易用的团队知识库管理

          可量化的研发效能度量工具

          测试用例维护与计划执行

          以团队为中心的协作沟通

          研发工作流自动化工具

          账号认证与安全管理工具

          Why PingCode
          为什么选择 PingCode ?

          6000+企业信赖之选,为研发团队降本增效

        • 行业解决方案
          先进制造(即将上线)
        • 解决方案1
        • 解决方案2
  • Jira替代方案

25人以下免费

目录

TiDB和FoundationDB各有什么优劣

要明确的是,FoundationDB和TiKV是一个层次的东西,都是一个支持分布式事务ACID的ordered KV map。TiKV和FoundationDB都支持,TiKV依赖PD来提供事务版本服务,FoundationDB依赖master提供,这点差不多,不同的是TiKV在事务开始的时候需要问PD拿事务开始版本。

一、TiDB和FoundationDB各有什么优劣

要明确的是,FoundationDB和TiKV是一个层次的东西,都是一个支持分布式事务ACID的ordered KV map。

接下来从原理上看看有何不同。

外部一致性:TiKV和FoundationDB都支持,TiKV依赖PD来提供事务版本服务,FoundationDB依赖master提供,这点差不多,不同的是TiKV在事务开始的时候需要问PD拿事务开始版本,而FoundationDB是从一个proxy拿,而这个proxy需要问其他的所有的proxies拿commit versions,然后取一个最大的给客户端。

分布式事务:TiKV用的是和percolator一样的方法,检测冲突是在commit的时候进行,和FoundationDB一样,都是乐观的并发控制协议,原理都是看一个事务修改的数据是否在提交前被另外一个事务动过,如果是就回滚retry。FoundationDB在2PC时的容错怎么做的,没找到相关文档,percolator论文中说的很清楚,略。

事务冲突检测:TiKV冲突检测在各个TiKV节点上,FoundationDB拎了一个单独的叫做resolver的组件出来做冲突检测,这个组件可以有多个,组件会把最近5s的已经提交的写的key放在内存中,这也是known limitations中一个事务中最大只支持5s的原因之一。

隔离级别:都是SSI,基本就是拿一个快照,然后事务内的写自己能读到(不确定TiKV是SI还是SSI)。

副本复制协议:TiKV用raft,FoundationDB文档中没看到提到这块。

架构:都是shared nothing,TiKV单机引擎rocksdb,核心数据结构skiplist,FoundationDB单机基于磁盘的B-Tree。两者都强调分层,下面是存储,上面是接口层,TiDB是TiKV的SQL接口层,FoundationDB core就是下面的存储层。稍一点不同的是,因为TiKV本质上还是为TiDB服务的,所以加了一些接口专门给TiDB用,主要是为了计算下推。

延伸阅读:

二、TiDb简介

TiDB 是 PingCAP 公司受 Google Spanner / F1 论文启发而设计的开源分布式 HTAP (Hybrid Transactional and Analytical Processing) 数据库,结合了传统的 RDBMS 和NoSQL 的优异特性。TiDB 兼容 MySQL,支持无限的水平扩展,具备强一致性和高可用性。TiDB 的目标是为 OLTP(Online Transactional Processing) 和 OLAP (Online Analytical Processing) 场景提供一站式的解决方案。TiDB 具备如下核心特点:

相关文章