Spr*_*dzy 71 nosql rdbms database-recommendation
NoSQL 和传统的 RDBMS 有什么区别?
在过去的几个月里,NoSQL 经常在技术新闻中被提及。与传统的 RDBMS 相比,它最重要的特征是什么?差异发生在什么级别(物理、逻辑)?
哪里是使用 NoSQL 的最佳场所?为什么?
Jon*_*nas 61
NoSQL 代表“不仅是 SQL”,通常意味着数据库不是关系数据库,这在过去的几十年中非常流行。
NoSQL 之所以近几年如此火爆,主要是因为当关系型数据库从一台服务器上长出来时,它就不再那么好用了。换句话说,它们在分布式系统中不能很好地扩展。你提到的所有大网站,谷歌、雅虎、Facebook 和亚马逊(我对 Digg 不太了解)都有大量数据,并且出于多种原因将数据存储在分布式系统中。可能是数据不适合一台服务器,或者有高可用性要求。
分布式系统的特性可以用CAP 定理来描述。在三个属性中,您最多只能拥有两个:
Amazon Dynamo 使用最终一致性来接近获得所有三个属性。本文迪纳摩:亚马逊的高度可用的key-value存储学习NoSQL数据库和分布式系统时很值得一读。Amazon Dynamo 具有 A 和 P 属性。
Google 对BigTable采取了不同的方法,它具有 C 和 A 属性。
正如我在开头写的那样,还有许多其他类型的 NoSQL 数据库,它们是为不同的需求而设计的。例如像Neo4j这样的图形数据库、像CouchDB这样的文档数据库和像OrientDB这样的多模型/对象数据库。
最后,我想说关系数据库将继续流行。它们非常灵活且可维护。但它们并不总是最好的选择。
Jer*_*hka 22
NoSQL 是一个非常广泛的术语,通常被称为“不仅是 SQL”。该术语在非 RDBMS 社区中逐渐失宠。
您会发现 NoSQL 数据库几乎没有共同特征。大致可以分为以下几类:
这是一个很大的问题,但在本分布式数据库调查中得到了很好的回答。
简短回答:
NoSQL 数据库可能会放弃 ACID 的各个部分,以实现某些其他好处——分区容错性、性能、分配负载或通过添加新硬件线性扩展。
至于何时使用它们——这完全取决于您的应用程序的需求。
mrd*_*nny 13
NoSQL 是一种数据库,它不像传统的 RDBMS 那样具有固定模式。对于 NoSQL 数据库,架构由开发人员在运行时定义。他们不会针对数据库编写普通的 SQL 语句,而是使用 API 来获取他们需要的数据。NoSQL 数据库通常可以轻松地跨不同物理服务器扩展,而无需知道您要查找的数据位于哪台服务器上。
然而,所有这些灵活性都有一些折衷:与 SQL Server、Oracle、DB2、MySQL 等 RDBMS 系统相比,NoSQL 数据库缺乏相当多的功能。没有 Service Broker、事务日志、ETL 包等。
NoSQL 并不是什么新鲜事物。它实际上已经存在了 50-60 年。当时它被称为 COBOL。完全相同的想法,只是不同的小组提出了它。
基本上免除关系设置、主键和外键以及保持事务安全所涉及的额外开销,通常可以极大地提高性能。然而,这并不是新数据库/数据存储所独有的,因为例如 MySQL 已经通过绕过层调整为在“NoSQL 级别”执行。
简而言之,如果您愿意冒可能丢失数据的风险,通常可以获得令人印象深刻的性能。大多数 NoSQL 系统都这样做。例如,MongoDB 会在方便时暂存要写入的数据更改。数据本身是安全且交易安全的,但保存在易失性存储(内存)中。如果您断电,您就不能 100% 确定您没有丢失数据,或者您没有损坏的数据。
这是安全性和性能之间的权衡。
小智 5
一个很好的起点是Wikipedia 条目。本质上,不是将一个表中的数据与另一个表中的数据相关联,而是将事物存储为键值对,并且没有数据库模式,而是在代码中处理。
一些站点同时使用 NoSQL 和典型的 RDBMS 服务器,但用于存储不同的数据。因此,您不必选择其中之一。
| 归档时间: |
|
| 查看次数: |
42834 次 |
| 最近记录: |