分布式数据库评估维度分析

2021-04-09 16:20:32 浏览数 (1)

近些年来,数据库产业发展迅猛,各种数据库产品层出不穷。那么如何选择一款数据库产品成为很多企业面临的问题?特别是随着数据规模、计算能力等需求,分布式数据库产品成为很多企业的新宠。那么这类数据库较传统数据库又有何差异?在数据库选型中,需要注意哪些方面?本文尝试描述数据库(特别是分布式数据库)选型需考虑维度,希望帮助企业可以做出最适合的选择。

1. 数据库评估维度概览

人生基本上就是两件事,选题和解题。最好的人生是在每个关键点上,既选对题,又解好题。人生最大的痛苦在于解对了题,但选错了题,而且还不知道自己选错了题。正如人生最大的遗憾就是,不是你不行,而是你本可以。

因需对比的维度很多,故将其大致做了个分类,归纳为下面脑图所示。下文将按各分类详细描述。在各对比维度分类之上,又抽象出非交互式测试与交互测试两大类。之所以做了这样的划分,是因为曾参与过多款数据库产品评测,大量的人工测试方式非常低效。这里是尝试将部分对比维度分类提取出来,可尝试使用自动化方式解决上述问题。则后者的交互式测试,则还需要人工介入;但可通过此方法固化对比维度,减少交互成本。

2. 评估维度:基本功能篇

人生基本上就是两件事,选题和解题。最好的人生是在每个关键点上,既选对题,又解好题。人生最大的痛苦在于解对了题,但选错了题,而且还不知道自己选错了题。正如人生最大的遗憾就是,不是你不行,而是你本可以。

  • 表达式
  • 操作符
  • 字符集:支持常规的UTF8MB4及定长字符集GBK等。
  • 函数:支持基本函数、扩展函数(如正则函数、安全函数、窗口分析函数等)、自定义函数。
  • 计算:虽然不提倡在数据库端进行计算,但如果支持计算的话,将有利于将传统数据库应用迁移到新型数据库中。在分布式架构下,这部分实现较难。

3. 评估维度:数据对象篇

人生基本上就是两件事,选题和解题。最好的人生是在每个关键点上,既选对题,又解好题。人生最大的痛苦在于解对了题,但选错了题,而且还不知道自己选错了题。正如人生最大的遗憾就是,不是你不行,而是你本可以。

  • 序列:对分布式数据库,需提供全局唯一、单调递增的序列对象。
  • 视图:对分布式数据库,需提供满足全局性、一致性的视图访问。扩展要求,可提供参数视图、动态视图、物化视图等能力。
  • 约束:支持常规的主键(PK)、外键(FK)、唯一(UK)、非空(NULL)、条件(CHECK),特别是分布式条件下的约束能力。此外,支持非分布键下的约束。
  • 表:支持常规的表(例如堆表、簇表)。表的存储方式是行存、列存亦或是混存。支持全局表(广播表)、ER表、追加表、只读表等特殊表类型。
  • 索引:支持多种类型索引(如B树、哈希等),支持函数索引等。对于分布式环境支持全局索引、二级索引。对于分区条件下,是否支持本地、全局分区索引。
  • 同义词
  • 数据类型:对多模场景,丰富的数据类型十分必要。此外,在金融场景中,对高精度数据类型也有特殊的要求。
  • 分片:支持的分片算法,支持自定义分片策略。在单分片键基础上,支持多字段分片或自定义分片等。
  • 分区:支持的分区类型(如HASH、LIST、RANGE等),支持复合分区。常规分区操作支持增加、删除、移动、截断、分裂、合并等。

4. 评估维度:SQL篇

人生基本上就是两件事,选题和解题。最好的人生是在每个关键点上,既选对题,又解好题。人生最大的痛苦在于解对了题,但选错了题,而且还不知道自己选错了题。正如人生最大的遗憾就是,不是你不行,而是你本可以。

  • DML
  • DDL
  • DQL:对于分布式数据库而言,灵活复杂的查询能力实现难度较高。很多产品在这部分都有所取舍,没有实现全集。

5. 评估维度:内核功能篇

人生基本上就是两件事,选题和解题。最好的人生是在每个关键点上,既选对题,又解好题。人生最大的痛苦在于解对了题,但选错了题,而且还不知道自己选错了题。正如人生最大的遗憾就是,不是你不行,而是你本可以。

  • 锁:支持乐观、悲观锁机制。提供完善的死锁检测机制。
  • 事务:支持标准的ACID能力。
  • 隔离级:提供常规的RC、RR等隔离级别,支持MVCC,提供全局一致性数据读取能力,支持强一致性的数据读取并可读到最新数据。
  • 并行:支持并行计算,已利用多核能力加速执行。

