背景
在业务场景技术选型的过程中,存储技术通常是必不可少的一环,而当前存储技术繁杂多样,如何迅速选择合适业务的技术非常重要。本文根据业务特点抽象出核心需求,根据不同需求采取对应的最佳方案。
业务需求抽象
业务特点抽象由广到窄分为如下几点:
是否结构化数据。这里非结构化数据主要是图片、视频和语音等二进制信息。
是否分析型服务。存储服务一般分为在线业务型和分析型。在线业务型用于在线服务增产改查和一些事务性需求;分析型服务一般是运营、产品和分析型对离线数据进行洞察分析。
是否关系型数据。这里主要区分SQL和NoSQL。关系型数据按结构化关系来存储(数据存储模型符合第三范式),其一般是传统行式数据库。非关系存储一般是K-V存储和文档存储。
是否有数据更新和低延迟需求。主要用于对分析型服务分类,数据更新一般是对已有数据进行update修改,低延迟通常是指秒级延迟需求。
是否水平扩展。这里水平扩展主要对newSQL和SQL进行分类。因为传统关系型数据库的扩展性比较弱,主要通过上层sharding方案实现扩展,其存储在设计方面的可扩展性很弱,没有自动数据balance、数据迁移功能。可水平扩展就说明该存储在设计上就实现了数据自动balance、对新加入节点进行用户透明的数据迁移。
是否预聚合。这里主要是对OLAP进行分类,OLAP分为ROLAP和MOLAP,ROLAP类似传统关系型数据库,对分析需求进行adhoc查询,非常灵活,查询延迟一般在秒级以上。MOLAP主要是对数据先预聚合再查询,因为预聚合要管理员提前定义聚合指标,所以查询灵活度较低,但是响应非常迅速,一般在亚秒级。
技术选型图
闭源技术补充
本图主要划分了开源数据库技术选型,但除了开源选型,在当前的云计算时代,也有很多大厂对应的闭源技术可以选择,下面列举一二并给出选择参考。
非结构化存储
除了开源的ceph,闭源的有AWS的S3、Google的cloud storage、阿里云的OSS和百度云的BOS等。
关系型水平扩展数据库
除了开源的TiDB,还有AWS的Aurora、Google的cloud spanner、阿里云的Oceanbase和百度对开源CockroachDB封装的版本等。
分析型数据库
开源的分析型数据库比较丰富,可根据具体团队状况、技术栈、社区活跃度情况选择。闭源方面可以使用AWS的Redshift、Google的BigQuery、阿里云的ADS和百度云的Palo等。
总结
开源技术丰富多样,一般针对不同场景都有对应的实现技术方案,比较灵活多样,用户根据需求抽象再参考本文就可以选择合适的存储技术。
对于使用云的用户,各家厂商都有完备的对应技术方案,开箱即用。