业务上云,在面临海量的业务数据,如何在层出不穷的数据库中选择适合自身业务应用的解决方案,成为架构设计的难点。
传统的集中化存储,如将所有数据存储在Oracle中的方式已经没有办法满足现在多样的数据类型与使用要求。采用“分而治之”的方式,更符合现在云化架构的整体实现思路。
这里为大家分享一下数据库的选型原则,并提供一个真实的案例给大家作为参考。
选型原则:
数据层选型时,要考虑一下六个数据特点,选择合适的数据存储解决方案。
- 数据类型 , 关系型数据、KV数据、视频、图片、文件
- 数据量 , 万级、百万级、千万级、亿级别
- 实时性/一致性 , 实时访问、准实时访问、分钟级延迟、小时级延迟、天级查询
- 并发度 , QPS、TPS、响应时间
- 使用场景 , 实时业务、报表分析、历史归档数据、多维查询、正则查询
- 数据来源 , 文件、数据同步、消息队列、数据库
结合以上六点,选择合适的数据存储技术形成数据层解决方案。
这里举几个选型的例子:
- 海量关系型数据+实时性高+高并发:可以选择分布式关系型数据库,商业的如阿里云DRDS、POLARDB,开源的如MyCAT等。
- 多维度查询+正则查询+准实时+海量数据存储:可选择搜索引擎,如Elasticsearch
- 规则类数据/高并发KV类数据:Redis/Redis Cluster
- 历史归档数据:阿里DRDS/Hbase
- 视频图片文件:可选择分布式文件系统或对象存储,商业的如阿里OSS,开源的HDFS、FastDFS、GlusterFS、CephFS
真实案例
以下是我们在某大型企业使用的数据存储及使用方案:
首先对数据存储解决方案形成三层架构:
- 第一层,实时数据层
使用Redis实现高并发KV数据的缓存、Session共享。
使用阿里OSS作为大批量文件的存储。
使用阿里DRDS作为核心业务数据库。
使用ElasticSearch实现多维数据查询与正则查询。
- 第二层,数据传输层
使用阿里DTS作为数据同步通道,当然你可以选择开源的如Otter/Canal来构建自己的数据同步通道,实现近实时的数据同步。
使用DTS-writer,将数据同步至异构数据库,实现异构数据库的数据同步,可大幅降低将由应用将数据存储在各个独立产品的研发代价。
- 第三层,离线数据层
使用HBASE作为归档数据存储,实现数据挖掘与报表功能
使用阿里DRDS为生产提供离线/冷数据的查询
使用阿里RDS作为同步部分关键数据,为打造业务生态提供个性业务数据
最后,从设计本身的角度,任何得到认可的数据库产品都有价值,都可以作为数据存储架构选型的备选项,但由于数据库本身的重要性,使用团队熟悉的技术往往可以降低整体风险。选择使用新技术务必要进行大量验证。
仔细思考,你一定会有所收获。
欢迎关注:云架构那些事儿,专注实用性云架构分享与IT技术分享。