将数据库记录为RDBMS替换
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将数据库记录为RDBMS替换相关的知识,希望对你有一定的参考价值。
由于“可扩展性”,“云”,“大数据”等术语,我计划首先使用NoSQL作为我所有应用程序数据的主数据库。我不关心“无模式”,因为我使用传统的RDBMS无论如何都使用ORM框架。
几乎每个应用程序都使用关系,无论是社交网络,电子商务还是别的东西都有关系。
所以我查找了可以获得资格的不同类型的NoSQL数据库。
- 键值:绝对不是为了这个目的。
- 基于列:我立即拒绝它,因为它对我来说看起来不自然,我永远不会使用它
- 基于图形的Neo4j:它们声称它对关系有好处,但它只是一个clickbait而且错过了很多让我想要只使用RDBMS的功能。有些人只将它用于地理搜索,并仍然使用RDBMS作为主要数据。显然读取性能不好所以我拒绝它。
- 基于文档的MongoDB,Couchbase:看起来像RDBMS最流行的替代品(完全取代它)。 MongoDB也将很快符合ACID(https://www.mongodb.com/transactions)。
现在问题是像MongoDB这样的东西,Couchbase可以用在具有许多关系的场景中(几乎每个应用程序)作为RDBMS的完全替代品吗?
在几天阅读NoSQL和大型网站中的各种用例之后,我得出结论,这些数据库几乎从不用作主数据库或主数据库,并且通常与RDBMS一起用于执行某些特定事务。
考虑到这个术语含糊不清,比较NoSQL和SQL数据库是否有效?
NoSQL数据库的SQL数据库并不含糊!
我找到的好文章!:https://www.marklogic.com/blog/nosql-without-multi-document-multi-statement-transactions/
NoSQL的承诺是速度;但就像没有刹车的汽车一样,除非它允许多文件交易,否则不是很安全。
--
如果您希望被认真对待数据库,则需要支持多个语句事务。
您可以使用NoSQL
作为主数据库,但这取决于您要对数据库执行的操作。例如,我们使用MongoDB
作为主数据库,但这只是因为我们永远不必创建需要复杂隔离的复杂事务。
虽然您可以在大多数SQL数据库中执行多语句单个事务,但在MongoDB
和许多其他NoSQL
中很难这样做。首先,MongoDB
根本不支持多语句单个事务,如果你真的需要模拟它,你将不得不创建一个单独的集合来“控制”事务。 (如同查看每个事务并修改其他集合中的目标一样,因为原子性和隔离在单个文档级别中保留)。这是一个非常被忽视的东西,特别是在小项目中。
那么document
数据库可以完全取代RDBMS
吗?不,但它有其他好处,补充了RDBMS
的缺点,如非常灵活,特别是无服务器就绪。
但它可以用作主数据库吗?是的,在某些情况下,但随着你的数据库逻辑变得越来越复杂,使用RDBMS
会更好,因为你不必担心ACID
以上是关于将数据库记录为RDBMS替换的主要内容,如果未能解决你的问题,请参考以下文章
使用自定义支持片段将 getMap 替换为 getMapAsync