关于NoSQL,看这篇就够了

欢迎关注微信公众号,大数据,分布式系统,SQL on Hadoop等多领域优质博文第一时间送达,欢迎转载转发。

一、NoSQL 介绍

NoSQL(Not only SQL)数据库,可以理解为区别于关系型数据库如mysql、oracle等的非关系型数据库。

聊到NoSQL不得不提著名的CAP理论,全称 Consistency Available and Partition tolerance,即一致性(C)、可用性(A)与分区容错性(P),这是 Eric Brewer 教授提出的分布式系统设计理念,并给出了定论:任何分布式系统只能同时满足其中二点,无法做到三者兼顾。这可以说是 NoSQL 数据库的理论基石,至今 NoSQL 领域也称得上是百花齐放了,一直也没有哪一款 NoSQL 同时兼顾着这三点特性。

如上图,NoSQL 必须要在一致性、可用性与分区容错性之间做出取舍,目前而言,几乎所有的 NoSQL 都是在保有分区容错性的基础上选择一致性或可用性,例如 HBase 就是牺牲了部分可用性换取了完全的一致性,与 HBase 类似的 Cassandra 则是牺牲了强一致性换来了可用性的保证。

二、NoSQL 应用场景

NoSQL 作为分布式系统的实现, 海量数据永久性存储 非结构化数据存储 超大规模数据高效读写 超强水平扩展能力 等这些特征让 NoSQL 得到了广泛应用。

三、NoSQL 不足之处

事务支持 关联特性 ,甚至于 SQL 查询 ,这些却是 NoSQL 的短板,也决定了 NoSQL 尚且取代不了关系型数据库。

四、NoSQL 分类

通常情况下,我们将 NoSQL 按功能特性不同分为4大类,即键值型、面向列族存储、文档型以及图数据库,参考下面表格:

类型

特点

应用

案例

键值型

简单数据存储形式,通过键来访问值

图像存储

Redis

MemcacheDB

Berkeley DB

可以通过key快速查询到其value

基于键的文件系统

一般来说,存储不管value的格式,照单全收

设计为可扩展系统

列族

稀疏矩阵存储形式,通过行列作为键

网络爬虫结果存储

Hbase

Cassandra

Accumulo

方便存储结构化和半结构化数据

大数据交互式查询

方便数据压缩提供数据查询IO优势

软一致性

文档型

讲层次化的数据结构存储形式

文档搜索

MongoDB

CouchDB

Couchbase

文档存储一般用类似json的格式存储

互联网内容管理

对某些字段建立索引以实现关系型数据库的某些功能

高度变化的数据

图存储

适用于关联性要求高的问题

社交网络

Neo4j

FlockDB

InfiniteGraph

图形关系的最佳存储

欺诈侦测

使用传统关系数据库来解决的话性能低下,而且设计使用不方便

强关联的数据

五、常见 NoSQL 介绍

以下四种 NoSQL 是最常使用的:

  • Redis:基于内存、支持持久化的键值型数据库

  • HBase:面向列、高效随机读写的 NoSQL

  • Cassandra:面向列、写入优化的 NoSQL

  • MongoDB:查询高效、支持多索引的文档型数据库。

1、Redis:

Redis 是一个高性能、Key-Value的 NoSQL 数据库,内存访问,支持持久化磁盘,支持多种数据结构和算法(string,hash,list,set,zset,Bitmaps, HyperLogLog 等)。主要应用在缓存场景。

主要特点:

  • 高性能

  • 纯内存访问(非数据同步无需读取磁盘)

  • 单线程

  • 非阻塞多路IO复用

2、HBase:

HBase 是一个分布式、面向列的 NoSQL 数据库,是 Google Bigtable 的开源实现,底层存储基于 HDFS,原生支持 MapReduce 计算框架。主要应用在海量数据存储、超大规模随机读写访问的场景。

主要特点:

  • 随机读写访问

  • 分布式、面向列

  • 强一致性

  • 底层数据存储在 HDFS 之上

3、Cassandra:

Cassandra 是一个分布式、无中心、弹性可扩展的 NoSQL 数据库,基于 Amazon Dynamo 的分布式设计和 Google Bigtable 的数据模型。Cassandra 为优异的写吞吐做了特别优化,因此通常应用在写大于读的场景。

主要特点:

  • 分布式、去中心化

  • 弹性可扩展

  • 可调 一致性(consistency level)

  • 高性能

4、MongoDB:

MongoDB 是一个分布式、面向文档的 NoSQL 数据库,用于大容量数据存储,提供统一的数据格式(bson ,支持不同类型的索引。适用于存放对象或Json格式数据、追求高性能的业务场景。

主要特点:

  • 面向文档,非常灵活

  • 支持各种类型的索引

  • 复制和故障切换,实现高可用性

  • 自动分片,易于扩展

本文介绍了 NoSQL 基本概念,CAP 理论,NoSQL 的分类,重点讲解了大数据存储常用的几种 NoSQL 数据库,包括基本概念、使用场景、主要特点。

往期推荐

Kafka 的 20 项最佳优化实践

HBase漫谈 | HBase分区过多影响&合理分区数量

长按识别二维码加关注

如果喜欢本文就分享到朋友圈吧 (*^__^*)

你的「在看」也是一种鼓励! :point_down:

我来评几句
登录后评论

已发表评论数()

相关站点

热门文章