您的位置首页百科知识

什么是NoSql

什么是NoSql

本片介绍NoSql的一些特性

NoSQL 是一个总括术语, 用于不一定遵循关系数据库模型的数据库。它们通常依赖于非规范化数据, 并存储为键值对、整个文档或图形, 以便使检索尽可能快, 从而使应用程序响应, 特别是在处理海量数据 (如 tb) 时存储的 pb。

对于访问 NoSQL 数据库没有 sql 等效标准, 因为每个数据库都以自己的方式存储数据。这样做的一个缺点是, 一旦开始使用特定的 NoSQL 数据库, 您通常会与特定供应商捆绑在一起, 因为迁移将是一个定制的、费力的过程, 需要您在不同数据库的模型之间进行映射。

下面是一些流行的nosql数据库:MongoDB、Cassandra、Redis、Memcached

Mongodb–数据存储为 JSON 对象, 并且可能不会与其他类似对象共享所有相同的字段。

1.更高的写负载,MongoDB拥有更高的插入速度。2.处理很大的规模的单表,当数据表太大的时候可以很容易的分割表。3.高可用性,设置M-S不仅方便而且很快,MongoDB还可以快速、安全及自动化的实现节点(数据中心)故障转移。4.快速的查询,MongoDB支持二维空间索引,比如管道,因此可以快速及精确的从指定位置获取数据。MongoDB在启动后会将数据库中的数据以文件映射的方式加载到内存中。如果内存资源相当丰富的话,这将极大地提高数据库的查询速度。5.非结构化数据的爆发增长,增加列在有些情况下可能锁定整个数据库,或者增加负载从而导致性能下降,由于MongoDB的弱数据结构模式,添加1个新字段不会对旧表格有任何影响,整个过程会非常快速。

Cassandra–数据存储在列系列中, 类似于表, 但行不需要共享相同的列。

Memcached–分布式键值存储缓存.

1.Memcached可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS(取决于key、value的字节大小以及服务器硬件性能,日常环境中QPS高峰大约在4-6w左右)。适用于最大程度扛量。2.支持直接配置为session handle。

Redis–群集的、持久的键值存储.

1.支持多种数据结构,如 string(字符串)、 list(双向链表)、dict(hash表)、set(集合)、zset(排序set)、hyperloglog(基数估算)2.支持持久化操作,可以进行aof及rdb数据持久化到磁盘,从而进行数据备份或数据恢复等操作,较好的防止数据丢失  的手段。3.支持通过Replication进行数据复制,通过master-slave机制,可以实时进行数据的同步复制,支持多级复制和增量复制,master-slave机制是Redis进行HA的重要手段。4.单线程请求,所有命令串行执行,并发情况下不需要考虑数据一致性问题。5.支持pub/sub消息订阅机制,可以用来进行消息订阅与通知。6.支持简单的事务需求,但业界使用场景很少,并不成熟。