1、TiDB:

说明:

PingCAP 公司基于 Google Spanner / F1 论文实现的开源分布式 NewSQL 数据库。

开源分布式 NewSQL 关系型数据库 TiDB 是新一代开源分布式 NewSQL 数据库,模型受 Google Spanner / F1 论文的启发,实现了自动的水平伸缩,强一致性的分布式事务,基于 Raft 算法的多副本复制等重要 NewSQL 特性。TiDB 结合了 RDBMS 和 NoSQL 的优点,部署简单,在线弹性扩容和异步表结构变更不影响业务, 真正的异地多活及自动故障恢复保障数据安全,同时兼容 MySQL 协议,使迁移使用成本降到极低

特性:

SQL支持(TiDB 是 MySQL 兼容的) 水平弹性扩展(吞吐可线性扩展) 分布式事务 跨数据中心数据强一致性保证 故障自恢复的高可用 海量数据高并发实时写入与实时查询(HTAP 混合负载) TiDB 的设计目标是 100% 的 OLTP 场景和 80% 的 OLAP 场景,更复杂的 OLAP 分析可以通过 TiSpark 项目来完成。


2、CockroachDB:

说明:

构建于事务处理及强一致性KV存储上的分布式SQL数据库,支持水平扩展、自动容错处理、强一致性事务,并且提供SQL接口用于数据处理,是Google Spanner/F1的开源实现。 CockroachDB适用于应用对数据要求精确、可靠、完全正确的场景,支持自动复制、均匀分布、基于极小配置的数据恢复,可用于分布式的、可复制的联机事务处理(OLTP),多数据中心的部署,私有云的基础构建,它不适用于读少写多的场景,可以用内存数据库来代替,也不适用于复杂的join查询,重量级的数据分析及联机分析处理(OLAP)。

特性:

支持PostgreSQL

对标准SQL支持较完善

较稳定


TiDB和Cockroach之间存在一些关键差异。

1.用户界面和生态系统尽管TiDB和CockroachDB都支持SQL,但TiDB与MySQL协议兼容,而Cockroach选择PostgreSQL。您可以使用任何MySQL客户端直接连接到TiDB服务器。

2.体系结构整个TiDB项目在逻辑上分为两部分:无状态SQL层(TiDB)和分布式存储层(TiKV)。由于TiDB建立在TiKV之上,开发人员可以根据自己的业务自由选择使用TiDB或TiKV。如果您只需要分布式键值数据库,则可以单独使用TiKV以获得更高的性能和更低的延迟。

总之,我们的系统是高度分层和模块化的,而CockroachDB是一个P2P系统。我们系统的设计导致我们使用两种编程语言:Go for TiDB和Rust for TiKV以提高存储性能。

并且受益于高度分层的架构,我们构建了另一个项目[1],以便在TiDB / TiKV之上运行Apache Spark来回答复杂的OLAP查询。它利用了Spark平台和分布式TiKV集群的优势。

3.事务模型尽管CockroachDB和TiDB都支持ACID事务,但TiDB使用了Google的Percolator引入的模型。该模型的关键特性是它需要一个独立的时间戳分配器。与Spanner一样,TiDB中的每个事务都有一个时间戳来隔离不同的事务。

CockroachDB使用的模型类似于Google在其论文中描述的TrueTime API。然而,与Google不同,CockroachDB没有构建原子钟和GPS接收器来保持不同数据中心的时间一致。相反,它使用NTP进行时钟同步,这导致了不确定错误的问题。为了解决这个问题,CockroachDB采用了混合逻辑时钟(HLC)算法。

4.编程语言TiDB使用Go作为SQL层,使用Rust作为存储引擎层。由于Go具有垃圾收集器(GC)和运行时,我们认为调整性能将花费我们几天的时间。因此,我们对TiKV使用Rust,一种静态语言。它的表现要好得多。CockroachDB只使用Go。


3、FoundationDB:

2018-4 重新开源,资料较少

根据FoundationDB的官方文档,FoundationDB有一系列的局限性:

  1. 单个事务数据量不能超过10MB
  2. 键的长度不能超过10KB, 值的长度不能超过100KB
  3. 系统针对并且只针对SSD优化,使用传统HHD既不保证性能也不保证数据库可用性
  4. FoundationDB对于需要读比较大的主键值范围的查询性能不好
  5. 该系统没有实现任何的安全和权限管理,任何人都可以去读和写任意一个主键
  6. 系统不支持长时间运行的事务 ,具体来说,一个事务的第一个操作后超过5秒如果事务还没有结束,系统就会报错。
  7. 系统只在<500个Core的情况下仔细测过,有性能保证
  8. 数据库的数据大小不能超过100TB
  9. 系统对每个分区都做3份拷贝,而不会自动对热点增加更多的拷贝,所以读的性能有上限。

4、商用NewSQL:

Spanner、F1:谷歌

OceanBase:阿里

TDSQL:腾讯

UDDB:UCloud

RadonDB:青云中间件


5、总结:

对比一番后,TiDB需要SSD及多台服务器,CockRoachDB 更友好,优先尝试。


2018-11-30 更新:

找到tidb的二进制文件,可以简单部署单机或集群版:

https://www.pkold.com/a/TiDB_Binary__bu_shu_fang_an_xiang_jie_(_bei_fen_)

由于cockroachDB支持的是postgreSQL,如果要承接mysql,需要修改成本,而且不好估算;

tidb则几乎完全兼容mysql,承接mysql成本非常低,故对tidb进行了测试。

在一台服上分别启动mysql和tidb单机版集群,对其进行OLTP压力测试:

debian服务器一台(4核cpu+8G内存)

    QPS   TPS 
MySQL 16000   800
TiDB 4100   200

可见单机情况下mysql的吞吐量比tidb高几倍,在集群情况下tidb表现会好点;

此处应该是没有配置ssd硬盘导致结果没有tidb官网所述好。


参考:

https://blog.csdn.net/u011782423/article/details/81030514

https://blog.csdn.net/erlib/article/details/78442934

https://groups.google.com/forum/#!topic/tidb-user/k_nMQWPmK-Q

https://github.com/ixiongdi/NewSQLBenchmark

https://hn.svelte.technology/item/15499404

