同时满足开源、sql、单机、文件型的sql数据库怎么用有哪些

阿里云alisqlsql数据库怎么用是阿里巴巴基于MySQL的一个分支目前AliSQL正式开放了源代码的下载,alisql主要应用于阿里巴巴集团业务及阿里云sql数据库怎么用服务在原来的基础上做了许多改進,适合电商、云计算、金融等行业环境有需要的赶快下载吧!

AliSQL是基于MySQL官方版本的一个分支,由阿里云sql数据库怎么用团队维护目前也應用于阿里巴巴集团业务以及阿里云sql数据库怎么用服务。该版本在社区版的基础上做了大量的性能与功能的优化改进尤其适合电商、云計算以及金融等行业环境。
阿里云sql数据库怎么用资深专家丁奇介绍AliSQL版本在强度和广度上都经历了极大的考验。最新的AliSQL版本不仅从其他开源分支比如:PerconaMariaDB,WebScaleSQL等社区汲取精华也沉淀了阿里巴巴多年在MySQL领域的经验和解决方案。AliSQL增加更多监控指标并针对电商秒杀、物联网大数據压缩、金融数据安全等场景提供个性化的解决方案。
“在通用基准测试场景下AliSQL版本比MySQL官方版本有着70%的性能提升。在秒杀场景下性能提升100倍。”丁奇表示
阿里云资深总监李津表示,“AliSQL的发展得到了众多智慧的支持我们希望将过去几年沉淀的技术积累回馈到社区,帮助更多使用MySQL的个人和企业这是社区良性发展的道路。我们也欢迎更多的开发者和技术团队加入AliSQL开源项目使之在业内发挥更大的价值。”
按照开源时间表预计在9月邀请部分用户内测。在10月云Code和代码托管网站Github则可以下载AliSQL源代码。此外开源小组会启动社区建设,定期组織社区活动帮助更多开发者快速学习和应用。

阿里巴巴是国内开源界的最大贡献者之一云栖大会上展示了其在开源行业的项目情况,目前维护的热门开源项目超过100个捐赠的开源项目JStorm成为Apache Storm里的子项目。RocketMQ 已经被70多家公司使用Tengine现在是九大最流行的WebServer之一。不久之前还开源叻跨平台开发框架Weex。

sql数据库怎么用作为业务的核心茬整个基础软件栈中是非常重要的一环。近几年社区也是新的方案和思想层出不穷接下来我将总结一下近几年一些主流的开源sql数据库怎麼用方案和背后的设计思想以及适用场景。本人才疏学浅如有遗漏或者错误请见谅本次分享聚焦于sql数据库怎么用既结构化数据存储 OLTP 及 NoSQL 领域,不会涉及 OLAP、对象存储、分布式文件系统

开源RDBMS与互联网的崛起

很长时间以来,关系型sql数据库怎么用一直是大公司的专利市场被 Oracle / DB2 等企業sql数据库怎么用牢牢把持。但是随着互联网的崛起、开源社区的发展上世纪九十年代 MySQL 1.0 的发布,标志着关系型sql数据库怎么用的领域社区终於有可选择的方案

第一个介绍的单机 RDBMS 就是 MySQL。相信大多数朋友都已经对 MySQL 非常熟悉基本上 MySQL 的成长史就是互联网的成长史。我接触的第一个 MySQL 蝂本是 MySQL 4.0到后来的 MySQL 5.5 更是经典——基本所有的互联网公司都在使用。MySQL 也普及了「可插拔」引擎这一概念针对不同的业务场景选用不同的存儲引擎是 MySQL tuning 的一个重要的方式。比如对于有事务需求的场景使用 InnoDB;对于并发读取的场景 MyISAM 可能比较合适;但是现在我推荐绝大多数情况还是使鼡 InnoDB毕竟 5.6 后已经成为了官方的默认引擎。大多数朋友都基本知道什么场景适用 MySQL(几乎所有需要持久化结构化数据的场景)我就不赘述了。

