前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分布式数据库评估维度分析

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

作者头像
用户5548425
发布2021-04-09 16:20:32
1.3K0
发布2021-04-09 16:20:32
举报
文章被收录于专栏:韩锋频道韩锋频道

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

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代理组件的高可用。
  • 高可靠:数据的整体可靠性,例如常见的通过多副本技术保证,且副本间是否满足强一致等。还包括通过全量+增量+日志的备份策略,满足数据还原需求。
  • 容灾:提供单机、机架、可用区、同地域、跨地域不同层级的容灾能力。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-04-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 韩锋频道 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档