关系型数据库和非关系型数据库的区别有哪些?

唉……当我2 02 2 年开始做这件事时,我真的很困惑。

关系数据库...之类的东西。
想一想;用户表和订单表必须通过ID对齐和关联。
和MySQL一样,很多公司到2 02 2 年都会继续使用它。
数据结构是固定的,需要提前设计。
更改字段是有问题的,需要执行 DDL 语句。
但!稳定,数据一致性强。
如果你做金融什么的,就得用它。
后来了解到ACID特性保证了数据的可靠。

非关系型数据库更加灵活。
与 MongoDB 一样,它存储文档并自动添加非常适合快速变化的数据模型的字段。
2 02 2 年,许多互联网公司将使用MongoDB进行实时反馈。
性能高,读写速度快,可以分布式使用。
和Redis一样,对于缓存来说,速度是惊人的。
但!有时,数据一致性还不够,但了解 BASE 模型是必要的。
基础模型;基本可用;软状态 最终一致性。
与 Cassandra 一样,它没有主节点,并且易于扩展。
2 02 2 年,大数据每个参与其中的人都会使用它。

也许我太极端了。
关系型数据库虽然老了,但是真的要看场景。
关系数据库是一种非关系数据库。
反之亦然。
这是不合适的。
它必须用在正确的地方。

关系型数据库和非关系型区别

关系型数据库和非关系型的区别

我必须和你讨论这个问题。
别听这些宅男的胡言乱语,请听我这个已经入坑1 0年的人说的。

当我开始从事这个项目时,我的公司正在使用标准关系数据库 MySQL。
数据表格逐行、逐列清晰。
编写您的查询,编写您的 SQL,您就会找到这一切。
当时数据量还没有那么大,几百、几千万,用起来没有任何问题。
但随后,随着用户数量的增加以及每天数十万个订单的增加,数据库变得有点不堪重负。
每次运行复杂查询都要等半天。
当时,我们认为这行不通,需要改变。

然后我们使用了 MongoDB,一个非关系型数据库。
如您所知,这并没有做任何花哨的事情,而是直接提供任何格式的文档,例如 json。
大量数据直接加载到内存中,读写速度非常快。
当时,我们正在建设一个电子商务网站。
它填充了订单数据、用户数据和其他所有数据。
太酷了。
我们每天收到数百万个订单,并且处理速度非常快。
换句话说,当我从事销售工作时,我的腿往往会伸展一点。
记得有一次,订单付款和库存减一,没有同时处理,用户抱怨了一段时间。
我添加了一个机制,最后再次检查以确保“最终一致性”,并设法完成它。

然后我开始了一个新项目,我的需求再次发生了变化。
这次数据量不大,但是要求很高,需要实时处理。
我们正在考虑使用 Redis。
这是一个很棒的工具。
它只是一个键值对,访问速度非常快。
用于存储用户会话、缓存等。
效率非常好。
想一想。
用户登录时将session抛给Redis,访问速度如何?
如您所见,MySQL、Oracle等关系型数据库适合数据结构固定、需要严格一致性的场景。
MongoDB、Redis等非关系型数据库适合数据量大、并发读写要求高的场景。
说到成本,关系数据库可能很昂贵,也可能免费,但这完全取决于您的情况。
大多数非关系数据库都是开源的且成本低廉。

毕竟,没有数据库是完美的。
你必须看看你想要什么。
如果数据量很大,请使用非关系型使用数据。
如果您需要数据一致性,请使用关系型数据。
不要耍花招,后果自负。
当时我就踩到了这个陷阱,差点毁了这个项目。
因此,你需要仔细考虑。