作为 RDBMS 替代品的文档数据库
Document database as RDBMS replacement
我计划使用 NoSQL 作为我所有应用程序数据的主数据库,主要是因为要记住 "scalability"、"cloud"、"big data" 等术语。我不关心 "schema-less" 因为我在传统 RDBMS 中使用 ORM 框架。
几乎每个应用程序都使用关系,无论是社交网络、电子商务还是其他东西,总会有关系。
所以我查找了符合条件的不同类型的 NoSQL 数据库。
Key-Value:绝对不是这个目的。
基于列:我立即拒绝了它,因为它对我来说看起来很不自然,我永远不会使用它
像 Neo4j 一样基于图形:他们声称这对关系有好处,但它只是一个点击诱饵,并且错过了很多功能毕竟我只想使用 RDBMS。而有些人只用它做地理搜索,主要数据还是用RDBMS。显然读取性能不好,所以我拒绝了。
基于文档,如 MongoDB、Couchbase:似乎是 RDBMS 最流行的替代方案(完全取代它)。此外 MongoDB 将很快符合 ACID (https://www.mongodb.com/transactions)。
现在的问题是,像MongoDB这样的东西,Couchbase 可以用在有很多关系(几乎每个应用程序)的场景中,作为 RDBMS 的完全替代品吗?
在阅读了几天关于 NoSQL 和大型站点中的各种用例之后,我得出结论,这些数据库几乎从未用作 primary/main 数据库,并且最常用于连接与 RDBMS 一起做一些特定的事情。
考虑到该术语的歧义,比较 NoSQL 和 SQL 数据库是否有效?
SQL 个数据库没有歧义,而没有 SQL 个数据库有歧义!
我找到的好文章!:https://www.marklogic.com/blog/nosql-without-multi-document-multi-statement-transactions/
The promise of NoSQL is speed; but like a car without brakes, not very safe unless it allows multi-document transactions.
--
if you want to be taken seriously as a database, you need to support multiple statement transactions.
您可以使用 NoSQL
作为主数据库,但这取决于您希望对数据库执行的操作。例如,我们使用 MongoDB
作为主数据库,但这只是因为我们永远不必创建需要复杂隔离的复杂事务。
虽然您可以在大多数 SQL 数据库中执行诸如 multi-statement 单个事务之类的操作,但在 MongoDB
中以及可能在许多其他 NoSQL
中很难这样做。首先,MongoDB
根本不支持多语句单事务,如果您真的需要模拟它,则必须创建一个单独的集合来处理 'control' 事务。 (就像查看每个事务并修改其他集合中的目标一样,因为原子性和隔离性保留在单个文档级别中)。这是非常容易被忽视的事情,尤其是在小型项目中。
那么document
数据库能否完全替代RDBMS
?不,但它还有其他好处可以弥补 RDBMS
的缺点,例如非常灵活,尤其是无服务器就绪。
但它可以用作主数据库吗?在某些情况下是的,但是随着您的数据库逻辑变得越来越复杂,使用 RDBMS
会更好,因为您不必担心 ACID
我计划使用 NoSQL 作为我所有应用程序数据的主数据库,主要是因为要记住 "scalability"、"cloud"、"big data" 等术语。我不关心 "schema-less" 因为我在传统 RDBMS 中使用 ORM 框架。
几乎每个应用程序都使用关系,无论是社交网络、电子商务还是其他东西,总会有关系。
所以我查找了符合条件的不同类型的 NoSQL 数据库。
Key-Value:绝对不是这个目的。基于列:我立即拒绝了它,因为它对我来说看起来很不自然,我永远不会使用它像 Neo4j 一样基于图形:他们声称这对关系有好处,但它只是一个点击诱饵,并且错过了很多功能毕竟我只想使用 RDBMS。而有些人只用它做地理搜索,主要数据还是用RDBMS。显然读取性能不好,所以我拒绝了。基于文档,如 MongoDB、Couchbase:似乎是 RDBMS 最流行的替代方案(完全取代它)。此外 MongoDB 将很快符合 ACID (https://www.mongodb.com/transactions)。
现在的问题是,像MongoDB这样的东西,Couchbase 可以用在有很多关系(几乎每个应用程序)的场景中,作为 RDBMS 的完全替代品吗?
在阅读了几天关于 NoSQL 和大型站点中的各种用例之后,我得出结论,这些数据库几乎从未用作 primary/main 数据库,并且最常用于连接与 RDBMS 一起做一些特定的事情。
考虑到该术语的歧义,比较 NoSQL 和 SQL 数据库是否有效?
SQL 个数据库没有歧义,而没有 SQL 个数据库有歧义!
我找到的好文章!:https://www.marklogic.com/blog/nosql-without-multi-document-multi-statement-transactions/
The promise of NoSQL is speed; but like a car without brakes, not very safe unless it allows multi-document transactions.
--
if you want to be taken seriously as a database, you need to support multiple statement transactions.
您可以使用 NoSQL
作为主数据库,但这取决于您希望对数据库执行的操作。例如,我们使用 MongoDB
作为主数据库,但这只是因为我们永远不必创建需要复杂隔离的复杂事务。
虽然您可以在大多数 SQL 数据库中执行诸如 multi-statement 单个事务之类的操作,但在 MongoDB
中以及可能在许多其他 NoSQL
中很难这样做。首先,MongoDB
根本不支持多语句单事务,如果您真的需要模拟它,则必须创建一个单独的集合来处理 'control' 事务。 (就像查看每个事务并修改其他集合中的目标一样,因为原子性和隔离性保留在单个文档级别中)。这是非常容易被忽视的事情,尤其是在小型项目中。
那么document
数据库能否完全替代RDBMS
?不,但它还有其他好处可以弥补 RDBMS
的缺点,例如非常灵活,尤其是无服务器就绪。
但它可以用作主数据库吗?在某些情况下是的,但是随着您的数据库逻辑变得越来越复杂,使用 RDBMS
会更好,因为您不必担心 ACID