NoSQL简介

最初指非SQL或非关系型的NoSQL是一种数据库,它提供了一种用于存储和检索数据的机制。该数据是用关系数据库中使用的表格关系以外的方法建模的。这样的数据库在1960年代末期出现,但直到二十一世纪初迅速普及后才获得NoSQL的称号。 NoSQL数据库用于实时Web应用程序和大数据中,并且其使用随着时间的推移而增加。 NoSQL系统有时也称为NoSQL,以强调它们可能支持类似SQL的查询语言这一事实​​。

NoSQL数据库包括设计的简单性,对机器集群的更简单的水平扩展和对可用性的更好控制。 NoSQL数据库使用的数据结构与关系数据库中默认使用的数据结构不同,这使得NoSQL中的某些操作更快。给定NoSQL数据库的适用性取决于它应解决的问题。 NoSQL数据库使用的数据结构有时也被认为比关系数据库表更灵活。

许多NoSQL存储都牺牲了一致性,以提高可用性,速度和分区容忍度。 NoSQL存储被更多采用的障碍包括使用低级查询语言,缺乏标准化的接口以及对现有关系数据库的大量先前投资。大多数NoSQL商店都缺乏真正的ACID(原子性,一致性,隔离性,耐久性)事务,但是一些数据库(例如MarkLogic,Aerospike,FairCom c-treeACE,Google Spanner(虽然从技术上来说是NewSQL数据库),Symas LMDB和OrientDB都使它们成为现实。他们设计的核心。

大多数NoSQL数据库提供最终一致性的概念,其中数据库更改会传播到所有节点,因此对数据的查询可能不会立即返回更新的数据,或者可能导致读取的数据不准确,这就是一个过时的读取问题。同样,某些NoSQL系统可能会出现丢失的写入和其他形式的数据丢失。一些NoSQL系统提供诸如预写日志记录之类的概念,以避免数据丢失。对于跨多个数据库的分布式事务处理,数据一致性是一个更大的挑战。对于NoSQL和关系数据库而言,这都是困难的。甚至当前的关系数据库也不允许参照完整性约束跨越数据库。很少有系统同时维护X / Open XA标准和ACID事务以进行分布式事务处理。

NoSQL的优点:

使用NoSQL数据库(例如MongoDB和Cassandra)有很多优点。主要优点是高可伸缩性和高可用性。

1. 高扩展性

NoSQL数据库使用分片进行水平扩展。将数据分区并以保留数据顺序的方式将其放置在多台计算机上是分片的。垂直缩放意味着向现有计算机添加更多资源,而水平缩放意味着添加更多计算机来处理数据。垂直缩放不是那么容易实现,但是水平缩放很容易实现。水平扩展数据库的示例是MongoDB,Cassandra等。由于数据的可扩展性,NoSQL可以处理大量数据,因为数据不断增长,NoSQL可以自行扩展以有效地处理该数据。

2. 高可用性 

NoSQL数据库中的自动复制功能使其具有很高的可用性,因为万一发生任何故障,数据都会将自身复制到以前的一致状态。

NoSQL的缺点:

NoSQL具有以下缺点。

1. 狭窄的焦点–

NoSQL数据库的焦点非常狭窄,因为它主要是为存储而设计的,但提供的功能却很少。关系数据库在事务管理领域比NoSQL更好。

2. 开源–

NoSQL是开源数据库。 NoSQL还没有可靠的标准。换句话说,两个数据库系统可能不相等。

3. 管理挑战–

大数据工具的目的是使对大量数据的管理尽可能简单。但这不是那么容易。 NoSQL中的数据管理比关系数据库复杂得多。尤其是NoSQL,因其具有挑战性的安装而闻名,并且每天的管理工作更加繁忙。

4. GUI不可用–

市场上无法灵活使用GUI模式工具来访问数据库。

5. 备份–

对于某些NoSQL数据库(如MongoDB),备份是一个很大的弱点。 MongoDB无法以一致的方式备份数据。

6. 大文件尺寸–

一些数据库系统(如MongoDB和CouchDB)以JSON格式存储数据。这意味着文档非常大(BigData,网络带宽,速度),并且具有描述性的键名实际上很有害,因为它们会增加文档的大小。

NoSQL数据库的类型:

NoSQL数据库的类型和属于该类别的数据库系统的名称为:

1. MongoDB属于基于NoSQL文档的数据库类别。

2. 关键值存储:Memcached,Redis,Coherence

3. 表格:Hbase,Big Table,Accumulo

4. 基于文档:MongoDB,CouchDB,Cloudant

什么时候应该使用NoSQL:

1. 当需要存储和检索大量数据时。

2. 您存储的数据之间的关系不是那么重要

3. 数据随时间变化并且没有结构化。

4. 在数据库级别不需要支持约束和联接

5. 数据在不断增长,您需要定期扩展数据库以处理数据。

你可能感兴趣的:(NoSQL简介)