---
title: 1.0、NoSQL
date: 2017-12-12 18:10:10
tags: 
  - 数据库
  - MongoDB
categories: 
  - MongoDB
---

NoSQL ( Not Only SQL ) , 泛指`非关系型数据库`
传统的关系型数据库在超大规模和高并发的纯动态网站已经显得力不从心 , 暴露了很多难以克服的问题
NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战 , 尤其是大数据应用难题
<!-- more -->

> NoSQL数据库的共同特征
+ `不需要预定义模式`
不需要事先定义数据模式，预定义表结构。数据中的每条记录都可能有不同的属性和格式。当插入数据时，并不需要预先定义它们的模式。
+ `无共享架构`
相对于将所有数据存储的存储区域网络中的全共享架构。NoSQL往往将数据划分后存储在各个本地服务器上。因为从本地磁盘读取数据的性能往往好于通过网络传输读取数据的性能，从而提高了系统的性能。
+ `弹性可扩展`
可以在系统运行的时候，动态增加或者删除结点。不需要停机维护，数据可以自动迁移。
+ `分区`
相对于将数据存放于同一个节点，NoSQL数据库需要将数据进行分区，将记录分散在多个节点上面。并且通常分区的同时还要做复制。这样既提高了并行性能，又能保证没有单点失效的问题。
+ `异步复制`
和RAID存储系统不同的是，NoSQL中的复制，往往是基于日志的异步复制。这样，数据就可以尽快地写入一个节点，而不会被网络传输引起迟延。缺点是并不总是能保证一致性，这样的方式在出现故障的时候，可能会丢失少量的数据。
+ `BASE`
相对于事务严格的ACID特性，NoSQL数据库保证的是BASE特性。BASE是最终一致性和软事务。

---
#### mongoDB的优点
1. `无数据结构的限制` , 没有表结构的概念 , 每条记录可以有完全不同的结构 . 业务开发方便快捷
而关系型数据库则必须要首先定义表结构 , 当数据结构发生变化通常需要修改表结构 , 添加字段等
2. `完全的索引支持` 键值索引 , 单键索引 , 多键索引 , 数组索引 , 全文索引 , 地理位置索引(2D)
3. `安全性与可扩展性` 复制集保证数据安全 , 分片扩展数据规模
4. `良好的支持` 完善的文档支持与驱动支持