另外值得一提的是 MySQL 5.6 中引入了多线程复制和 GTID使得故障恢复和主从的运维变得比较方便。另外5.7(目前处于 GA 版本) 是 MySQL 的一个重大更新,主偠是读写性能和复制性能上有了长足的进步(在5.6版本中实现了SCHEMA级别的并行复制不过意义不大,倒是MariaDB的多线程并行复制大放异彩有不少囚因为这个特性选择MariaDB。MySQL 5.7 MTS支持两种模式一种是和5.6一样,另一种则是基于binlog group commit实现的多线程复制也就是MASTER上同时提交的binlog在SLAVE端也可以同时被apply,实现並行复制)如果有单机sql数据库怎么用技术选型的朋友,基本上只需要考虑 5.7 或者 MariaDB 就好了而且 5.6、5.7 由 Oracle 接手后,性能和稳定性上都有了明显的提升

SQL 的接口,正式发布了 PostgreSQL95随后一步步在开源社区中成长起来。和 MySQL 一样PostgreSQL 也是一个单机的关系型sql数据库怎么用,但是与 MySQL 方便用户过度扩展的 SQL 文法不一样的是PostgreSQL 的 SQL 支持非常强大,不管是内置类型、JSON 支持、GIS 类型以及对于复杂查询的支持PL/SQL 等都比 MySQL

从近几年的趋势上来看,PostgreSQL 的势头吔很强劲我认为 PostgreSQL 的不足之处在于没有 MySQL 那样强大的社区和群众基础。MySQL 经过那么多年的发展积累了很多的运维工具和最佳实践,但是 PostgreSQL 作为後起之秀拥有更优秀的设计和更丰富的功能。PostgreSQL 9 以后的版本也足够稳定在做新项目技术选型的时候,是一个很好的选择另外也有很多噺的sql数据库怎么用项目是基于 PostgreSQL 源码的基础上进行二次开发,比如 Greenplum 等

我认为,单机sql数据库怎么用的时代很快就会过去摩尔定律带来的硬件红利总是有上限的,现代业务的数据规模、流量以及现代的数据科学对于sql数据库怎么用的要求单机已经很难满足。比如网卡磁盘 IO 和 CPU 總有瓶颈,线上敏感的业务系统可能还得承担 SPOF(单点故障) 的风险主从复制模型在主挂掉时到底切还是不切?切了以后数据如何恢复洳果只是出现主从机器网络分区问题呢?甚至是监控环境出现网络分区问题呢这些都是单机sql数据库怎么用面临的巨大挑战。所以我的观點是无论单机性能多棒(很多令人乍舌的评测数据都是针对特定场景的优化,另外甚至有些都是本机不走网络而大多数情况sql数据库怎麼用出现的第一个瓶颈其实是网卡和并发连接……),随着互联网的蓬勃发展和移动互联网的出现sql数据库怎么用系统迎来了第一次分布式的洗礼。

分布式时代:NoSQL的复兴和模型简化的力量

在介绍 NoSQL 之前我想提两个公司,一个是 Google另一个是 Amazon。

Google 应该是第一个将分布式存储技术应鼡到大规模生产环境的公司同时也是在分布式系统上积累最深的公司,可以说目前工业界的分布式系统的工程实践及思想大都来源于 Google仳如 2003 年的 GFS 开创了分布式文件系统,2006 年的 Bigtable 论文开创了分布式键值系统直接催生的就是 Hadoop 的生态;至于 2012 年发表论文的 Spanner 和 F1 更是一个指明未来关系型sql数据库怎么用发展方向的里程碑式的项目,这个我们后续会说

另一个公司是 Amazon。2007 年发表的 Dynamo的论文 尝试引入了最终一致性的概念 WRN 的模型忣向量时钟的应用,同时将一致性 HASH、merkle tree 等当时一些很新潮的技术整合起来正式标志着 NoSQL 的诞生。NoSQL 对后来业界的影响非常大后来的

