将数据库记录为RDBMS替换

时间:2018-02-28 00:04:21

标签: sql mongodb nosql couchbase rdbms

我计划将NoSQL作为主要数据库用于我的所有应用程序数据,主要是因为像"可扩展性","云",&#34这样的术语;大数据"心里。我不关心"无架构"因为我使用ORM框架无论如何都使用传统的RDBMS。

几乎每个应用程序都使用关系,无论是社交网络,电子商务还是别的东西都有关系。

所以我查找了可以获得资格的不同类型的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的承诺是速度;但就像没有刹车的汽车一样,除非它允许多文件交易,否则不是很安全。

-

  

如果您想被视为数据库,则需要支持多个语句事务。

1 个答案:

答案 0 :(得分:-1)

您可以使用 $.each( answers, function( index, value ){ if (typeof answers[index] != "undefined") { if(answers[index]["question_id"]==answer_to_del) { delete answers[index]; } } }); //Clean answer array from empty values created above answers = answers.filter(function(n){ return n != undefined }); 作为主数据库,但这取决于您希望对数据库执行的操作。例如,我们使用NoSQL作为主数据库,但这只是因为我们永远不必创建需要复杂隔离的复杂事务。

虽然您可以在大多数SQL数据库中执行多语句单个事务,但在MongoDB和其他许多MongoDB中很难这样做。首先,NoSQL根本不支持多语句单一事务,如果您确实需要模拟它,则必须创建一个单独的集合来“控制”事务。 (如同查看每个事务并修改其他集合中的目标一样,因为原子性和隔离在单个文档级别中保留)。这是一个非常被忽视的东西,特别是在小型项目中。

MongoDB数据库可以完全替换document吗?不,但它有其他好处,可以补充RDBMS的缺点,例如非常灵活,特别是无服务器就绪。

但它可以用作主数据库吗?在某些情况下,但是当您的数据库逻辑变得更复杂时,使用RDBMS会更好,因为您不必担心RDBMS