上章节介绍了昆仑分布式数据库的技术特点,这章紧接上文带来数据库的技术劣势。
一、开源、扬众长避众短
1.1 集3大次要数据库Oracle、MySQL、PostgreSQL的强项于一身并产生1+1>>2的放大效应,能够宽泛汇聚社区能量,产生短暂的价值和生命力。
- Oracle:存储引擎,查询处理。
innodb齐全听从Oracle的存储引擎的设计。
- MySQL:innodb存储引擎和 binlog 复制(RBR)。
- PostgreSQL:查询处理能力在所有开源RDBMS中最强。
- MySQL&PostgreSQL开源社区的人力资源和技术资源。
1.2 防止它们的弱项
- Oracle:硬件和软件低廉,老本过高:无奈做到平安可控,政策合规。
- MySQL:查询处理的性能和性能无限:单机数据库,无奈程度弹性扩容。
- PostgreSQL:存储引擎不适宜重负载OLTP负载.
二、查询处理能力
2.1 计算节点反对PostgreSQL的所有次要查询处理性能。
- 反对绝大多数DDL和所有DML语法和性能。
例外:外键和触发器,tablespace和存储相干性能,WAL replication。
- 反对所有根本数据类型。
数值,字符串,text/blob,工夫1日期/工夫戳/money/enum,序列等等。
- 反对高级查询处理性能。
* 任意跨shard的多表连贯,子查问,存储过程。* OLAP剖析能力:汇集函数,window函数,grouping sets, cube, rollup。* CTE,视图,物化视图,真prepared stmt,jit.
2.2 计算节点兼容MySQL和Oracle的罕用SQL语法(*)。
- 反对MySQL客户端协定(*)
- 去O的迁徙工作量较小,技术人员技能可平移,学习曲线平缓(*)
三、全方位数据安全保障
3.1 在数据源头控制数据拜访更加安全可靠。
- 对立/多层级/灵便动静配置访问控制规定。
- 利用层面访问控制的多种缺点。
* 不对立:多种利用拜访同一个数据库,每个利用都须要规定配置甚至编码实现。* 不灵便动静:硬编码的访问控制规定,不容易批改。* 不平安:控制策略和规定自身会泄露信息。
3.2 多层级细粒度的访问控制。
- 多层级的用户/角色。
- 多层级的数据库对象:数据库/schema/表/视图/列。
- 多层级治理各种数据库对象的访问控制规定。
3.3 用户数据全零碎加密:数据文件和binlog文件以及日志文件均可加密;
SSL全链路加密,平安传输数据; 多级(database,schema,table,view,column)细粒度访问控制。
四、兼容并蓄
4.1 计算节点凋谢架构。
- Extension:无缝兼容PostgreSQL生态,PostGIS等。
- FDW(foreign data wrapper):能够实现接口来读取所有支流数据源。
* hadoop生态:hbase,hive等。* 支流数据库:Oracle,MSSQL Server,DB2,MySQL,PostgreSQL等等* 列存储(OLAP)和时序数据库。
4.2 计算节点其余劣势。
- 欠缺的i18n/globalization/localization反对。
时区,字符集和collation。
多语言能力。
五、多层级多方面的扩大能力
5.1 按需弹性程度扩大能力。
- 多个读写节点,解决读写负载都能够按需扩大解决能力。
- 无共享(sharenothing),无单点依赖。
- 无性能瓶颈,无计算/存储能力瓶颈。
- 按需增减计算节点和存储集群/节点。
- 通明的按需扩大,业务零碎和最终用户无感知。
- 存储集群扩容速度可调,对数据源节点的计算/存储/网络资源耗费可控。
5.2 全零碎并行计算能力。
- 充分发挥服务器的并行工作能力。
多核并行。
存储系统并行。
网络系统并行。
六、其它劣势
6.1 不必固定分区数量,而是能够每个表不同的分区数量,分区规定(3种),并且能够应用任意数量的分区列,甚至对于小表能够齐全不分区。
6.2 存储集群
- 性能当先:分布式事务处理性能大大高于社区版本http//www.zettadbcom/blogs/perf-cmp-mysql。
- 齐备的容灾能力:填补社区版MySQL80的分布式事务处理的容灾能力空白。
* https://fosdemorg/2021/schedule/event/mysqlxal* 本技术分享视频的国内地址:https//wwwbilibilicom/video/BV1zo4y1d7pu
- 原生的onlineDDL性能:疾速加列。
6.3 昆仑数据库 VS MySQL:应用昆仑数据库治理小规模数据的劣势。
- 放大了单-MySQL集群的能力,按需程度扩大能力和更弱小的数据分析能力。
- 更简略不便地应用MySQL集群:主动切主并保护mysql集群状态。
- 并行查询处理,备机读。
6.4 集群构造简略,不依赖第三方模块和软件(etcd/zookeeper等)
- 产品质量可控。
- 人力累赘小。
留神:上方(*) 的条目是行将反对的性能
*KunlunDB我的项目已开源
【GitHub:】
https://github.com/zettadb
【Gitee:】
https://gitee.com/zettadb
END