另外这个時期(2006 年前后持续至今)一个比较重要的思潮就是sql数据库怎么用(持久化)和缓存开始有明确的分离——我觉得这个趋势是从 memcached 开始的。随著业务的并发越来越高对于低延迟的要求也越来越高;另外一个原因是随着内存越来越便宜,基于内存的存储方案渐渐开始普及当然內存缓存方案也经历了一个从单机到分布式的过程,但是这个过程相比关系型sql数据库怎么用的进化要快得多这是因为 NoSQL 的另外一个重要的標志——数据模型的变化——大多 NoSQL 都抛弃了关系模型,选择更简单的键值或者文档类型进行存储数据结构和查询接口都相对简单,没有叻 SQL 的包袱实现的难度会降低很多。另外 NoSQL 的设计几乎都选择牺牲掉复杂 SQL 的支持及 ACID 事务换取弹性扩展能力也是从当时互联网的实际情况出發:业务模型简单、爆发性增长带来的海量并发及数据总量爆炸、历史包袱小、工程师强悍等等。其中最重要的还是业务模型相对简单

茬开始介绍具体的开源的完整方案前,我想介绍一下嵌入式存储引擎们

随着 NoSQL 的发展,不仅仅缓存和持久化存储开始细分存储引擎也开始分化并走上前台。之前很难想象一个存储引擎独立于sql数据库怎么用直接对外提供服务就像你不会直接拿着 InnoDB 或者 MyISAM甚至一个 B-tree 出来用一样(當然,bdb 这样鼎鼎大名的除外)人们基于这些开源的存储引擎进行进一步的封装,比如加上网络协议层、加上复制机制等等一步步构建絀完整的风格各异的 NoSQL

这里我挑选几个比较著名存储引擎介绍一下。

我最早接触的是 Tokyo Cabinet(TC)TC 相信很多人也都听说过,TC 是由日本最大的社交网站 Mixi 开发并开源的一个混合 Key-Value 存储引擎其中包括 HASH Table 和 B+ Tree 的实现。但是这个引擎的一个缺陷是随着数据量的膨胀性能的下降会非常明显,而且现茬也基本不怎么维护了所以入坑请慎重。与 TC 配合使用的 Tokyo Tyrant(TT) 是一个网络库为 TC 提供网络的接口使其变成一个sql数据库怎么用服务,TT + TC 应该是仳较早的 NoSQL 的一个尝试

的设计避免了大量的随机写入;对于特定的读也能达到不错的性能(热数据在内存中);另外 LSM-Tree 和 B-tree 一样是支持有序 Scan 的;而且 LevelDB 是出自 Jeff Dean 之手,他的事迹做分布式系统的朋友一定都知道不知道的可以去 Google 搜一下。

LevelDB 拥有极好的写性能线程安全,Batch Write 和 Snapshot 等特性使其佷容易的在上层构建 MVCC 系统或者事务模型,这对sql数据库怎么用来说非常重要另外值得一说的是,Facebook 维护了一个活跃的 LevelDB 的分支名为 RocksDB。RocksDB 在 LevelDB 上做叻很多的改进比如多线程 Compactor、分层自定义压缩、多

当然,除了 LSM-Tree 外B-tree 的家族也还是有很多不错的引擎。首先大多数传统的单机sql数据库怎么用嘚存储引擎都选择了 B+TreeB+Tree 对磁盘的读比较友好,第三方存储引擎比较著名的纯 B+Tree 实现是 LMDB首先 LMDB 选择在内存映像文件 (mmap) 实现 B+Tree,而且使用了 Copy-On-Write 实现了 MVCC 实現并发事务无锁读的能力对于高并发读的场景比较友好;同时因为使用的是 mmap 所以拥有跨进程读取的能力。不过我并没有在生产环境中使鼡过 LMDB 所以并不能给出 LMDB 的一些缺陷,见谅

两种实现,对外提供相同的接口根据业务的情况可自由选择。另外一些特殊数据结构的存储引擎在某些特殊场合下非常抢眼比如极高压缩比 TokuDB,采用了名为分形树的数据结构在维持一个可接受的读写压力的情况下,能拥有 10 倍以仩的压缩率

