什么是nosql数据库?nosql和rdbms有什么区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是nosql数据库?nosql和rdbms有什么区别相关的知识,希望对你有一定的参考价值。
1 理解ACID与BASE的区别(ACID是关系型数据库强一致性的四个要求,而BASE是NoSQL数据库通常对可用性及一致性的弱要求原则,它们的意思分别是,ACID:atomicity, consistency, isolation, durability;BASE:Basically Available, Soft-state, Eventually Consistent。同时有意思的是ACID在英语里意为酸,BASE意思为碱)2 理解持久化与非持久化的区别。这么说是因为有的NoSQL系统是纯内存存储的。
3 你必须意识到传统有关系型数据库与NoSQL系统在数据结构上的本质区别。传统关系型数据库通常是基于行的表格型存储,而NoSQL系统包括了列式存储(Cassandra)、key/value存储(Memcached)、文档型存储(CouchDB)以及图结构存储(Neo4j)
4与传统关系数据库有统一的SQL语言操作接口不同,NoSQL系统通常有自己特有的API接口。
5 在架构上,你必须搞清楚,NoSQL系统是被设计用于成百上千台机器的集群中的,而非共享型数据库系统的架构。
6在NoSQL系统中,可能你得习惯一下不知道你的数据具体存在何处的情况。
7 在NoSQL系统中,你最好习惯它的弱一致性。”eventually consistent”(最终一致性)正是BASE原则中的重要一项。比如在Twitter,你在Followers列表中经常会感受到数据的延迟。
8 在NoSQL系统中,你要理解,很多时候数据并不总是可用的。
9 你得理解,有的方案是拥有分区容忍性的,有的方案不一定有。 参考技术A 什么是NoSQL数据库?从名称“非SQL”或“非关系型”衍生而来,这些数据库不使用类似SQL的查询语言,通常称为结构化存储。这些数据库自1960年就已经存在,但是直到现在一些大公司(例如Google和Facebook)开始使用它们时,这些数据库才流行起来。该数据库最明显的优势是摆脱了一组固定的列、连接和类似SQL的查询语言的限制。有时,NoSQL这个名称也可能表示“不仅仅SQL”,来确保它们可能支持SQL。 NoSQL数据库使用诸如键值、宽列、图形或文档之类的数据结构,并且可以如JSON之类的不同格式存储。
用于留言板站点的 RDBMS 与 NoSQL
【中文标题】用于留言板站点的 RDBMS 与 NoSQL【英文标题】:RDBMS vs NoSQL for message boards site 【发布时间】:2012-07-25 21:40:00 【问题描述】:我正在设计和规划一个新网站。 它主要是一个留言板网站
我过去有使用 MySQL 的经验,但我听到了很多声音(不是在我的脑海中) 这告诉 NoSQL 可以像 RDBMS 一样好的解决方案。
NoSQL 的主要诉求是性能。你怎么看待这件事?
所以, 我的网站需要一种可扩展的数据库设计技术。 如果我使用 NoSQL,我知道这方面有几种技术 (文档存储、键值存储等)。如何选择?
你认为什么更适合留言板网站: NoSQL 还是 MySQL?
谢谢, 插座
【问题讨论】:
【参考方案1】:SQL 和非 SQL 均可用于您的目的。使用 no-SQL 的两个主要原因是,如果您真的有大量流量(并且您的 sql 解决方案在性能方面无法正常工作),以及如果您有大量非结构化和不断变化的数据,无架构的好处。
我个人认为您需要考虑的一个重要因素是可维护性。
如果您使用 no-sql 创建任何东西,与 SQL 相比,您将拥有不到 10% 的受众来维护它。
程序员通常希望在技术上使用“最佳”解决方案,但不考虑可维护性和成本方面的因素,尤其是当他们认为解决方案“简单”时。
【讨论】:
【参考方案2】:),出于您的目的,我认为 NoSQL 可能是比 MySQL 更好的选择。您应该检查一下 MongoDB 或 CouchDB,它们都是开源可扩展的 NoSQL DB(并且如前所述,还有其他商业可用的 NoSQL DB 和文件存储系统) 基本上,消息板实际上并不需要 DBMS。在 DBMS 中,查询处理操作比在 NoSQL DB 中要慢,并且消息板可能具有大量流量以及不一定具有固定模式的数据。 NoSQL 在数据结构方面的灵活性使您能够轻松地利用和实现分片、分区、索引和其他技术。
【讨论】:
【参考方案3】:虽然性能是关键要素之一,但这不是 NoSQL 中的特性,它更多是设计的结果,我认为特性是它的数据结构的灵活性以及将信息存储在单个中的可能性当您处理密切相关的记录时,行避免多次往返(请查看此帖子 http://djondb.com/blog 以更好地理解我在说什么)。 对于需要每天更改其模型的任何网站,选择能够跟上这种灵活性的数据库是明智的。 我有点偏见,因为我是 NoSQL 文档存储的作者,但我建议您尝试一下 NoSQL 文档存储,您会惊讶于使用这种易于存储的方法创建解决方案的速度有多快.
【讨论】:
首先,感谢您的回复。我想知道使用 NoSQL 的主要缺点是什么?如果您愿意与我分享,您正在开发哪种 NoSQL 技术?谢谢 @socksocket 如果我要做一个列表,按照对开发人员和 NoSQL 业务的重要性排序,我会选择:1. 灵活性,2. 避免存储复杂的表简单的信息,3. 可扩展性 4. 性能。我正在开发 djondb,它是一个类似于 MongoDB 和 CouchDB 的文档存储实现,专注于保持 ACID 兼容的数据库具有文档的强大功能并且易于使用。 顺便说一句,我不推荐任何特定的实现,一些 NoSQL DB 可以很好地解决你的问题,所以去尝试一下 Mongo、Couch、Raven 等......如果你有时间看看 djondb 你的改进建议将不胜感激。【参考方案4】:你看过 Redis (http://redis.io/) 吗?
您可以使用 Redis 对 RDBMS 中的几乎所有内容进行建模。在大多数情况下,您将获得 x10 的性能,并且得到了一个非常活跃的社区的支持。
我建议你在 Redis 论坛详细说明你的需求,你可能会得到最诚实、最专业的回复;其中一部分可能会建议您在架构的不同部分使用其他 NoSQL 技术
【讨论】:
Redis 不是都在内存中,用来缓存东西吗?论坛可能会变得非常大。 Redis 不像你建议的那样是关系型的以上是关于什么是nosql数据库?nosql和rdbms有什么区别的主要内容,如果未能解决你的问题,请参考以下文章