什么是nosql
NoSQL(NoSQL = Not Only SQL),意思是不仅仅是SQL的扩展,一般指的是非关系型的数据库。
随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,传统的电信行业动辍就千万甚至上亿的数据,甚至有客户提出需要存储相关的日志数据50年以上,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。
关系型数据库难以克服的问题:
不能很好处理对数据库高并发读写的需求
不能很好处理对海量数据的高效率存储和访问的需求
不能很好处理对数据库的高可扩展性和高可用性的需求
为什么使用nosql
SQL语言和关系型数据库(MySQL、PostgreSQL、Oracle等)是通用的数据解决方案,占有绝大多数的市场。但是就像上面提到的,它有很多难以解决的问题。不过在最近兴起的NoSQL运动中,涌现出一批具备高可用性、支持线性扩展、支持Map/Reduce操作等特性的数据产品,它们具有如下特性:
频繁的写入操作、相对较少的读取统计信息的操作
海量数据(如数据仓库中需要分析的数据)适合存储在一个结构松散、分布式的文件存储系统中
存储二进制文件(如mp3或者pdf文档)并且能够直接为用户的浏览器提供下载功能
使用这些数据产品并不是要取代原有的数据产品,而是为不同的应用场景提供更多的选择。也就是说,在一些特定的情况下如果是关系型的数据库解决不了的问题,那么就可以考虑使用nosql,而不是说完全将应用移植到nosql上,毕竟适合才是最好的。
现在流行的nosql
下面对现在的nosql进行了整理,其中包括各种nosql的官方网站。
15个nosql数据库
HBase是什么
HBase是Apache Hadoop中的一个子项目,Hbase依托于Hadoop的HDFS作为最基本存储基础单元,通过使用hadoop的DFS工具就可以看到这些这些数据 存储文件夹的结构,还可以通过Map/Reduce的框架(算法)对HBase进行操作,如下图所示:
HBase在产品中还包含了Jetty,在HBase启动时采用嵌入式的方式来启动Jetty,因此可以通过web界面对HBase进行管理和查看当前运行的一些状态,非常轻巧方便。
HBase是Apache Hadoop中的一个子项目,现已成为Apache的顶级项目。
HBase是Google Bigtable(基于Google File System)的开源山寨版本。
为什么采用HBase
HBase 不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库.所谓非结构化数据存储就是说HBase是基于列的而不是基于行的模式,这样方便读写你的大数据内容。
HBase是介于Map Entry(key & value)和DB Row之间的一种数据存储方式。就点有点类似于现在流行的Memcache,但不仅仅是简单的一个key对应一个 value,你很可能需要存储多个属性的数据结构,但没有传统数据库表中那么多的关联关系,这就是所谓的松散数据。
简单来说,你在HBase中的表创建的可以看做是一张很大的表,而这个表的属性可以根据需求去动态增加,在HBase中没有表与表之间关联查询。你只需要 告诉你的数据存储到Hbase的那个column families 就可以了,不需要指定它的具体类型:char,varchar,int,tinyint,text等等。但是你需要注意HBase中不包含事务此类的功能。
Apache HBase 和Google Bigtable 有非常相似的地方,一个数据行拥有一个可选择的键和任意数量的列。表是疏松的存储的,因此用户可以给行定义各种不同的列,对于这样的功能在大项目中非常实用,可以简化设计和升级的成本。
HBase的存储结构
HBase 是基于列的数据库,让我们看一下关系型数据库和hbase数据库存储的对比。
行式存储和列式存储对比:
行式存储
数据是按行存储的
没有索引的查询使用大量I/O
建立索引和物化视图需要花费大量时间和资源
面对查询的需求,数据库必须被大量膨胀才能满足性能要求
列式存储
数据按列存储——每一列单独存放
数据即是索引
只访问查涉及的列——大量降低系统IO
每一列由一个线索来处理——查询的并发处理
数据类型一致,数据特征相似——高效压缩
HBase与关系型数据库的对比
HBase 是基于
下面的表格中hbase和RDBMS的对比关系
HBase
RDBMS
数据类型
只有字符串
丰富的数据类型
数据操作
简单的增删改查
各种各样的函数,表连接
存储模式
基于列存储
基于表格结构和行存储
数据保护
更新后旧版本仍然会保留
替换
可伸缩性
轻易的进行增加节点,兼容性高
需要中间层,牺牲功能
hadoop使用:
hadoop使用(一)
hadoop使用(二)
hadoop使用(三)
hadoop使用(四)
hadoop使用(五)
hadoop使用(六)
hbase实战:
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com