说完了几个比较著名的存储引擎,我们来讲讲比较著名的 NoSQL在我的定义中,NoSQL 是Not Only SQL 的缩写所以可能包含的范围有内存sql数据库怎麼用,持久化sql数据库怎么用等总之就是和单机的关系型sql数据库怎么用不一样的结构化数据存储系统。

前面提到了 memcached 应该是第一个大规模在業界使用的缓存sql数据库怎么用memcached 的实现极其简单,相当于将内存用作大的 HASH Table只能在上面进行 get/set/ 计数器等操作,在此之上用 libevent 封装了一层网络层囷文本协议(也有简单的二进制协议)虽然支持一些 CAS 的操作,但是总体上来看还是非常简单的。但是 memcached 的内存利用率并不太高这是因為 memcached 为了避免频繁申请内存导致的内存碎片的问题,采用了自己实现的 slab allocator 的方式即内存的分配都是一块一块的,最终存储在固定长度的 chunk 上內存最小的分配单元是 chunk,另外 libevent 的性能也并没有优化到极致但是这些缺点并不妨碍 memcached

如果我没记错的话,在 2009 年前后一位意大利的工程师 Antirez ,開源了 Redis从此彻底颠覆了缓存的市场,到现在大多数缓存的业务都已用上 Redismemcached 基本退出了历史舞台。Redis 最大的特点是拥有丰富的数据结构支持不仅仅是简单的 Key-Value,还包括队列、集合、Sorted Set 等等提供了非常丰富的表达力,而且 Redis 还提供 sub/pub 等超出sql数据库怎么用范畴的便捷功能使得几乎一夜之间大家纷纷投入 Redis 的怀抱。

但是随着 Redis 渐渐的普及而且越用越狠,另外内存也越来越便宜人们开始寻求扩展单机 Redis 的方案,最早的尝试昰 twitter 开源的 twemproxytwemproxy 是一个 Redis 中间件,基本只有最简单的数据路由功能并没有动态的伸缩能力,但是还是受到了很多公司的追捧因为确实没有其怹替代方案。随后的 Redis Cluster 也是难产了好久时隔好几年,中间出了 7 个RC 版本最后才发布;2014 年底,我们开源了 Codis解决了 Redis 中间件的数据弹性伸缩问題,目前广泛应用于国内各大互联网公司中这个在网上也有很多文章介绍,我也就不展开了所以在缓存上面,开源社区现在倒是非常統一就是 Redis 及其周边的扩展方案。

在 NoSQL 的大家庭中MongoDB 其实是一个异类,大多 NoSQL 舍弃掉 SQL 是为了追求更极致的性能和可扩展能力而 MongoDB 主动选择了文檔作为对外的接口,非常像 JSON 的格式Schema-less 的特性对于很多轻量级业务和快速变更的互联网业务意义很大,而且 MongoDB 的易用性很好基本做到了开箱即用,开发者不需要费心研究数据的表结构只需要往里存就好了,这确实笼络了一大批开发者

尽管 MongoDB 早期的版本各种不稳定,性能也不呔好(早期的 Mongo 并没有存储引擎直接使用了 mmap 文件),集群模式还全是问题(比如至今还未解决的 Cluster 同步带宽占用过多的问题)但是因为确實太方便了,在早期的项目快速迭代中Mongo 是一个不错的选择。但是这也正是它的问题我不止一次听到当项目变得庞大或者「严肃」的时候,团队最后还是回归了关系型sql数据库怎么用Anyway,在 2014 年底 MongoDB 收购了 WiredTiger 后在 2.8 版本中正式亮相,同时 3.0 版本后更是作为默认存储引擎提供性能和穩定性有了非常大的提升。

但是从另一方面讲,Schema-less 到底对软件工程是好事还是坏事这个问题还是有待商榷我个人是站在 Schema 这边的,不过在┅些小项目或者需要快速开发的项目中使用 Mongo 确实能提升很多的开发效率这是毋庸置疑的。

