分布式 NewSQL 对比
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有一系列的局限性:
- 单个事务数据量不能超过10MB
- 键的长度不能超过10KB, 值的长度不能超过100KB
- 系统针对并且只针对SSD优化,使用传统HHD既不保证性能也不保证数据库可用性
- FoundationDB对于需要读比较大的主键值范围的查询性能不好
- 该系统没有实现任何的安全和权限管理,任何人都可以去读和写任意一个主键
- 系统不支持长时间运行的事务 ,具体来说,一个事务的第一个操作后超过5秒如果事务还没有结束,系统就会报错。
- 系统只在<500个Core的情况下仔细测过,有性能保证
- 数据库的数据大小不能超过100TB
- 系统对每个分区都做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 对比的更多相关文章
- 小试国产开源HTAP分布式NewSQL数据库TiDB-v5.3.0
概述 定义 TiDB官网 https://pingcap.com/zh/ 最新版本为5.3.0 TiDB GitHub源码 https://github.com/pingcap/tidb TiDB是由 ...
- 分布式数据库对比评测(Es,mongodb,redis)基础知识篇
前言 我建议大家看下这个,否则后面你不知道我在说什么. 1.ES数据库相关概念 啥是Es,说白了就是支持文档搜索的分布式数据库,专门方便搜索的,GITHUB京东现在都在用. 1.ES的数据库存放在哪里 ...
- [转] 遇见 TiDB - 分布式关系数据库
[From] http://kuaibao.qq.com/s/20180510G0UFL000?refer=cp_1026 最近TiDB掀起了一波分布式数据库的热潮,公司也在着手准备TiDB的落地工作 ...
- 云时代的分布式数据库:阿里分布式数据库服务DRDS
发表于2015-07-15 21:47| 10943次阅读| 来源<程序员>杂志| 27 条评论| 作者王晶昱 <程序员>杂志数据库DRDS分布式沈询 摘要:伴随着系统性能.成 ...
- 跨时代的分布式数据库 – 阿里云DRDS详解(转)
原文章地址:https://www.csdn.net/article/a/2015-08-28/15827676 跨时代的分布式数据库 – 阿里云DRDS详解 发表于2015-08-28 18:39| ...
- NewSQL 介绍
1.CAP: CAP原理:• Consistency(一致性): 数据一致更新,所有数据变动都是同步的• Availability(可用性): 好的响应性能• Partition tolerance( ...
- 什么是分布式关系型数据库服务 DRDS
DRDS 产品简介 DRDS 是一款基于 MySQL 存储.采用分库分表技术进行水平扩展的分布式 OLTP 数据库服务产品,支持 RDS for MySQL 以及 POLARDB for MySQL, ...
- 遇见 TiDB
遇见 TiDB 文章来源:企鹅号 - 塔塔驿站 最近TiDB掀起了一波分布式数据库的热潮,公司也在着手准备TiDB的落地工作,前几天也参与了几场公司针对TiDB的分享会,下面我们了解一下关于TiDB. ...
- 【巨杉数据库SequoiaDB】巨杉Tech | 四步走,快速诊断数据库集群状态
1.背景 SequoiaDB 巨杉数据库是一款金融级分布式数据库,包括了分布式 NewSQL.分布式文件系统与对象存储.与高性能 NoSQL 三种存储模式,分别对应分布式在线交易.非结构化数据和内容管 ...
随机推荐
- Android 解决布局无法对齐的情况
是这样的,在为app制作titlebar或者使用RadioGroup设置布局的的weight属性后,会出现有些机型的手机布局无法居中的问题. 在遇到这类问题时,大部分的原因就是因为没有设置控件的属性: ...
- TerraGate SFS 4.5 版本 发布矢量数据使用的Cache数据如何再返回成shapefile文件
TerraGate SFS 4.5 版本 发布矢量数据使用的Cache数据如何再返回成shapefile文件? 两年前帮一个朋友解决过这个问题: 如果原来用4.5版本的时候,在网络环境下,为了提升调用 ...
- 【Python】Python正则表达式使用指导
1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十 ...
- SQL Server中比较末尾带有空格的字符串遇到的坑 (转载)
最近发现SQLServer中比较字符串的时候 如果字符串末尾是空格 那么SQLServer会无视那些空格直接进行比较 这和程序中平时的字符串判断逻辑不统一 );set @a=N'happycat198 ...
- 分布式全文搜索引擎ElasticSearch
一 什么是 ElasticSearch Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene(TM) 基础上的搜索引擎.当然 Elas ...
- Spring Zuul 性能调优,如何提升平均响应时间200% ?
最近负责公司的 Gateway 项目,我们用 Spring Zuul 来做 HTTP 转发,但是发现请求多的时候,AWS 的健康检查就失败了,但是实际上程序还在跑,在日志上也没有任何东西错误打印出来出 ...
- 金蝶PDA金蝶盘点机金蝶仓库条码管理方案-采购入库单教程
采购入库单有两种做法: 第一种:按照采购订单下推的采购入库单. 第二种:直接新增采购入库单,也就是不按照采购订单下推. 按照采购订单下推生成采购入库单,会以采购订单的商品品种和数量作为应收.扫描条码入 ...
- Mongo 开发笔记
时间 程序的时间是本地时间 ,数据库中的时间是 ISO 标准时间 . ISO时间 + 8 小时 = 本地时间(北京时间 ) Java驱动会自动做转化. 语法 数组查询 数据查询使用 elemMatch ...
- Docker容器学习梳理 - 容器间网络通信设置(Pipework和Open vSwitch)
自从Docker容器出现以来,容器的网络通信就一直是被关注的焦点,也是生产环境的迫切需求.容器的网络通信又可以分为两大方面:单主机容器上的相互通信,和跨主机的容器相互通信.下面将分别针对这两方面,对容 ...
- Haproxy+Keepalived高可用环境部署梳理(主主和主从模式)
Nginx.LVS.HAProxy 是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,通常会结合Keepalive做健康检查,实现故障转移的高可用功能. 1)在四层(tcp)实现负载均衡的 ...