6. 评估维度:性能篇

人生基本上就是两件事,选题和解题。最好的人生是在每个关键点上,既选对题,又解好题。人生最大的痛苦在于解对了题,但选错了题,而且还不知道自己选错了题。正如人生最大的遗憾就是,不是你不行,而是你本可以。

  • 通用模型:支持通过常规的事务型、分析型测试标准,提供基础的性能测试指标。
  • 业务模型:通过抽象业务模型,提供近似业务访问的性能指标。
  • 其他场景:提供诸如导入导出等场景的性能数据。

7. 评估维度:安全篇

人生基本上就是两件事,选题和解题。最好的人生是在每个关键点上,既选对题,又解好题。人生最大的痛苦在于解对了题,但选错了题,而且还不知道自己选错了题。正如人生最大的遗憾就是,不是你不行,而是你本可以。

数据管理

  • 数据加密:数据存储加密,是保证数据安全的根本方法。即使发生了数据泄漏,也不用担心数据为他人所用。针对加密的要点在于加密算法及效率,除常规加密算法外,是否支持国密算法及自定义算法?此外,最为重要的是对应用透明。
  • 数据传输:在数据传输方面,支持数据的加密传输方式。
  • 数据访问:在数据访问方面,支持行级、列级数据访问控制。
  • 生命周期管理:建立全生命周期的数据安全策略,在后续的数据归档、备份、导出直至销毁阶段均需考虑必要的数据安全。
  • 敏感数据:具备建立敏感数据识别、分级,根据不同级别采取不同策略,支持数据脱敏访问。

用户管理

  • 用户:具备唯一标识的用户名,采用满足复杂度要求的口令策略并加密存储。同时,具备多种鉴权方式。
  • 角色(组):通过角色或角色组方式,简化权限管理。支持所谓“三权分立”,即系统管理员、审计管理员、安全管理员三权分立
  • 权限:具备多种对象不同粒度的权限控制能力。

访问控制

  • 对象:针对不同对象,可设置访问、执行、变更等不同的控制权限。
  • 集群:在多个应用共享集群时,应支持多个应用间自有数据库对象的访问控制。
  • 会话:支持基于IP、端口、数据库、用户和密码的连接认证功能,会话应进行安全隔离,不同会话应具备独立的上下文。
  • 节点:分布式数据库的不同节点(如计算节点、存储节点),支持白名单信任策略,复合要求的地址才能连接访问。

安全管理

  • 密钥管理
  • 安全告警
  • 安全审计:支持安全审计的长久保存。

8. 评估维度:兼容篇

人生基本

  • 客户端:支持标准的客户端访问方式。提供不同语言的访问驱动。
  • 应用:支持常规数据应用的访问。
  • 语法:兼容部分事实标准,例如Oracle、MySQL等。这对于业务的迁移意义很大。
  • 硬件:支持多种硬件平台,特别是国产化硬件平台。

9. 评估维度:运维篇

人生基本

  • 备份恢复:支持物理备份、逻辑备份。支持全量、增量备份。提供时点还原能力。提供对象级闪回能力。
  • 数据迁移:在分布式环境下,提供全局一致性的数据迁移能力。
  • 系统配置
  • 租户管理
  • 审计管理
  • 容量管理
  • 版本升级
  • 监控

10. 评估维度:架构篇

人生基本

  • 读写分离

11. 评估维度:实例管理篇

人生基本

  • 执行计划:支持分布式环境的执行计划显示。
  • 统计信息
  • 空间管理
  • 模式管理
  • 时区
  • 可扩展:支持不同层次的扩展能力,从前端接入层、计算层到存储层。

12. 评估维度:高可用篇

人生基本

  • 高可用:高可用包括多种维度,例如服务层高可用、数据层高可用、接入层高可用。服务高可用包括全部组件支持高可用;出现组件异常时自动恢复;在常规变更操作时(例如扩缩容)支持高可用。数据高可用,则从数据的RTO角度来考虑。接入层,则是指诸如Proxy代理组件的高可用。
  • 高可靠:数据的整体可靠性,例如常见的通过多副本技术保证,且副本间是否满足强一致等。还包括通过全量 增量 日志的备份策略,满足数据还原需求。
  • 容灾:提供单机、机架、可用区、同地域、跨地域不同层级的容灾能力。

0 人点赞