数据库架构设计——数据库选型

数据库架构设计——数据库选型,第1张

数据库架构设计——数据库选型 摘要

架构师在工作中经常会遇到数据库存储选型的问题,而市面上数据库产品众多,往往会无从下手,甚至有时候从业务开发到上线运维过程中会多次更换底层数据库,给整个研发中心带来不必要的额外工作。结合业务场景做数据库存储选型的时候,可以综合以下几个维度去考虑:

一、技术选型维度 1.1 业务是否需要保证ACID事务?

事务具有4个特征,分别是原子性、一致性、隔离性和持久性

需要ACIDMySQL、pg(PostgreSQL)等不需要ACIDMongoDB、hbase、cassandra等 1.2 要求低延迟  对性能要求极致,不担心数据丢失的选择memcache数据生命周期短,数据量相对小,性能要求高,需要存储灵活的数据结构:Redis一般scylladb>canssdra>hbase 1.3 是否高并发写入,随机读多于范围读? 需要支持高并发写入,随机读多于范围读?hbase、cassandra,hbase范围读更优。 1.4 海量数据存储,支持水平扩展,分布式容错? 需要支持海量数据存储,支持水平扩展,分布式容错NOSQL 如:resis、hbase、Cassandra、mongodb 1.5 需要全文搜索? 支持全文搜索海量数据用Elasticsearch支持全文搜索数据量可控用pg GIST索引。 1.6 存储复杂数据模型? 支持存储复杂数据模型文档数据库mongodb 1.7 OLTP OR OLAP OR离线分析?   OLTP(联机事务处理)行存数据库 mysql 、pg  OLAP(联机分析处理)列存数据库高压缩 gp 、clickhouse离线分析:hbase 1.8 金融级要求高可用、数据不丢 支持数据不丢 oceanbase、阿里云mysql金融版、mysql group replication 1.9 需要事务而且海量数据存储    分库分表drds、sharding-jdbc+关系型数据库newsqlTiDB 1.10 CAP权衡

CAP: 一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。

保证CA关系型数据库保证CPhbase、redis、mongodb保证APcassandra、riak 、couchdb 1.11 特殊业务场景 地理信息系统GISPG>ES>Mongodb 时序TaosDB>influxdb>opentsdb 1.12 开发角度,业务迭代快,需要schema free

对开发友好:关系型数据库都行。另外就是MongoDB,不过也有两面性,不如关系型数据库有严格的约束,将任意类型的任意值插入任意集合,有时候会带来负面作用。

1.13 运维角度 易运维cassandra>hbase


 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5709158.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存