NoSQL
是非关系型数据库的统称,它采用类似键/值、列族、文档等非关系模型。
MySQL
等关系型数据库,为什莫还需要NoSQL
数据库?NoSQL
数据库的产生是为了解决传统关系型数据库应对大数据的应用难题,包括大规模数据集存储、多重数据种类等方面的挑战。
常见的NoSQL数据库种类:
这里用Hbase
做个简单的了解:
谷歌和Facebook每天为他们的用户收集万亿比特的数据,这些数据存储并非固定模式。
Hbase
是一个高可靠、高性能、可伸缩的分布式数据库。主要用来存储非结构化以及半结构化的松散数据。
Hbase
的目标是处理非常庞大的表,可以同过水平扩展的方式,利用廉价的计算机集群处理超过10亿行数据和数百万列元素组成的数据表。
Hbase
是一个构建在HDFS上的分布式列存储系统。
补充:
半结构化数据是结构化数据的一种形式,它并不符合关系型数据库或其他数据表的形式关联起来的数据模型结构,但包含相关标记,用来分隔语义元素以及对记录和字段进行分层。因此,它也被称为自描述的结构。半结构化数据,属于同一类实体可以有不同的属性,即使他们被组合在一起,这些属性的顺序并不重要。常见的半结构数据有XML和JSON
非结构化数据:顾名思义,就是没有固定结构的数据。各种文档、图片、视频/音频等都属于非结构化数据。对于这类数据,我们一般直接整体进行存储,而且一般存储为二进制的数据格式。
1.进入HBase客户端命令行
[@hadoop102 hbase]$ bin/hbase shell
2.查看帮助命令
hbase(main):001:0> help
3.查看当前数据库中有哪些表
hbase(main):002:0> list
4.表的操作
4.1. 创建表
hbase(main):002:0> create 'student','info'
4.2.插入数据到表
hbase(main):003:0> put 'student','1001','info:sex','male'
hbase(main):004:0> put 'student','1001','info:age','18'
hbase(main):005:0> put 'student','1002','info:name','Janna'
hbase(main):006:0> put 'student','1002','info:sex','female'
hbase(main):007:0> put 'student','1002','info:age','20'
4.3.扫描查看表数据
hbase(main):008:0> scan 'student'
查询前几条数据
scan 'student',{LIMIT=>5}
hbase(main):009:0> scan 'student',{STARTROW => '1001', STOPROW => '1001'}
hbase(main):010:0> scan 'student',{STARTROW => '1001'}
4.4.查看表结构
hbase(main):011:0> describe 'student'
hbase(main):011:0> desc 'student'
4.5.更新指定字段的数据
hbase(main):012:0> put 'student','1001','info:name','Nick'
hbase(main):013:0> put 'student','1001','info:age','100'
4.6.查看“指定行”或“指定列族:列”的数据
hbase(main):014:0> get 'student','1001'
hbase(main):015:0> get 'student','1001','info:name'
4.7.统计表数据行数
hbase(main):021:0> count 'student'
4.8.删除数据
删除某rowkey的全部数据:
hbase(main):016:0> deleteall 'student','1001'
删除某rowkey的某一列数据:
hbase(main):017:0> delete 'student','1002','info:sex'
4.9.清空表数据
hbase(main):018:0> truncate 'student'
提示:清空表的操作顺序为先disable,然后再truncate。
4.10.删除表
首先需要先让该表为disable状态:
hbase(main):019:0> disable 'student'
然后才能drop这个表:
hbase(main):020:0> drop 'student'
提示:如果直接drop表,会报错:ERROR: Table student is enabled. Disable it first.
4.11.变更表信息
将info列族中的数据存放3个版本:
hbase(main):022:0> alter 'student',{NAME=>'info',VERSIONS=>3}
hbase(main):022:0> get 'student','1001',{COLUMN=>'info:name',VERSIONS=>3}
总结:这篇博客只是方便给初学一个认知,并没有涉及底层原理知识!