热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

TiDBvsCockroachDB

CockroachDB去中心化设计,数据可以直接存放到本地磁盘水平弹性扩容,可自动Rebalancing各个节点之间完全对等,前端可挂负载均衡高可用遵循多数原则,默认数据保存三份副




CockroachDB


  • 去中心化设计, 数据可以直接存放到本地磁盘
  • 水平弹性扩容,可自动 Rebalancing
  • 各个节点之间完全对等,前端可挂负载均衡
  • 高可用遵循多数原则,默认数据保存三份副本(至少三台机器),可以允许一台机器挂掉
  • 一台机器挂掉后,会被标记成suspect,超过一定时间,将被标记成dead,此时会自动将其上面的副本转移到其它机器上去
  • 默认三个副本,如果有两台机器同时挂掉(这个"同时"时间可以配置),部分数据将不可用
  • CockroachDB 部署简单,只需要一个二进制文件,内置完善的图形界面
  • CockroachDB上层支持兼容PostgreSQL语法,下层调用分布式KV存储API

TiDB


  • TiDB 是PingCAP国产企业设计开发的开源分布式关系型数据库,其设计思想源于google spanner
  • TiDB 是中心化设计,其元数据信息存放在PD组建上
  • TiDB 同时支持行存储引擎TiKV、列存储引擎TiFlash,提供一站式 OLTP (Online Transactional Processing)、OLAP (Online Analytical Processing)解决方案
  • TiDB 兼容MySQL 5.7协议,支持mysql原生客户端、mysqldump、navicat等诸多mysql原生工具
  • TiDB 支持一键水平扩容或者缩容
  • TiDB 是存储与计算分离的架构,基于Raft协议保证强一致性,支持高可用,机房容灾

TiDB系统架构图

在这里插入图片描述


  • TiDB Server:SQL 层,对外暴露 MySQL 协议的连接 endpoint,负责接受客户端的连接,执行 SQL 解析和优化,最终生成分布式执行计划。TiDB 层本身是无状态的,实践中可以启动多个 TiDB 实例,通过负载均衡组件对外提供统一的接入地址

  • PD (Placement Driver) Server:整个 TiDB 集群的元信息管理模块,负责存储每个 TiKV 节点实时的数据分布情况和集群的整体拓扑结构,提供 TiDB Dashboard 管控界面,并为分布式事务分配事务 ID。PD 不仅存储元信息,同时还会根据 TiKV 节点实时上报的数据分布状态,下发数据调度命令给具体的 TiKV 节点,可以说是整个集群的“大脑”。此外,PD 本身也是由至少 3 个节点构成,拥有高可用的能力。建议部署奇数个 PD 节点。作为中心总控节点,PD 通过集成 etcd ,自动的支持 auto failover,无需担心单点故障问题。同时,PD 也通过 etcd 的 raft,保证了数据的强一致性,不用担心数据丢失的问题。

  • TiKV Server:负责存储数据,从外部看 TiKV 是一个分布式的提供事务的 Key-Value 存储引擎。TiKV基于RocksDB开发,基于Raft强一致性协议保证高可用,默
    认三个副本,一个Leader,两个Follower

  • TiFlash:TiFlash 是一类特殊的存储节点。和普通 TiKV 节点不一样的是,在 TiFlash 内部,数据是以列式的形式进行存储,主要的功能是为分析型的场景加速。

TiDB存储架构图

在这里插入图片描述

TiDB计算层架构图

在这里插入图片描述

引入TiDB调度节点能够解决的问题


  • 如何保证同一个 Region 的多个 Replica 分布在不同的节点上?更进一步,如果在一台机器上启动多个 TiKV 实例,会有什么问题?
  • TiKV 集群进行跨机房部署用于容灾的时候,如何保证一个机房掉线,不会丢失 Raft Group 的多个 Replica?
  • 添加一个节点进入 TiKV 集群之后,如何将集群中其他节点上的数据搬过来?
  • 当一个节点掉线时,会出现什么问题?整个集群需要做什么事情?如果节点只是短暂掉线(重启服务),那么如何处理?如果节点是长时间掉线(磁盘故障,数据全部丢失),需要如何处理?
  • 假设集群需要每个 Raft Group 有 N 个副本,那么对于单个 Raft Group 来说,Replica 数量可能会不够多(例如节点掉线,失去副本),也可能会过于多(例如掉线的节点又回复正常,自动加入集群)。那么如何调节 Replica 个数?
  • 读/写都是通过 Leader 进行,如果 Leader 只集中在少量节点上,会对集群有什么影响?
  • 并不是所有的 Region 都被频繁的访问,可能访问热点只在少数几个 Region,这个时候我们需要做什么?
  • 集群在做负载均衡的时候,往往需要搬迁数据,这种数据的迁移会不会占用大量的网络带宽、磁盘 IO 以及 CPU?进而影响在线服务?