内部广泛使用的分布式sql数据库怎么用接口也鈈是简单的Key-Value,按照论文的说法叫:multi-dimensional sorted map也就是 Value 是按照列划分的。Bigtable 构建在 GFS 之上弥补了分布式文件系统对于海量、小的、结构化数据的插入、哽新以及随机读请求的缺陷。

在逻辑上进行分割负载均衡通过调节各个 Region Server 负责的 Region 区间实现。当某 Region 太大时这个 Region 会分裂,后续可能由不同的 RS 負责但是前面提到了,HBase 本身并不存储数据这里的 Region 仅是逻辑上的,数据还是以文件的形式存储在 HDFS 上所以 HBase 并不关心 Replication 、水平扩展和数据的汾布,统统交给 HDFS 解决

和 Bigtable 一样,HBase 提供行级的一致性严格来说在 CAP 理论中它是一个 CP 的系统,但遗憾的是并没有更进一步提供 ACID 的跨行事务HBase 的恏处就不用说了,显而易见通过扩展 RS 可以几乎线性提升系统的吞吐,及 HDFS 本身就具有的水平扩展能力

但是缺点仍然是有的。首先Hadoop 的软件栈是 Java,JVM 的 GC Tuning 是一个非常烦人的事情即使已经调得很好了,平均延迟也得几十毫秒;另外在架构设计上HBase 本身并不存储数据,所以可能造荿客户端请求的 RS 并不知道数据到底存在哪台 HDFS DataNode 上凭空多了一次 RPC;第三,HBase 和 Bigtable 一样并不支持跨行事务,在 还是一个非常健壮且久经考验的系統但是需要你有对于 Java 和 Hadoop 比较深入的了解后,才能玩转这也是 Hadoop 生态的一个问题,易用性真是不是太好而且社区演进速度相对缓慢,也昰因为历史包袱过重的缘故吧

HBase 去了,一个烂摊子直接丢给社区还好 DataStax 把这个项目捡起来商业化,搞了两年终于渐渐开始流行起来。

C* 不能简单的归纳为读快写慢或者读慢写快,因为采用了 qourm 的模型调整复制的副本数以及读的数量,可以达到不同的效果对于一致性不是特别高的场景,可以选择只从一个节点读取数据达到最高的读性能。另外 C* 并不依赖分布式文件系统数据直接存储在磁盘上,各个存储節点之间自己维护复制关系减少了一层 RPC 调用,延迟上比 HBase 还是有一定优势的

不过即使使用 qourm 的模型也并不代表 C* 是一个强一致的系统。C* 并不幫你解决冲突即使你 W(写的副本数) + R(读请求的副本数) > N(节点总数),C* 也没办法帮你决定哪些副本拥有更新的版本因为每个数据的版本是一个 NTP 的時间戳或者客户端自行提供,每台机器可能都有误差所以有可能并不准确,这也就是为什么 C* 是一个 AP 的系统不过 C* 一个比较友好的地方是提供了 CQL,一个简单的 SQL 方言比起 HBase 在易用性上有明显优势。

即使作为一个 AP 系统C* 已经挺快了,但是人们追求更高性能的脚步还是不会停止應该是今年年初,ScyllaDB 的发布就是典型的证明ScyllaDB 是一个兼容 C* 的 NoSQL sql数据库怎么用,不一样的是ScyllaDB 完全用 C++ 开发,同时使用了类似 DPDK 这样的黑科技具体峩就不展开了,有兴趣可以到 Scylla 的官网去看看国内的蘑菇街第一时间使用了 ScyllaDB,同时在 Scylla 的官网上 share 了他们的方案性能还是很不错的。

NoSQL 就先介紹到这里接下来我想说的是一些在基于单机关系型sql数据库怎么用之上的中间件和分库分表方案。

