1

最近我遇到了一个概念,NoSQL据我所知,它适用于处理大量数据。

我的问题是,使用的限制是什么NoSQL变得值得?是否仅适用于处理真正大量数据的公司,例如 Google、Facebook 等,或者即使数据量较小,也值得从 SQL 数据库切换到它。

4

1 回答 1

3

我想知道您所说的“NoSQL 概念”是什么意思,因为它是不同数据库技术的广泛领域的总称。它们唯一的共同点是它们之间的区别:它们“不是(唯一的)SQL”。它们有截然不同的理念、用例和目标群体。

只是为了给你一个概述,这里有一些 NoSQL 数据库的大派系。

基于文档的数据库,如 MongoDB 或 CouchDB。它们的优点是它们不需要一致的数据结构。当您的需求和数据库布局不断变化时,或者当您处理属于一起但看起来仍然非常不同的数据集时,它们很有用。当您有很多表,其中包含两个名为“key”和“value”的列,那么这些可能值得研究。

有像 Neo4j 或 GiraffeDB 这样的图形数据库。他们的重点是通过数据与其他数据的关系来定义数据。当您有很多带有主键的表时,它们是另外两个表的主键(可能还有一些描述它们之间关系的数据),那么这些可能适合您。

然后你就有了简单的键值存储,比如 MemcacheDB、Cassandra 或 Google 的 BigTable。它们非常简单,但这使它们快速且易于使用。如果您不需要存储过程、约束、触发器和所有这些高级数据库功能,而您只想快速存储和检索数据,那么这些就是您的理想之选。

这些只是新数据库世界的几个方面。

但是仍然有一个领域是关系数据库擅长的,那就是遵循 ACID 原则。大多数 NoSQL 数据库并不能完全保证所有这四个:

  • 原子事务(一起处理的命令链,n-order 和 all-or-none)
  • 具有约束和触发器的一致数据库模式,可确保数据库中不存在垃圾数据。
  • 交易隔离 - 保证不受同时发生的其他交易影响的交易。
  • 耐用性 - 即使在系统突然崩溃的情况下也不会丢失数据*

(* 公平地说,上面列出的大多数数据库确实非常耐用,尤其是那些易于设置为冗余故障转移集群的数据库。

于 2012-09-11T19:35:26.130 回答