如何评估一款数据库产品 - 18项火眼金睛
背景
不论你是投资方、还是CTO或者架构师,如果你需要在非常核心的场合选择一款数据库产品,或者你要投资一个数据库产品或团队,本文一定会为你提供一个很好的指导。
现在的数据库分类在dbranking上已经分得很细:
https://db-engines.com/en/ranking
Complete ranking
Relational DBMS
Key-value stores
Document stores
Graph DBMS
Time Series DBMS
RDF stores
Object oriented DBMS
Search engines
Multivalue DBMS
Wide column stores
Native XML DBMS
Content stores
Event Stores
Navigational DBMS
本文主要评估的是关系数据库,关系数据库又分:
OLTP:在线事务处理
OLAP:分析型数据库
HTAP:混合数据库(既能支持在线事务,又能支持在线分析)
评估数据库产品的18项火眼金睛
1、SQL兼容性
SQL语法(多维分析、窗口、子查询、CTE、DDL事务、触发器、规则、事件触发器)
并发控制能力
事务隔离级别支持
支持的数据类型
支持的操作符
支持的索引
客户端语言接口
服务端编程接口
分区表能力
管理GUI,管理接口,管理函数,管理视图等
2、优化器能力
基于成本的执行计划
基于遗传算法的执行计划
多少种数据访问方法
支持哪些SQL 重写规则
支持哪些执行节点并行
支持哪些JOIN算法
支持哪些排序算法
3、扩展能力
并行能力(单机并行、多机并行)
存储能力(行存、列存储、压缩、堆存、树存)
扩展性 - scale up 能力
扩展性 - scale out 能力
数据复制能力
4、运算能力
向量计算
JIT
FPGA、GPU 计算扩展能力
5、内核扩展能力
内核扩展能力(自定义UDF,IDX,OP,TYPE,窗口,聚合,外部数据源,PL扩展接口)
6、可靠性、可用性、稳定性
多副本能力
备份能力
恢复能力(时间点恢复、并行备份恢复等能力)
容灾能力
越界回退能力
HA能力
崩溃恢复能力
7、安全性(认证方法、加密类型、透明加密类型、透明加密存储)
8、其他特性
(流计算、图计算、GIS能力、推荐算法、时序、NOSQL、搜索、等)
估值
9、内核开发语言、模型、平台兼容性、产品软肋
C,
线程模型、进程模型、
Linux,unix, windows, …
有哪些产品设计、架构方面的软肋。
10、代码成熟度、完成度
11、roadmap
12、主要代码贡献者
13、性能
tpc-b, tpc-h, tpc-ds, tpc-c, sysbench(oltp), TCO
14、应用场景、案例
15、生态
商业生态:高校、数据库厂商、技术服务厂商、云厂商、用户群体、应用开发商、语言生态、投资方生态
社区状态
社区活跃度
与其他生态的融合能力,hadoop, spark, ….
16、未来发展潜力
17、成本
学习成本
开发成本
运维成本
管理成本
18、开源许可
开源许可很重要!!!
参考
https://db-engines.com/en/ranking
https://www.postgresql.org/docs/10/static/index.html
https://wiki.postgresql.org/wiki/PostgreSQL_derived_databases