分布式 NewSQL 对比的更多相关文章

  1. 小试国产开源HTAP分布式NewSQL数据库TiDB-v5.3.0

    概述 定义 TiDB官网 https://pingcap.com/zh/ 最新版本为5.3.0 TiDB GitHub源码 https://github.com/pingcap/tidb TiDB是由 ...

  2. 分布式数据库对比评测(Es,mongodb,redis)基础知识篇

    前言 我建议大家看下这个,否则后面你不知道我在说什么. 1.ES数据库相关概念 啥是Es,说白了就是支持文档搜索的分布式数据库,专门方便搜索的,GITHUB京东现在都在用. 1.ES的数据库存放在哪里 ...

  3. [转] 遇见 TiDB - 分布式关系数据库

    [From] http://kuaibao.qq.com/s/20180510G0UFL000?refer=cp_1026 最近TiDB掀起了一波分布式数据库的热潮,公司也在着手准备TiDB的落地工作 ...

  4. 云时代的分布式数据库:阿里分布式数据库服务DRDS

    发表于2015-07-15 21:47| 10943次阅读| 来源<程序员>杂志| 27 条评论| 作者王晶昱 <程序员>杂志数据库DRDS分布式沈询 摘要:伴随着系统性能.成 ...

  5. 跨时代的分布式数据库 – 阿里云DRDS详解(转)

    原文章地址:https://www.csdn.net/article/a/2015-08-28/15827676 跨时代的分布式数据库 – 阿里云DRDS详解 发表于2015-08-28 18:39| ...

  6. NewSQL 介绍

    1.CAP: CAP原理:• Consistency(一致性): 数据一致更新,所有数据变动都是同步的• Availability(可用性): 好的响应性能• Partition tolerance( ...

  7. 什么是分布式关系型数据库服务 DRDS

    DRDS 产品简介 DRDS 是一款基于 MySQL 存储.采用分库分表技术进行水平扩展的分布式 OLTP 数据库服务产品,支持 RDS for MySQL 以及 POLARDB for MySQL, ...

  8. 遇见 TiDB

    遇见 TiDB 文章来源:企鹅号 - 塔塔驿站 最近TiDB掀起了一波分布式数据库的热潮,公司也在着手准备TiDB的落地工作,前几天也参与了几场公司针对TiDB的分享会,下面我们了解一下关于TiDB. ...

  9. 【巨杉数据库SequoiaDB】巨杉Tech | 四步走,快速诊断数据库集群状态

    1.背景 SequoiaDB 巨杉数据库是一款金融级分布式数据库,包括了分布式 NewSQL.分布式文件系统与对象存储.与高性能 NoSQL 三种存储模式,分别对应分布式在线交易.非结构化数据和内容管 ...

随机推荐

  1. 【Linux系统目录结构】

    登录系统后,在当前命令窗口下输入 ls / 你会看到 以下是对这些目录的解释: /bin bin是Binary的缩写.这个目录存放着最经常使用的命令. /boot 这里存放的是启动Linux时使用的一 ...

  2. How to Enable TLS 1.2 on Windows Server 2008 R2 and IIS 7.5

    Nowadays there is an SSL vulnerability called POODLE discovered by Google team in SSLv3 protocol. So ...

  3. C# 深浅复制 MemberwiseClone

    学无止境,精益求精 十年河东,十年河西,莫欺少年穷 学历代表你的过去,能力代表你的现在,学习代表你的将来 最近拜读了大话设计模式:原型模式,该模式主要应用C# 深浅复制来实现的!关于深浅复制大家可参考 ...

  4. 锁、C#中Monitor和Lock以及区别

    1.Monitor.Enter(object)方法是获取锁,Monitor.Exit(object)方法是释放锁,这就是Monitor最常用的两个方法,当然在使用过程中为了避免获取锁之后因为异常,致锁 ...

  5. Linux性能评测工具之一:gprof篇

    这些天自己试着对项目作一些压力测试和性能优化,也对用过的测试工具作一些总结,并把相关的资料作一个汇总,以便以后信手拈来! 1 简介 改进应用程序的性能是一项非常耗时耗力的工作,但是究竟程序中是哪些函数 ...

  6. socket、tcp、udp、http 的认识及区别

    一.先来一个讲TCP.UDP和HTTP关系的 1.TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层. 在网络层有IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协议. 在传输 ...

  7. Webpack 2 视频教程 004 - Webpack 初体验

    原文发表于我的技术博客 这是我免费发布的高质量超清「Webpack 2 视频教程」. Webpack 作为目前前端开发必备的框架,Webpack 发布了 2.0 版本,此视频就是基于 2.0 的版本讲 ...

  8. 针对负载均衡集群中的session解决方案的总结

    在日常运维工作中,当给Web站点使用负载均衡之后,必须面临的一个重要问题就是Session的处理办法,无论是PHP.Python.Ruby还是Java语言环境,只要使用服务器保存Session,在做负 ...

  9. Nginx code 常用状态码学习小结

    最近了解下Nginx的Code状态码,在此简单总结下.一个http请求处理流程: 一个普通的http请求处理流程,如上图所示:A -> client端发起请求给nginxB -> ngin ...

  10. keepalived概述

    一.HA集群中的相关术语 1.节点(node) 运行HA进程的一个独立主机,称为节点,节点是HA的核心组成部分,每个节点上运行着操作系统和高可用软件服务,在高可用集群中,节点有主次之分,分别称之为主节 ...