程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

数据库如何快速选型

balukai 2025-04-28 23:15:23 文章精选 2 ℃

在数据库选型上,没有一种架构能适合所有业务场景,需要在多种产品之间,根据业务需求在功能、性能、可靠性、成本等几方面取得平衡。更多的要考虑如何快速贴合自身的业务场景,做出取舍,这里主要介绍几个需要评估考虑的点,方便大家根据自身情况做出选择。

数据库基本准则:CAP定律

没有任何数据库技术可以绕过CAP 定理,按照CAP定理,在Consistency(一致性)、 Availability(可用性)、Partition tolerance (分区容错性)三者之间,不可能三者兼顾,而是最多同时兼顾两项。

1、技术需求:SQL/NoSQL/NewSQL

 SQL(Structured Query Language):数据库,指关系型数据库,核心思想就是ACID(原子性,一致性,隔离性,持久性),主要满足CAP的CA要求。主要代表:SQLServer、Oracle、MySQL等。

 NoSQL(Not Only SQL):泛指非关系型数据库, 以放宽ACID原则为代价,NoSQL采取的是事务最终一致性原则。Nosql常建立在分布式系统上,这使得它易于扩展分片和容错,可用性也高,它主要满足的是CAP中的AP要求。主要代表:Cassandra、MongoDB、Redis。

 NewSQL:对各种新的可扩展/高性能数据库的简称,吸收了传统关系型数据库和NoSql数据库的优点,NewSQL目标是将SQL的ACID保证与NoSQL的可扩展性和高性能相结合,很显然它是必定会满足CAP的CP的,但是在分布式场景的情况下,在保证数据的分区容错性建立了多副本同步,同时要保证分布式场景跨服务器节点的事务一致,它的性能一定是存在使用瓶颈的,必定影响系统的高可用性。主要代表:OceanBase、TiDB。

2、业务需求:OLTP/OLAP/HTAP

专门用于在线事务处理的数据库,叫做 OLTP;专门用于分析型业务的数据库叫做 OLAP,而能够把两者结合起来的,叫做HTAP。

3、业务场景

实时交易查询,读写能力和延迟性都很重要,这时内存数据库就能解决这一问题。

关系型数据库往往能够支持关联查询,语法也支持SQL复杂度的需求,但是性能上会出现很大风险。

海量数据分析业务场景,对可用性和容错性要求较高,可以牺牲时效性,通过并发分片各自进行计算,保证数据的最终一致性,但是分析出来的数据一定要准确,这种NoSql数据库是理想选择。

想要快速扩容,保证数据安全,对业务影响冲击小就得选择分布式数据库。

4、存储方式:行/列/键值/文档/图

OLTP交易式场景,按照场景进行拆解到交易,订单,报文,接口,数据需要结合交易场景,按照行式快速把数据存储落地,这个时候快速满足数据库的 ACID 属性(原子性、一致性、隔离性和持久性)就变得非常重要,这时关系型数据库显然是最佳选择。

OLAP业务场景中,数据需要建立不同的模型对业务进行分析,往往建立很多的大宽表存储模型信息,这个时候往往用的是列式存储。

内存数据库大多都是键值存储的,场景上往往结合关系型数据库提升系统的整理性能,提高系统吞吐能力。

场景只是用于文档存储,那么数据库的读取速度和延迟时间很重要,这时文档数据库可能是理想型选择。

如果是存储的实体间关系交错复杂,则需要引入图数据库。

Tags:

最近发表
标签列表