网站首页 > 文章精选 正文
在数据库选型上,没有一种架构能适合所有业务场景,需要在多种产品之间,根据业务需求在功能、性能、可靠性、成本等几方面取得平衡。更多的要考虑如何快速贴合自身的业务场景,做出取舍,这里主要介绍几个需要评估考虑的点,方便大家根据自身情况做出选择。
数据库基本准则: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业务场景中,数据需要建立不同的模型对业务进行分析,往往建立很多的大宽表存储模型信息,这个时候往往用的是列式存储。
内存数据库大多都是键值存储的,场景上往往结合关系型数据库提升系统的整理性能,提高系统吞吐能力。
场景只是用于文档存储,那么数据库的读取速度和延迟时间很重要,这时文档数据库可能是理想型选择。
如果是存储的实体间关系交错复杂,则需要引入图数据库。
猜你喜欢
- 2025-04-28 大型互联网平台技术架构(二):服务端介绍
- 2025-04-28 一款高度可定制化的数据可视化分析平台
- 2025-04-28 【SQL】SQL 语法差异大全(PgSQL/MySQL/Oracle/TiDB/OceanBase)
- 2025-04-28 OceanBase与TiDB、CRDB的区别(2):架构可靠性(下)
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 稳压管的稳压区是工作在什么区 (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)