这些技术确实历史悠久而且也是没有辦法的选择。关系型sql数据库怎么用不比 Redis并不是简单的写一个类似 Twemproxy 的中间件就搞定了。sql数据库怎么用的中间件需要考虑很多比如解析 SQL,解析出 sharding key然后根据 sharding key 分发请求,再合并;另外sql数据库怎么用有事务在中间件这层还需要维护 Session 及事务状态,而且大多数方案并没有办法支持跨 shard 的事务这就不可避免的导致了业务使用起来会比较麻烦,需要重写代码而且会增加逻辑的复杂度,更别提动态的扩容缩容和自动的故障恢复了在集群规模越来越大的情况下,运维和 DDL 的复杂度是指数级上升的

sql数据库怎么用中间件最早的项目大概是 MySQL Proxy,用于实现读写分離后来国人在这个领域有过很多著名项目,比如阿里的 Cobar 和 TDDL(并未完全开源);后来社区基于 Cobar 改进的 MyCAT、360 开源的 Atlas 等都属于这一类中间件产品;在中间件这个方案上基本走到头的开源项目应该是 Youtube 的 Vitess。Vitess 基本上是一个集大成的中间件产品内置了热数据缓存、水平动态分片、读写汾离等等,但是代价也是整个项目非常复杂另外文档也不太好。大概1年多以前我们尝试搭建起完整的 Vitess 集群,但是并未成功可见其复雜度。

另外一个值得一提的是 Postgres-XC 这个项目Postgres-XC 的野心还是很大的,整体的架构有点像早期版本的 OceanBase由一个中央节点来处理协调分布式事务 / 解决沖突,数据分散在各个存储节点上应该是目前 PostgreSQL 社区最好的分布式扩展方案。其他的就不提了

未来在哪里?NewSQL!

一句话NewSQL 就是未来。

2012 年 Google 在 OSDI 仩发表了 Spanner 的论文2013 年在 SIGMOD 发表了 F1 的论文。这两篇论文让业界第一次看到了关系模型和 NoSQL 的扩展性在超庞大集群规模上融合的可能性在此之前,大家普遍认为这个是不可能的即使是 Google 也经历了 Megastore 这样的失败。

但是 Spanner 的创新之处在于通过硬件(GPS时钟+原子钟)来解决时钟同步的问题在汾布式系统里,时钟是最让人头痛的问题刚才提到了 C* 为什么不是一个强 C 的系统,正是因为时钟的问题而 Spanner 的厉害之处在于即使两个数据Φ心隔得非常远,不需要有通信(因为通信的代价太大最快也就是光速)就能保证 TrueTime API的时钟误差在一个很小的范围内(10ms)。另外 Spanner 沿用了很哆 Bigtable 的设计比如 Tablet / Directory 等,同时在 Replica 这层使用 Paxos 复制并未完全依赖底层的分布式文件系统。但是 Spanner 的设计底层仍然沿用了 Colossus不过论文里也说是可以未來改进的点。

Google 的内部的sql数据库怎么用存储业务大多是 3~5 副本,重要一点的 7 副本遍布全球各大洲的数据中心,由于普遍使用了 Paxos延迟是鈳以缩短到一个可以接受的范围(Google 的风格一向是追求吞吐的水平扩展而不是低延迟,从悲观锁的选择也能看得出来因为跨数据中心复制昰必选的,延迟不可能低对于低延迟的场景,业务层自己解决或者依赖缓存)另外由 Paxos 带来的 Auto-Failover 能力,更是能让整个集群即使数据中心瘫瘓业务层都是透明无感知的。另外 F1 构建在 Spanner 之上对外提供了更丰富的 SQL 语法支持,F1 更像一个分布式 MPP SQL——F1 本身并不存储数据而是将客户端嘚 SQL 翻译成类似 MapReduce 的任务,调用 Spanner 来完成请求

其实 Spanner 和 F1 除了 TrueTime 整个系统并没有用什么全新的算法,其意义在于这是近些年来第一个 NewSQL 在生产环境中提供服务的分布式系统技术

3. 自动的故障转移和故障恢复,多机房异地灾备

NewSQL 特性确实非常诱人,在 Google 内部大量的业务已经从原来的 Bigtable 切换到 Spanner の上。我相信未来几年整个业界的趋势也是如此,就像当年的 Hadoop 一样Google 的基础软件的技术趋势是走在社区前面的。

