切换菜单

什么是NoSQL?

NoSQL数据库旨在支持云应用程序需求,并克服了传统关系数据库(RDBMS)的规模,性能,数据模型和数据分发限制。

什么是NoSQL?

NoSQL解释

NoSQL(非唯一SQL)数据库使用与关系数据库(RDBMS)不同的方法来存储,分发和访问数据。互联网领导者,例如Facebook,Google和Amazon,最初创建并使用了NoSQL技术,因为这些技术巨头需要可大规模扩展的数据库管理系统,该系统可以在世界任何地方写入和读取数据,同时为数十亿用户提供性能和可用性。

如今,大多数公司和组织还必须交付可个性化其客户体验的大规模应用程序。 NoSQL是为此类系统提供支持的首选数据库技术。

NoSQL与关系数据库的区别

NoSQL和RDBMS数据库支持不同的应用程序需求,并且经常在企业中共存以支持不同的用例。关键的技术决策标准包括:

当您担心的问题时,请使用RDBMS。在您担心的情况下使用NoSQL ...
集中式整体应用分散(高度可扩展)的微服务应用程序
中度到高可用性持续可用性,零停机时间
中等速度数据高速数据(设备,传感器等)
基本结构化数据结构化,半结构化或非结构化
复杂/嵌套事务和联接简单的交易和查询
扩展读取扩展读写
扩大规模(又称“垂直可扩展性”)向外扩展(又称“水平可扩展性”)
了解有关关系数据库与NoSQL的更多信息

NoSQL数据库之间的区别

市场上有各种不同的NoSQL数据库,它们之间的主要区别如下:

资料模型

我们可以通过NoSQL数据库支持的数据模型对其进行分类。一些支持大型表格存储,而其他一些则支持面向文档,键值或图形的模型。在下面的更多内容。

开发API

NoSQL数据库的开发API有所不同。 卡桑德拉支持Cassandra查询语言(一种类似SQL的语言),并且其他API(如REST和GraphQL)正在开发中。

建筑

一些NoSQL数据库(如MongoDB)使用类似于关系数据库的主副本/辅助副本体系结构。 卡桑德拉和其他服务器以对等方式设计,其中数据库群集中的所有节点都相同。 NoSQL数据库的体系结构极大地影响了数据库支持需求的能力,例如持续的正常运行时间,多地理数据复制和可预测的性能。

数据分配模型

由于它们的体系结构差异,NoSQL数据库在读取,写入和分发数据的支持方面有所不同。像Cassandra这样的NoSQL平台支持在集群中的每个节点上进行读写操作,并且可以在许多数据中心和云提供商之间复制或同步数据。


还值得注意的是,已经出现了一组称为“ NewSQL”数据库的数据库,它们采用了NoSQL数据库引入的许多分布式系统架构原理,同时试图提供传统RDBMS的完整关系语义。这些数据库包括Google Cloud Spanner和Cockroach DB,并为Cassandra和其他NoSQL数据库提供了一组不同的折衷方案。

了解有关对NoSQL数据库进行基准测试的信息

NoSQL数据库的类型

NoSQL数据库支持各种用于存储和访问数据的数据模型。 NoSQL数据模型的主要类别是:

开源的

键/值数据库 是最不复杂的一些,因为其中的所有数据都包含一个索引键和一个值。键值数据库使用哈希机制,以便给定键,数据库可以快速检索关联的值。哈希机制提供了恒定的时间访问,这意味着它们即使在大规模运行时也可以保持高性能。键可以是任何类型的对象,但通常是字符串。这些值通常是不透明的Blob(即数据库无法解释的字节序列)。示例包括:Redis,Amazon DynamoDB,Riak和Oracle NoSQL数据库。一些表格式NoSQL数据库(例如Cassandra)也可以满足键/值需求。

灵活,熟悉的界面

