NoSQL究竟是什么?它是否仅适用于{key:value}对的数据库系统?
据我所知,这MemCache
是一个这样的数据库系统,对吗?
还有哪些其他流行的NoSQL数据库,它们究竟在哪里有用?
谢谢,Boda Cydo.
我不同意我所看到的答案,尽管NoSQL解决方案倾向于打破ACID规则,但并非所有规则都是通过该方法创建的.
我认为首先你应该定义什么是SQL解决方案,然后你可以把"Not Only"放在它前面,这将更准确地定义什么是NoSQL解决方案.
考虑到这种方法:
SQL数据库是一种将使用结构化查询语言可访问的所有数据存储分组为主要(并且大部分时间仅仅)与它们通信的方式,这意味着它要求数据库支持那些通用的结构.系统,如"表","列","行","关系"等.
现在,将"Not Only"放在最后一句话的前面,你将得到"NoSQL"的定义.NoSQL将创建的所有商店分组为尝试解决无法适应表/列/行结构甚至SQL语句的问题,在大多数情况下这些数据库不支持关系,他们放弃了众所周知的结构因为自从受孕以来问题已经发生了变化.
如果您有一个文本文件,并且您创建了一个API来存储/检索/组织此信息,那么您手中就有一个NoSQL数据库.
所有这些意味着存在多种解决方案来存储信息,传统SQL系统不允许实现更好的性能,灵活性等等.每个NoSQL提供商都试图解决不同的问题,这就是为什么你不能够比较两种不同的解决方案,例如:
djondb是一个文档存储,创建用作NoSQL企业解决方案,支持事务,一致性等,但牺牲了其对应的性能.
MongoDB是一个文档存储(类似于djondb),它可以实现很好的性能,但是可以交换一些ACID属性来实现这一目标.
CouchDB是另一个文档存储,它解决了稍微不同的查询,提供了查看信息的视图,而无需每次都进行完整的查询.
...
您可能已经注意到我只谈到了文档存储,那是因为我想向您展示3种不同的文档存储实现有不同的方法,因此您应该记住NoSQL存储的黄金法则"使用正确的工具为正确工作".
我是djondb的创建者,在尝试开始自己的NoSQL实现之前,我一直在做很多研究,但这个概念将不断改变我们看待信息存储的方式.
来自维基百科:
NoSQL是松散定义的非关系数据存储类的总称,它打破了关系数据库和ACID保证的悠久历史.属于此术语的数据存储可能不需要固定的表模式,并且通常会避免连接操作.该术语于2009年初首次推广.
这种架构的动机是高可扩展性,以支持Facebook,advertising.com等网站......
要快速掌握NoSQL系统,请参阅我写的这篇博客文章:NoSQL系统的可视指南.从本质上讲,NoSQL系统牺牲了一致性或可用性,有利于对网络分区的容忍度.