2022上半年盘点:20+主流数据库重大更新及技术要点汇总
来源:新闻资讯 /
时间: 2024-11-23
MariaDB[test]> set global binlog_alter_two_phase=1;
MariaDB[test]> set binlog_alter_two_phase=1;
MariaDB[test]> alter table sbtest1 add index IX_pad(pad);
-
符合ACID的分布式数据库,适用于海量数据、高并发和强一致性在线事务处理(OLTP); -
弹性动态横向扩容; -
Paxos高可用性; -
数据分布通过Xpand水平划分为切片,并将切片的副本(默认两个)分布在节点之间; -
无限读写扩展,采用无共享架构; -
支持复杂查询(例如JOIN和分组聚合操作)。
-
排序性能提升显著,尤其是在需要排序的数据量超过了work_mem的情况下,in-memory的排序性能也有所提升; -
group by会自动优化列的顺序; -
postgres_fdw外部表支持下推case when表达式; -
窗口函数row_number(), rank()和count()性能提升; -
full-page-write全页写支持lz4和zstd压缩算法; -
\copy元命令加载性能提升; -
pg_upgrade和pg_dump性能提升。
-
支持直接发布某个模式下的所有表; -
发布端支持指定某些列进行发布,比如create publication pub1 for table t2(info); -
发布端支持过滤条件,比如create publication p2 for table t1, t2 where (e = 99); -
原生逻辑复制支持预备事务。
-
select distinct支持并行,并行特性继续加强; -
postgres_fdw()支持并行提交,之前的版本是本地事务提交之后再串行提交远端事务; -
外部表的查询现在可以在更多的情况下使用并行扫描。
-
支持merge语法,以前的版本可以使用insert ... on conflict替代; -
新增多种正则表达式,regexp_count(),regexp_instr(),regexp_like()和regexp_substr(); -
新增SQL/JSON构造器; -
新增SQL/JSON查询函数,json_exists()、json_query()和json_value(); -
唯一约束和索引支持将NULL视为不同的值,之前的版本需要使用表达式索引进行限制; -
日志支持JSON格式。
-
HTAP能力:全面实现向量化引擎,支持所有基础算子向量化,复杂查询场景下带来数量级的性能飞跃,TPC-H性能相比OceanBase 2.2.x提升10倍。 -
性能:优化Nest Loop Join,性能提升1倍;支持多表关联SQL语句转化为Nest Loop Join执行计划,通过算子优化大幅提升多表关联性能;提升Table API流式扫描性能,OceanBase 3.2.3流式扫描性能达到HBase 2.4.6的2.2倍。 -
兼容性:Oracle模式新增DBLink功能,支持用户通过DBLink访问Oracle的数据;MySQL模式引入Oracle模式的Sequence功能。兼容MySQL 8.0 CTE和CHECK检查约束功能。 -
诊断监控:存储过程支持GET DIAGNOSTICS诊断,可使用该功能获取SQL语句或者存储过程执行时的错误信息,帮助用户快速定位、排查解决问题;OCP引入SQL画像和事务画像功能。 -
安全性:新增备份恢复完整性校验功能,帮助用户快速发现磁盘静默故障;ODC支持操作记录审计功能,自动记录所有的数据库变更操作。
-
支持OBKV能力:提供HBase模型和Table模型的NoSQL能力。读写综合性能超越HBase,且能复用OceanBase底层的强一致和异地容灾能力,并避免了HBase的性能抖动问题。 -
支持兼容MySQL 5.7版本的JSON功能,提供半结构化数据支持:很多用户会使用JSON类型存储半结构化数据以弥补关系模型的不足,相比TEXT和LOB类型,JSON类型存储半结构化数据时性能更好,支持高效索引和合法性校验。 -
支持回收站中的对象恢复,极大降低因误操作导致的潜在风险:表格删除后进入到回收站,Flashback Table能够将回收站误删除的表格恢复出来,防止误操作。 -
CDC支持大事务:通过新增持久化模式,数据在同步开始前先进行本地临时存储,避免CDC传输大事务时因内存溢出OOM而导致的断开链接问题。 -
支持Kubernetes Operator:用户可以通过容器的形式将OceanBase运行在公有云或私有化部署的Kubernetes集群。 -
部署更加便捷:面向开发者提供更加友好的使用体验。将Docker镜像由2C10G优化至2C8G,降低开发者在个人电脑使用OceanBase的门槛。另外,新增了ARM架构支持。
NoSQL
-
Redis Functions:使用服务端的脚本来扩展Redis的新方法; -
ACLv2:基于键的更细粒度的访问权限管理,允许用户使用selectors管理多组命令规则; -
集群:支持分片(特定节点)发布/订阅; -
大多数情况下对子命令的一流的处理(影响ACL类别、info命令的统计等); -
Multi-Part AOF:将AOF作为多个AOF文件存储在一个文件夹中避免AOF重写带来的性能开销;可以通过配置选项appenddirname设置存放多个AOF文件的存放目录; -
命令键规格:是客户端查找key参数及其读/写目的的更好方法; -
集群:支持主机名,而不仅仅是IP地址; -
改进了对网络缓冲区消耗的内存的管理,以及一个用于当总内存超过限制时删除客户端的配置选项maxmemory-clients; -
集群:断开集群总线的连接以防止不受控制的缓冲区增涨的机制; -
AOF:时间戳注释和支持指定时间点的恢复,对于故障恢复非常有用; -
Lua:支持EVAL脚本中的函数标志;支持Verbatim和Big-Number类型的RESP3协议的回复;通过redis.REDIS_VERSION,redis.REDIS_VERSION_NUM获取Redis版本; -
Redis 7.0开始对RDB文件使用了新版本10格式,与旧版本不兼容,升级时需要仔细阅读,提前测试好兼容性,不可回退; -
为Redis Functions和eval Lua脚本添加API以显式检查ACL; -
键空间事件支持新建的key; -
用listpack替换Hash、List、Zset中的ziplist,以提升性能; -
CLUSTER SHARDS命令弃用CLUSTER SLOTS,解锁集群管理更多技巧; -
CONFIG SET/GET可以在一次调用中处理多个配置; -
升级jemalloc版本到5.2.1; -
list类型支持添加存储大于4GB的元素; -
配置:repl-diskless-sync(无盘复制)现在默认设置为yes; -
移除gopher协议的支持; -
现在允许在数据加载期间使用CONFIG SET、REWRITE、RESETSTAT等命令,管理起来更加友好; -
SCRIPT LOAD和SCRIPT FLUSH不再传播到副本/AOF; -
新增许多命令,如:ZMPOP、BZMPOP、LMPOP, BLMPOP、SINTERCARD、ZINTERCARD等。
NewSQL
-
稳定性:TiDB 6.1作为TiDB 6系版本的长期支持版(Long Term Support),在多个层面夯实产品的稳定性,例如提升TiKV高压场景下的内存稳定性,解决了由于Raft Log复制流量过大导致的OOM问题。 -
性能:TiDB 5.4版本中TiFlash存储层大幅优化行存到列存转码效率,在不同并发情况下实测吞吐性能提高60%~90%;新增索引合并查询优化,允许优化器在查询处理中同时选择使用多列的索引以减少回表。 -
HTAP能力:分析引擎在MPP推出后不断走向成熟,并于4月1日在GitHub开源。6.0版本中TiFlash新增100多个常用内建函数以及若干表关联算子,引入了全新的弹性线程池,这使得TiDB MPP模式在短查询下达到同等计算资源倍增的计算性能,且在高压力查询时稳定性更佳。6.1版本中,分区表的实验特性GA,新增TiFlash MPP下的窗口函数支持。 -
可管理性:TiDB 6.0引入数据放置框架,提供了针对分区/表/库级数据在不同标签节点之间的自由放置接口,用户可以针对某张表,某个数据分区的存储位置做出自定义的选择;发布企业级集群管理组件TiUniManager,提供对TiDB集群的全生命周期可视化管理;开放了智能诊断服务PingCAP Clinic的预览,集成了诊断数据采集、智能诊断、智能巡检、云诊断平台等功能。 -
数据生态:TiDB 6.0版本中TiCDC对于增量数据的提取、排序、加载、投递等多个处理流程都进行了优化。TiDB 6.1引入了用户级别锁和TiCDC下的Avro格式向Kafka同步数据的支持。TiDB 5.4强化了数据备份效率,在支持Amazon S3、Google Cloud Storage的基础上,新增对Azure环境的支持。
上一篇: 为什么物联网用时序数据库
下一篇: 物联网大数据存储与管理技术研究