文件资料库 扩展键值存储的基本概念,其中“文档”更为复杂,因为它们包含数据,并且每个文档都分配有唯一的键,用于检索文档。它们被设计用于存储,检索和管理通常以JSON存储的面向文档的信息。由于文档数据库可以检查文档内容,因此数据库可以执行一些附加的检索处理。与需要静态模式的RDBMS不同,文档数据库具有由文档内容定义的灵活模式。示例包括:MongoDB和CouchDB。请注意,纯文档存储区之外的某些RDBMS和NoSQL数据库能够存储和查询JSON文档,包括Cassandra。

高性能

表格数据库 将数据组织成行和列,但与传统的RDBMS有所不同。它们也称为宽列存储或分区行存储,它们提供了对组织在一起存储在同一副本中的分区中的相关行进行组织的选项,以允许快速查询。与RDBMS不同,表格格式不一定严格。例如,Apache 卡桑德拉™不需要所有行都包含表中所有列的值。像键/值和文档数据库一样,表格数据库也使用散列从表中检索行。示例包括:Cassandra,HBase和Google Bigtable。

零停机时间

图形数据库 使用图形隐喻来存储数据,以利用数据之间的关系。图中的节点表示数据项,边表示数据项之间的关系。图形数据库专为处理高度复杂且相互关联的数据而设计,它超越了RDBMS的关系和JOIN功能。图形数据库通常非常擅长于发现大型数据集之间的共性和异常。 Graph数据库的示例包括DataStax Graph,Neo4J,JanusGraph和Amazon Neptune。

可扩展性

多模型数据库 在NoSQL和RDBMS市场中都是新兴趋势。它们旨在支持针对单个集成后端的多个数据模型。大多数数据库管理系统都是围绕一个数据模型组织的,该模型确定如何组织,存储和操作数据。相比之下,A多模型数据库使企业可以将系统数据的一部分存储在不同的数据模型中,从而简化了应用程序的开发。


NoSQL的好处

NoSQL数据库主要用于支持针对云应用程序的分散系统。与其他数据库管理系统相比,像Cassandra这样的NoSQL数据库通常具有以下优点:

持续可用

持续可用

即使在最严重的基础设施中断的情况下,仍可保持在线状态的数据库。

地理分布可用

地理分布

完全活动的数据,随处可用。

运营低延迟

运营低延迟

对于最密集的运营云应用程序,响应时间足够快。

线性可扩展

线性可扩展

可预测地进行扩展和扩展,以满足云应用程序当前和将来的数据需求。

功能上的凝聚力

功能上的凝聚力

混合工作负载和多个数据模型的一致集成和互操作性。

运营成熟

运营成熟

适用于企业的云应用程序数据管理。

低总拥有成本

低总拥有成本

不需要专门的硬件或辅助软件。

如何实现NoSQL

从实际角度看,您如何实际迁移到NoSQL并实现您的第一个应用程序?通常,可以采用以下三种方法来采用NoSQL数据库:

新的应用

新的应用

许多人从NoSQL入手,首先将其应用到新的云应用程序中。这种方法避免了应用程序重写和数据迁移的麻烦。

增广

增广

有些人选择通过向其中添加NoSQL组件来增强现有系统。由于规模问题或对更高可用性的需求,这种情况经常发生在RDBMS不能满足需求的应用程序中。

完全翻录替换

完全翻录替换

对于成本不断增长或由于用户并发性,数据速度或数据量增加而造成重大破坏的系统,可以使用NoSQL数据库进行完全替换。

我该如何开始?

如果您想了解有关Apache 卡桑德拉的更多信息,我们这里有很多资源可帮助您入门。

试试看

开发人员专用的DataStax

了解如何成功使用Apache 卡桑德拉™。

立即访问
阿斯特拉

试试DataStax 阿斯特拉

使用DataStax 阿斯特拉快速构建云原生应用程序,DataStax 阿斯特拉是由Apache 卡桑德拉支持的数据库即服务。

免费试用
权威指南卡桑德拉

O’Reilly的《 卡桑德拉:权威指南》,第三版

获取免费的数字副本,以利用Cassandra的速度和灵活性。

获取电子书