TiDB vs CockroachDB

表格对比


NameCockroachDBTiDB
DescriptionCockroachDB is a distributed database architected for modern cloud applications. It is wire compatible with PostgreSQL and backed by a Key-Value Store, which is either RocksDB or a purpose-built derivative, called Pebble.TiDB is an open source distributed Hybrid Transactional/Analytical Processing (HTAP) database that supports MySQL and Spark SQL syntaxes.
Primary database modelRelational DBMSRelational DBMS
Websitewww.cockroachlabs.compingcap.com
Technical documentationwww.cockroachlabs.com/­docsdocs.pingcap.com/­tidb/­stable
DeveloperCockroach LabsPingCAP, Inc.
Initial release20152016
Current release20.2, November 20204.0.10 , January 2021
LicenseOpen SourceOpen Source
Cloud-based onlynono
Implementation languageGoGo, Rust
Server operating systemsLinux macOS WindowsLinux
Data schemedynamic schemayes
Typingyesyes
XML supportnono
Secondary indexesyesyes
SQLyes, wire compatible with PostgreSQLyes
APIs and other access methodsJDBCJDBC
ODBC
Proprietary protocol
Supported programming languagesC#
C++
Clojure
Go
Java
Javascript (Node.js)
PHP
Python
Ruby
Rust
Ada
C
C#
C++
D
Delphi
Eiffel
Erlang
Haskell
Java
Javascript (Node.js)
Objective-C
OCaml
Perl
PHP
Python
Ruby
Scheme
Tcl
Server-side scriptsnono
Triggersnono
Partitioning methodshorizontal partitioning (by key range)horizontal partitioning (by key range)
Replication methodsMulti-source replication using RAFTUsing Raft consensus algorithm to ensure data replication with strong consistency among multiple replicas.
MapReducenoyes
Consistency conceptsImmediate ConsistencyImmediate Consistency
Foreign keysyesno
Transaction conceptsACIDACID
Concurrencyyesyes
Durabilityyesyes
In-memory capabilitiesnono
User conceptsRole-based access controlUsers with fine-grained authorization concept. No user groups or roles.

区别概览


  • 两者均为开源分布式数据库,TiDB由于是国产,中文文档支持非常好
  • TiDB目前不支持外键
  • TiDB是MySQL协议兼容,CockroachDB是PostgreSQL语法兼容,明显TiDB对MySQL兼容更好
  • CockroachDB部署极其简单,仅需单个二进制文件,因为部署简单,相应的扩所容、维护CockroachDB都比TiDB要简单
  • TiDB可以通过TiSpark扩展支持OLAP场景,而CockroachDB官方说明,不建议用在OLAP场景下
  • 两者均为CP系统,部分节点挂掉会短暂(几秒)影响可用性,不会影响一致性

参考资料

TiDB和CockroachDB同为Spanner/F1的开源实现,有哪些重大差异?
https://www.zhihu.com/question/60686555
https://rocksdb.org.cn/doc/getting-started.html
RocksDB是使用C++编写的嵌入式kv存储引擎,其键值均允许使用二进制流。由Facebook基于levelDB开发, 提供向后兼容的levelDB API。
RocksDB针对Flash存储进行优化,延迟极小。RocksDB使用LSM存储引擎,纯C++编写。
NewSQL TiDB vs CockroachDB
https://blog.csdn.net/vkingnew/article/details/88559050
CAP理论表明了对于一个分布式的系统在以下3种保证中同时实现超过两种是不可能的:
Consistency(一致性)
Availability(可用性)
Partition Tolerance(分区容错性)


推荐阅读
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 基于事件驱动的并发编程及其消息通信机制的同步与异步、阻塞与非阻塞、IO模型的分类
    本文介绍了基于事件驱动的并发编程中的消息通信机制,包括同步和异步的概念及其区别,阻塞和非阻塞的状态,以及IO模型的分类。同步阻塞IO、同步非阻塞IO、异步阻塞IO和异步非阻塞IO等不同的IO模型被详细解释。这些概念和模型对于理解并发编程中的消息通信和IO操作具有重要意义。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • MongoDB用户验证auth的权限设置及角色说明
    本文介绍了MongoDB用户验证auth的权限设置,包括readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase、cluster相关的权限以及root权限等角色的说明和使用方法。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • 在2022年,随着信息化时代的发展,手机市场上出现了越来越多的机型选择。如何挑选一部适合自己的手机成为了许多人的困扰。本文提供了一些配置及性价比较高的手机推荐,并总结了选择手机时需要考虑的因素,如性能、屏幕素质、拍照水平、充电续航、颜值质感等。不同人的需求不同,因此在预算范围内找到适合自己的手机才是最重要的。通过本文的指南和技巧,希望能够帮助读者节省选购手机的时间。 ... [详细]
author-avatar
廊坊0316慢摇酒吧_196
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有