NoSQL值得使用

时间:2012-09-11 14:49:07

标签: database database-design nosql

最近我遇到了NoSQL的概念,据我所知,这对于处理大量数据是有好处的。

我的问题是,使用NoSQL变得有价值的限制是什么?它是否仅适用于处理谷歌,脸书等大量数据的公司,或者即使数据量较小,从SQL数据库切换到它也是值得的。

1 个答案:

答案 0 :(得分:3)

我想知道你的意思是什么“NoSQL概念”,因为它是广泛领域的不同数据库技术的总称。他们唯一的共同点就是它们彼此分开:它们“不是(仅)SQL”。他们的哲学,用例和目标群体各不相同。

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

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

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

然后你有简单的键值存储,如MemcacheDB,Cassandra或Google的BigTable。它们非常简单,但这使它们快速且易于使用。当您不需要存储过程,约束,触发器和所有这些高级数据库功能时,您只需要快速存储和检索数据,那么这些都适合您。

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

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

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

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