43

NoSQL到底是什么?是只使用 {key:value} 对的数据库系统吗?

据我所知MemCache是这样的数据库系统之一,对吗?

还有哪些其他流行的 NoSQL 数据库,它们到底在哪里有用?

谢谢,博达赛多。

4

8 回答 8

23

我不同意我看到的答案,尽管 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 实现之前我就已经做了很多研究,但这是一个概念将不断改变我们看待信息存储方式的领域。

于 2012-07-06T20:50:47.167 回答
21

来自维基百科:

NoSQL 是一个定义松散的非关系数据存储类的总称,它打破了关系数据库和 ACID 保证的悠久历史。属于该术语的数据存储可能不需要固定的表模式,并且通常避免连接操作。该术语于 2009 年初首次普及。

这种架构的动机是高可扩展性,以支持 Facebook、advertising.com 等网站......

于 2010-01-31T19:59:04.813 回答
8

要快速掌握 NoSQL 系统,请参阅我写的这篇博文:NoSQL 系统的可视化指南。本质上,NoSQL 系统牺牲了一致性或可用性,以支持对网络分区的容忍。

于 2010-05-05T03:21:50.930 回答
2

什么是 NoSQL?

NoSQL 是 Not Only SQL 的首字母缩写。NoSQL 数据库的基本特性是无模式、分布式和可在商品硬件上水平扩展。NoSQL 数据库提供了多种功能来解决各种数据类型的各种问题,其中“blob”曾经是 RDBMS 中唯一用于存储非结构化数据的数据类型。

1 动态模式 NoSQL 数据库允许模式灵活。可以随时添加新列。行可能有也可能没有这些列的值,并且没有严格执行列的数据类型。这种灵活性对开发人员来说很方便,尤其是当他们期望在产品生命周期过程中频繁更改时。

2 多种数据 NoSQL 数据库支持任何类型的数据。它支持存储结构化、半结构化和非结构化数据。它支持日志、图像文件、视频、图形、jpegs、JSON、XML,无需任何预处理即可存储和操作。因此它减少了对 ETL(提取 - 转换 - 加载)的需求。

3 高可用性集群 NoSQL 数据库支持使用商用硬件的分布式存储。它还通过水平可扩展性支持高可用性。此功能使 NoSQL 数据库能够受益于云基础设施服务的弹性特性。

4 开源 NoSQL 数据库是开源软件。软件的使用是免费的,其中大部分可以免费用于商业产品。可以修改开源代码库以解决业务需求。开源软件许可存在细微差异,用户必须了解许可协议。

5 NoSQL – 不只是 SQL NoSQL 数据库不仅依赖 SQL 来检索数据。它们提供丰富的 API 接口来执行 DML 和 CRUD 操作。这些 API 对移动开发人员友好,并支持多种编程语言。

于 2016-01-15T14:39:22.437 回答
1

看看这些:

http://en.wikipedia.org/wiki/Nosql#List_of_NoSQL_open_source_projects

还有这个:

http://www.mongodb.org/display/DOCS/Comparing+Mongo+DB+and+Couch+DB

于 2010-01-31T19:59:13.660 回答
1

十几年前,我使用了一种叫做Raima 数据管理器的东西,它符合 NoSQL 的要求。它称自己为“面向集合的数据库”,它不基于表,也没有查询“语言”,只是一个用于请求子集的 C API。

在 C/C++ 和 SQL 中使用它更快更容易,没有构建字符串传递给查询解释器,并且数据作为可枚举对象而不是数组返回。可变大小的记录是正常的,不会浪费空间。我从来没有看过源代码,但是在接口上有一些提示,在内部,代码使用了很多指针。

我不确定我使用的产品是否已经售出,但该公司仍然存在。

于 2010-01-31T20:23:02.700 回答
1

MongoDB看起来很有趣,SourceForge 现在正在使用它

我和一个团队成员一起听了一个播客。NoSQL 的想法与其说是取代 SQL,不如说是为传统 RDBMS 无法很好解决的问题提供解决方案。正如其他地方所提到的,它们以可靠性和原子性(不同程度的不同解决方案)为代价,速度更快,扩展性更好。您不想将一个用于财务系统,但基于文档的系统会很好用。

于 2010-05-05T03:30:43.070 回答
0

以下是 NoSQL 数据库的完整列表:http: //nosql-database.org/

我很高兴您在 RDM John 方面取得了成功!我在 Raima 工作,所以很高兴听到反馈。对于那些寻找更多信息的人,这里有一些资源:

于 2012-05-26T18:01:06.070 回答