NoSQL 简介
A NoSQL 最初指的是非 SQL 或非关系数据库,是一种提供数据存储和检索机制的数据库。这些数据是用关系数据库中使用的表格关系以外的方式建模的。这种数据库出现在 20 世纪 60 年代末,但直到 21 世纪初流行起来才获得 NoSQL 的绰号。NoSQL 数据库用于实时网络应用和大数据,并且随着时间的推移,它们的使用正在增加。NoSQL 系统有时也被称为不仅仅是 SQL,以强调它们可能支持类似 SQL 的查询语言。
NoSQL 数据库包括简单的设计、更简单的机器集群水平扩展和更好的可用性控制。NoSQL 数据库使用的数据结构不同于关系数据库中默认使用的数据结构,这使得 NoSQL 的一些操作更快。给定 NoSQL 数据库的适用性取决于它应该解决的问题。NoSQL 数据库使用的数据结构有时也被认为比关系数据库表更灵活。
许多 NoSQL 商店为了可用性、速度和分区容忍度而牺牲一致性。更多采用 NoSQL 商店的障碍包括低级查询语言的使用,缺乏标准化的接口,以及以前对现有关系数据库的巨额投资。大多数 NoSQL 商店缺乏真正的 ACID(原子性、一致性、隔离性、持久性)交易,但少数数据库,如 MarkLogic、Aerospike、FairCom c-treace、谷歌扳手(虽然从技术上来说是一个 NewSQL 数据库)、Symas LMDB 和 OrientDB 使它们成为设计的核心。
大多数 NoSQL 数据库都提供了最终一致性的概念,其中数据库更改会传播到所有节点,因此对数据的查询可能不会立即返回更新的数据,或者可能会导致读取不准确的数据,这就是所谓的陈旧读取。此外,一些 NoSQL 系统可能会出现写入丢失和其他形式的数据丢失。一些 NoSQL 系统提供诸如预写日志等概念来避免数据丢失。对于跨多个数据库的分布式事务处理,数据一致性是一个更大的挑战。这对 NoSQL 数据库和关系数据库来说都很困难。即使是当前的关系数据库也不允许引用完整性约束跨越数据库。很少有系统同时维护 X/Open XA 标准和 ACID 事务来进行分布式事务处理。
NoSQL 的优势: 使用 MongoDB、Cassandra 等 NoSQL 数据库有很多优势。主要优点是高可扩展性和高可用性。
- 高扩展性– NoSQL 数据库使用分片进行水平扩展。对数据进行分区,并将其放置在多台机器上,从而保持数据的顺序,这就是分片。纵向扩展意味着向现有机器添加更多资源,而横向扩展意味着添加更多机器来处理数据。垂直缩放没那么容易实现,但是水平缩放很容易实现。水平扩展数据库的例子有 MongoDB、Cassandra 等。由于可扩展性,NoSQL 可以处理大量数据,随着数据的增长,NoSQL 可以自我扩展,以高效的方式处理这些数据。
- 高可用性– NoSQL 数据库中的自动复制功能使其具有高可用性,因为在任何故障情况下,数据都会自动复制到以前的一致状态。
NoSQL 的劣势: NoSQL 有以下劣势。
- 窄焦点– NoSQL 数据库的焦点非常窄,因为它主要是为存储设计的,但它提供的功能非常少。在事务管理领域,关系数据库是比 NoSQL 更好的选择。
- 开源– NoSQL 是开源数据库。NoSQL 还没有可靠的标准。换句话说,两个数据库系统可能是不平等的。
- 管理挑战– 大数据工具的目的是让大量数据的管理尽可能简单。但也不是那么容易。NoSQL 的数据管理比关系数据库复杂得多。尤其是 NoSQL,它以安装难度高、日常管理更加繁忙而闻名。
- GUI 不可用– 访问数据库的 GUI 模式工具在市场上不灵活可用。
- 备份– 备份对于像 MongoDB 这样的一些 NoSQL 数据库来说是一个很大的弱点。MongoDB 没有以一致的方式备份数据的方法。
- 大文档大小– 一些数据库系统如 MongoDB 和 CouchDB 以 JSON 格式存储数据。这意味着文档非常大(大数据、网络带宽、速度),拥有描述性的键名实际上是有害的,因为它们增加了文档的大小。
NoSQL 数据库的类型: NoSQL 数据库的类型和属于该类别的数据库系统的名称是:
- MongoDB 属于基于 NoSQL 文档的数据库。
- 重点价值商店:模棱两可,重复,连贯一致
- 表格: Hbase,大表,累计
- 基于文档: MongoDB、CouchDB、Cloudant
NoSQL 应该什么时候用:
- 当需要存储和检索大量数据时。
- 您存储的数据之间的关系并不那么重要
- 数据随着时间的推移而变化,并且没有结构化。
- 数据库级别不需要支持约束和连接
- 数据不断增长,您需要定期扩展数据库来处理数据。
版权属于:月萌API www.moonapi.com,转载请注明出处