在分布式数据库领域中,高性能 + 强一致性事务是代表数据库水平高低的重要象征,这个领域最高水平的数据库是 Google Cloud Spanner 和 Azure Cosmos DB 以及 Apple 最近开源的 FoundationDB,YugaByte DB 是这个领域的另外一个开源数据库,虽然知名度不高,也没有经过生产实践检验,但是相比 Google 大公司把这种技术当成看家本事不示于人的做派相比,YugaByte DB 设计思想可以通过源码共享与世人。
值得一提的是,2019 年 7 月 16 日,YugaByte DB 创始人兼 CTO Karthik Ranganathan 在其官方博客发文宣布 YugaByte DB 已经 100% 开源,遵守 Apache 2.0 开源许可。
YugaByte DB (GitHub)是一个高性能、云原生的分布式 SQL 数据库,目前2.0 版本已经发布。
YugaByte DB 与 PostgreSQL 兼容,下面是它与 PostgreSQL 兼容的几个特性:
1. 所有的 PostgreSQL 数据类型:包括数组和用户定义的类型等
2. 内置函数和表达式
3. 具有可序列化和快照隔离级别的分布式事务
4. 索引:包括部分索引
5. 外键
6. 用于加速应用程序开发的视图和子查询
7. 基于角色的权限访问控制(RBAC)
8. 高级功能,如存储过程和触发器,支持开箱即用
使用快速启动和客户端驱动程序为最流行的语言构建 YSQL 支持的应用程序,比以往任何时候都容易,其中包括:
1. Java
2. Node.js
3. Go
4. Python
5. Ruby
6. C#
7. PHP
8. C++
9. C
高性能遇到云原生
YSQL 不仅兼容 PostgreSQL 和 Jepsen Test,与 Amazon Aurora 相比,YSQL 的可伸缩性是其最大吞吐量的 10 倍。YSQL 实现了 45k 个操作的写入吞吐量,延迟仅为 4.5ms。与类似硬件配置文件上的其他分布式 SQL 产品相比,这种吞吐量几乎是 AWS Aurora 和 Cockroach DB 的 2 倍。与 Aurora 相比,Yugabyte CQL(YCQL) API 在 3 倍的延迟下实现了 3 倍的高吞吐量。
Jepsen Tests
YSQL Jepsen Test 的主要重点是测试分布式事务的新的可序列化隔离级别,即 ACID 中的“i”。作为一个完全关系型的 SQL API,YSQL 支持可序列化和快照隔离,而半关系型 YCQL API 只支持快照隔离级别。
传统 RDBMS 的在线迁移&基于 Blitzz 的 NoSQL
企业能够使用分布式数据复制软件 Blitzz,实现从各种数据库如 Oracle、SQLServer、MySQL、MongoDB、DynamoDB、Apache Cassandra、PostgreSQL 到 Yugabyte DB 的零停机时间迁移(zero-downtime)。Blitzz 插件进入到源数据库的 CDC 流,以便不仅自动迁移表数据,而且自动迁移相关的元数据(表、索引和视图的定义)。
除此之外,还有一些测试中的特性:
1. Change Data Capture:(CDC)允许外部客户端对数据库中数据进行的修改。
2. Multi-Master & Master-Slave Clusters:支持多主配置和主从配置
3. Deep Ecosystem Integrations:2.0 兼容并集成了许多开发人员已经熟悉的流行技术
4. New Cluster-Aware JDBC Driver:目前正在开发一个标准 JDBC 驱动程序的集群版本,称为 Yugabyte JDBC
5. Spring Application Framework for Java:该模块目前支持 JDBC 和 JPA 模式,目前正在增强以支持反应性关系数据库连接(R2DBC)方法
补充知识:
Yugabyte DB 与 MongoDB、Cockroach Labs,Confluent(Apache Kafka 背后的主要商业公司)和 Elastic(2018-2019 年)所做的开源更改,如下图所示:
YugaByte DB 整体架构:
YugaByte DB 的查询层结构:
四个节点的 YugaByte DB 的结构:
YugaByte DB 的存储层是基于 RocksDB (是一个来自 Facebook 的可嵌入式的支持持久化的 key-value 存储系统,也可作为 C/S 模式下的存储数据库,但主要目的还是嵌入式。RocksDB 基于 LevelDB 构建,关于 RocksDB 的性能说明)的,结构如下: