可用于数据库对比评估的FURPS+模型
【转载声明】本文为转载文章,原作者「白鳝」,版权归原作者所有。 原文链接:https://mp.weixin.qq.com/s/dU5ipy73jrBnlzVkxeSK3w
公众号:杨建荣的学习笔记 · 作者:白鳝 · 发布:2023-03-05 22:10:02 · 原文链接
经常有朋友问我,目前在做信创数据库选型,有没有关于数据库选型方面的模型建议。实际上数据库选型是十分复杂的问题。我也参加过一些企业的数据库选型、对比和评估工作,也参与过一些企业的评估模型的审核,我总是觉得很多企业的数据库选型对比不够科学,通过某些模型评估出来的结果往往不大可信。实际上数据库选型是一件十分困难的事情,哪怕有些企业通过十分严格的测试,也很难做得很好,因为测试和评估的模型有可能会有问题。设计一个科学的数据库选型评估模型是一件十分考验客户能力的事情。大多数数据库用户不具备这个能力。
如果说想找一个较为科学的参考模型,我们一般会采用FURPS模型来对数据库做全面的评估。FURPS模型是HP最早提出的,用于评估软件系统的质量,1992年IBM在此基础上做了优化,提出了FURPS+评估模型,目前这个模型在国外也被广泛地应用于数据库领域的评估。FURPS是五个英文单词的首字母,分别表示:
l功能性 (Functionality):软件系统所提供的功能,包括准确性、适当性、互操作性、安全性等。功能评估是数据库评估的基础,不过评估功能的时候要根据用户的应用特点来评估。比如说对于Oracle数据库,普通用户使用到的功能可能仅仅是其中的5%,那么我们就没必要用其他的本企业不可能用到的95%来进行功能评估。
l可用性 (Usability):软件系统易用性和人机交互性能,包括可理解性、易学性、操作性、可访问性等。实际上可用性是特别重要的评估内容,也是被严重忽视的。实际上数据库产品可能在功能上很难区分好坏,但是在可用性方面差异巨大。如果选择了一个不太好用的数据库,那么今后的使用成本将会很高,因此我们不应该忽略这个评估项。
l可靠性 (Reliability):软件系统在一定条件下的稳定性和可靠性,包括可用性、可恢复性、容错性、可维护性等。可靠性对于数据库来说十分重要,不过可靠性的评估比较困难。一般来说我们需要通过较长时间的POC测试才能对可靠性做出较为客观的评估。
l性能 (Performance):软件系统的性能特征,包括效率、容量、速度、响应时间、吞吐量等。性能是目前大家比较关注的方面,不过目前大多数数据库对比分析的性能评估都不够科学。数据库性能必须是以保障客户应用场景为依据的,TPC-C/TPC-H等基准测试往往并不足以证明数据库产品能否满足企业应用的需要。因此选择企业常见应用场景进行对比测试才比较科学。
l支持性 (Supportability):软件系统的可维护性和可支持性,包括可测试性、可修改性、可重用性、可移植性、可互换性等。
实际上,这些年我们对不同的数据库产品也是基于FURPS模型进行分析,今天我给大家简单介绍一下如何使用FURPS来评估和对比不同的数据库产品。如果我们把FURPS模型用于数据库对比评估,可以设计成下面的表格:
| 评估因素 | 指标 | 数据库 A | 数据库 B | 数据库 C |
| 功能性 | 数据存储和管理功能 | 4 | 3 | 5 |
| 数据查询和报表功能 | 5 | 4 | 4 | |
| 安全和权限管理功能 | 4 | 4 | 3 | |
| 可用性 | 用户界面和操作性 | 4 | 3 | 4 |
| 学习曲线和易用性 | 5 | 4 | 3 | |
| 可靠性 | 可用性和可恢复性 | 4 | 5 | 3 |
| 容错性和安全性 | 4 | 5 | 4 | |
| 可维护性和扩展性 | 3 | 4 | 3 | |
| 性能 | 数据库的响应时间和吞吐量 | 4 | 5 | 4 |
| 数据库的容量和负载能力 | 4 | 4 | 5 | |
| 优化器能力 | 4 | 4 | 4 | |
| 支持性 | 文档和API | 4 | 5 | 3 |
| 开发者和管理员文档 | 3 | 5 | 4 | |
| 支持和维护服务 | 4 | 5 | 3 | |
| 总分 | – | 53 | 56 | 47 |
上面的每个评分项我们都设置为5分,分值可以根据用户对这些产品的认知,不一定精确,但是高低代表了客户对数据库的这个项目的认知。最终的总分的高低也仅仅会用来给这些产品排序,而不代表更多的意思。
上面的表格仅仅是一个十分简单的模型,针对上面的简要模型,我们可以继续细化。下面是一个更为细化的评估模型,是我们团队在这十来年做数据库对比分析和测试中经常拿来参考的模型,今天把它开放出来供大家参考。需要对数据库进行评估的朋友可以根据自己的应用系统特点和业务场景,对这些评估项目进行裁剪。如果觉得自己的系统中永远用不到的点,一定要删除,否则会对评估结果的客观性产生较大的影响。评估项目裁剪的合理性是评估准确性的基础。
l功能性 (Functionality)
-数据存储和管理功能
u数据库支持的数据类型和数据结构
u数据库LOB字段的存储方式与访问方式
u数据库字符集的支持
u数据库的数据完整性和一致性
u数据库的索引和查询优化功能
u数据库的物理备份/逻辑备份功能
u数据库物理复制/逻辑复制能力
u数据库多租户能力
u数据库资源管理与控制能力
-数据OLTP和OLAP功能
u数据库支持的查询语言和操作符
u数据库查询的响应时间和吞吐量
u数据库表连接的能力与限制
u存储过程、触发器、物化视图、DBLINK等高级特性
u序列号,自增字段,伪列,虚拟索引等扩展功能
u数据库的报表生成和可视化功能
u数据库支持的数据导入和导出功能
u索引的种类,包含B树、位图、函数、HASH、布鲁姆等
-安全和权限管理功能
u数据库的安全和加密机制
u数据库的用户和角色管理功能
u数据库的审计和日志记录功能
u数据库的权限控制和访问控制功能
u数据库访问是否支持三权分立
u是否支持透明数据加密
u客户端与服务器通讯是否支持SSL
l可用性 (Usability)
-用户界面和操作性
u数据库的图形化管理工具和命令行工具
u数据库的操作简易性和可配置性
u数据库的错误提示和帮助文档
u数据库访问接口是否能支持企业应用
u数据库支持的编程语言是否能支持企业应用
-学习曲线和易用性
u数据库的易学性和上手难度
u数据库的用户文档和教程的质量
u第三方书籍与技术文档的丰富度
u原厂培训的质量
u第三方培训的丰富程度与质量
u数据库的在线社区和支持论坛的技术水平
u产品在数据库社区的知名度与热度
l可靠性 (Reliability)
-可用性和可恢复性
u数据库的稳定性和可用性
u数据库的故障恢复和数据恢复功能
u数据库的备份和恢复策略
u高可用与双活方案与案例的丰富程度
-容错性和安全性
u数据库的容错和自愈能力
u数据库的安全和加密机制
u数据库的漏洞和攻击防御能力
-可维护性和扩展性
u数据库的可维护性和维护成本
u数据库的可扩展性和可升级性
u数据库的文档和API
l性能 (Performance)
-数据库的响应时间和吞吐量
u数据库的读写速度和并发性
u数据库的查询响应时间和吞吐量
u数据库的网络传输速度和延迟
u是否支持索引自动优化助手
-优化器能力
u是否支持RBO/CBO/RBO+CBO等多种模式的优化器,并且可以通过参数选择
u是否支持NESTED LOOP、HASH JOIN、BITMAP JOIN、SORT MERGE JOIN等多种连接方式
u是否支持HINT/OUTLINES/SQL BASELINE/SQL PROFILE等执行计划绑定
uSQL改写的能力强弱
uHASH JOIN所覆盖的范围
u多表连接选择驱动表的准确性
u是否支持采集与分析内存中执行计划
uSQL优化工具的能力
-数据库的容量和负载能力
u数据库的最大容量和扩展能力
u数据库的负载测试和性能优化
u数据库的集群和分布式架构能力
u最大会话数/活跃会话数限制
u是否可以通过表空间等方式方便地分散IO负载
l支持性 (Supportability)
-开发者和管理员文档
u数据库的API和SDK
u第三方工具的支持程度
u数据库的命令行和管理界面
u数据库的日志和错误信息
-支持和维护服务
u数据库厂商的性质与规模
u数据库供应商的技术支持服务
u数据库第三方支持服务
u数据库的社区和支持论坛
u数据库的版本控制和升级服务
