将数据库记录为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

替换或删除后台堆栈上现有片段的代码不起作用

有没有办法在 RDBMS 中为每个呼叫客户的 CDR(呼叫数据记录)编写 sql 查询。?

用片段替换某些东西

试图替换片段,但它一直显示相同的片段

替换的片段仍然可见