NoSQL(Not only sql)基础简介

NoSQL是非关系型数据库

两者关系,HBase是NoSQL的一种。

NoSQL特性

1.Eventual  consistency(最终一致性):

写入数据库之后,

你不一定能马上读到刚写入的数据

但最终会保持一致。

2.  NoSQL数据库不怕数据冗余多副本,因为成本比较低。

而且这样查询很多数据就不需要join了,很多数据在一张表里就搞定了。

关系型数据库要避免数据冗余,成本会增加不少。

关系型数据库本身硬盘是特殊的,空间就已经很贵了,column可以用成char绝对不会用varchar。

NoSQL概念解释

1. CAP理论:

Consistency:数据一致性

Availability :服务可用性(7x24小时)

Partition Tolerance:分区容错性(不同机器上分布式部署后并行处理,

并可以进行灾难恢复。也就是某台机器上服务挂了,不影响整个系统的继续处理)

可以看到关系型数据库比较侧重于数据一致性(读写随时一致)和服务7x24小时可用

Nosql数据库就比较重视一致性和容灾,虽然不是强一致性,而是最终一致性

,对于服务7x24小时可用做的也没那么好。

HBase的Availability是通过zookeeper实现的,原生不支持,但是有方案。

2. 索引自己看吧,功能比较弱。

HBase要用到HDFS 

index一般建在主键上。

3. Nosql几种主流查询方式

(1)脚本语言,如js

(2)后面加了对sql语言的支持,但是优化器还没有,做的不是很好。不如hive。

(3)有些对mapreduce 代码也支持,所以mapreduce可以跨节点来计算。

4.Sharding(分片)

和hive partition是一个意思!!!

相当于把一个表,分布式存储在不同机器上,进而分布式查询。

5. 根据业务需求来选择Nosql产品

主要是四类:

(1)key-value store

最广泛但不是最流行,基于key-value。可以理解为一个大的hashmap table。

对数据结构schema没有特别要求。

产品如redis等。

数据的格式最大的特点是:都有一个key,比如说下图中row_id是key,其他列都是value。

(2)wide Column

和key-value方式唯一的区别就是宽列(column families / super column)。

Column famiilies就是一组column的集合,

以Hbase领衔,Google big table,Cassandra等。

更接近大数据的处理规模。

格式如下图所示,column families也就是多个supercolumn,supercolumn下还有column。

(3)Document Store(完全没听懂,但是不重要)

以mongoDB领衔

文档通常是json对象,本身就是一种schema。

(4)用于关系型分析,比如朋友网络如何建立的。

基于图的数据库分析会方便。

猜你喜欢

转载自blog.csdn.net/u011495642/article/details/84331770