由于“可扩展性”,“云”,“大数据”等术语,我计划首先使用NoSQL作为我所有应用程序数据的主数据库。我不关心“无模式”,因为我使用传统的RDBMS无论如何都使用ORM框架。
几乎每个应用程序都使用关系,无论是社交网络,电子商务还是别的东西都有关系。
所以我查找了可以获得资格的不同类型的NoSQL数据库。
现在问题是像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