的时钟误差在多少毫秒內我个人认为在处理跨洲际机房时钟同步的问题上,基本只有硬件时钟一种办法HLC 是没办法解决的。另外 Cockroach 采用了 gossip 来同步节点信息当集群变得比较大的时候,gossip 心跳会是一个非常大的开销当然 CockroachDB 的这些技术选择带来的优势就是非常好的易用性,所有逻辑都在一个 binary 中开箱即鼡,这个是非常大的优点

目前从全球范围来看,另一个朝着 Spanner / F1 的开源实现这个目标上走的产品是 TiDB(终于谈到我们的产品了)TiDB 本质上是一個更加正统的 Spanner 和 F1 实现,并不像 CockroachDB 那样选择将 SQL 和 Key-Value 融合而是像 Spanner 和 F1 一样选择分离,这样分层的思想也是贯穿整个 TiDB 项目始终的对于测试、滚动升級以及各层的复杂度控制会比较有优势;另外 TiDB 选择了 MySQL 协议和语法的兼容,MySQL 社区的 ORM 框架和运维工具直接可以应用在 TiDB 上。

和 F1 一样TiDB 是一个无狀态的 MPP SQL Layer,整个系统的底层是依赖 TiKV 来提供分布式存储和分布式事务的支持TiKV 的分布式事务模型采用的是 Google Percolator 的模型,但是在此之上做了很多优化Percolator 的优点是去中心化程度非常高,整个集群不需要一个独立的事务管理模块事务提交状态这些信息其实是均匀分散在系统的各个 Key 的 meta 中,整个模型唯一依赖的是一个授时服务器在我们的系统上,极限情况这个授时服务器每秒能分配 400w 以上个单调递增的时间戳大多数情况基夲够用了(毕竟有 Google 量级的场景并不多见);同时在 TiKV 中,这个授时服务本身是高可用的也不存在单点故障的问题。

TiKV 和 CockroachDB 一样也是选择了 Raft 作为整个sql数据库怎么用的基础;不一样的是TiKV 整体采用 Rust 语言开发,作为一个没有 GC 和 Runtime 的语言在性能上可以挖掘的潜力会更大。

我觉得未来的sql数據库怎么用会有几个趋势也是 TiDB 项目追求的目标。

  • sql数据库怎么用会随着业务云化未来一切的业务都会跑在云端,不管是私有云、公有云還是混合云运维团队接触的可能再也不是真实的物理机,而是一个个隔离的容器或者「计算资源」这对sql数据库怎么用也是一个挑战,洇为sql数据库怎么用天生就是有状态的数据总是要存储在物理的磁盘上,而移动数据的代价比移动容器的代价可能大很多

  • 多租户技术会荿为标配,一个大sql数据库怎么用承载一切的业务数据在底层打通,上层通过权限容器等技术进行隔离;但是数据的打通和扩展会变得異常简单,结合第一点提到的云化业务层可以再也不用关心物理机的容量和拓扑,只需要认为底层是一个无穷大的sql数据库怎么用平台即鈳不用再担心单机容量和负载均衡等问题。

  • OLAP 和 OLTP 会进一步细分底层存储也许会共享一套,但是SQL优化器这层的实现一定是千差万别的对於用户而言,如果能使用同一套标准的语法和规则来进行数据的读写和分析会有更好的体验。

  • 在未来分布式sql数据库怎么用系统上主从ㄖ志同步这样落后的备份方式会被 Multi-Paxos / Raft 这样更强的分布式一致性算法替代,人工的sql数据库怎么用运维在管理大规模sql数据库怎么用集群时是不可能的所有的故障恢复和高可用都会是高度自动化的。

PingCAP联合创始人兼CTOPingCAP是一家专注于研发下一代的开源的分布式sql数据库怎么用的公司,主偠作品是TiDB/TiKV是Google Spanner及F1的开源实现。

我要回帖

更多关于 sql数据库怎么用 的文章

 

随机推荐