在当前技术高速发展的背景下,用户选择分布式平台或任何平台方案时应该慎重!因此需要从多个维度对市场上众多的商业和开源产品进行全方位的评估。大致应包括功能、性能、高可用性、可扩展性、开放性、数据加载速度、跨云平台能力、与第三方工具的集成能力、监控管理特性、总体成本等因素。或根据自身需要选择 按 x 轴拆分(水平复制数据库) 按 y 轴拆分(按列功能分) 按用户分类参考选择 ,在分布式系统中,现有市场上有专业大厂提供的多种产品。大致如下:
IBM DB2 DPF
POSTGRESQL citus,greenplum
couchdb
HABSE
MONGODB
redis等
分布式系统产品 国内也有众多厂商如巨杉数据库等各有特点。
从技术角度看,选择分布数据库时,应该着眼于大数据分析和后继的 AI 处理等。因此建议参考以下因素:
- 产品成熟度:成熟的产品可以避免用户走弯路。
- 开发和运维的复杂度。
- 标准兼容度。
- 核心技术的特性( SQL,NOSQL,NEWSQL) 。
- 硬件跨平台。
- 是否开放源代码。
- 完善生态系统。
- 数据源和数据格式是否支持常见关系数据库和半结构化的数据,以及非结构化数据库(文本, GIS 数据和图数据)。
- 是否支持跨数据库链接构建联邦数据库 -- 便于跨数据库的数据抽取或数据虚拟化 -- 对用户屏蔽底层的数据读取细节,提供统一的管理和访问接口,无论外部数据存放在本地, S3 ,或某个 FTP 服务器上,还是存放在某个独立自治的数据库上,用户在使用时均不会感受到区别。
- 高级分析能力:常见我们选择分布数据的后续应该有高级数据分析或者机器学习的需求,则应该考虑选择的数据库是否有内建的高级数据分析和机器学习能力的平台。而不时抽取数据库到业务应用或者第三方应用再做分析,可以大大简化业务的架构复杂度,提高开发效率,同时提高分析模型精度。
- 与 ETL 等第三方工具的结合度。
- 扩展能力。
- 存储方式 SHARE everything 的共享存储还是 share nothing (一般分布式数据库偏向于后者便于水平扩展)支持多态存储。
- 数据的压缩效果和支持可靠的 RUDP 通讯协议实现可靠的通讯流控和防阻塞通讯机制。对于分布数据库,因为业务的场景改变难免需要数据的重播 redistribute moving(redistribute motion) 或重放 broadcast moving or broadcast motion ,这块有时是分布式数据库最大也是容易失控的关键最短的部分。(本人以前选择一个数据库构建分布式环境,因为压缩和通讯机制额短板,造成过数据大数据量传输时,系统负载过大但又不能调优的尴尬经历)。
- 是否提供细腻化弹性的系统资源的管理,对系统资源的管控调度,避免一些程序长时间不合理、不讲理的占用,以确保资源池或资源组 (CPU, 内存的共享)避免资源并行壁垒。
- 是否提供 MPP 架构高效的并行加载数据,即允许数据从多个文件系统提供多个主机上的多个网卡进行加载,从而达到非常高的数据传输率。
对与分布式数据库的选择,就分布数据库集成数据库是一大亮点或特色。
通常不同的业务场景使用不同的数据库处理技术,如 OLTP 、联机分析 OLAP 处理、文本处理、流数据处理、科学计算等都具有不同的特点,
就当前的众多需求和硬件软件技术发展来看,集成数据库( OLTP+OLAP 和其他文本、 GIS 、流数据)平台满足很多市场的需求和场景。
集成数据库的优势:
- 数据整合容易,避免信息孤岛,便于共享和统一数据管理。
- 基于 SQLDE1 数据集成平台可提供良好的数据独立性,开发专注逻辑,不用关心数据底层细节,平台能提供更好的实时性和更安全的数据,为业务提供更安全更准确的分析和决策。
- 避免各种系统之间的耦合,总体技术架构简单,不需要复杂的数据导入和导出,易于管理和维护。