【摘要】HBase是一种高可靠、高性能、面向列、可扩展的分布式存储系统,也是著名的NoSQL数据库之一。NoSQL数据库的出现就是为了解决大规模数据集合多种数据类型带来的挑战,尤其是大数据应用的问题。本文简要介绍了NoSQL数据库的定义、分类、特点以及目前流行的NoSQL数据库系统,并对NoSQL和SQL语法进行了简单的比较,为大家学习NoSQL数据库提供了有益的参考。1.NoSQL的出现多年来,关系型数据库系统在解决数据存储、服务和处理问题方面取得了巨大成功。一些大公司已经使用关系数据库构建了自己的系统,例如在线交易处理系统和后端分析应用系统。联机事务处理(OLTP)系统用于实时记录事务信息。对此类系统的期望是能够快速返回响应信息(通常为毫秒级)。联机分析处理(OLAP)系统用于分析和查询存储的数据。OLAP属于商业智能范畴,需要对数据进行研究、处理和分析,以收集信息,进一步驱动商业决策。关系数据库的内部设计是由关系算法决定的,这些系统需要预先定义一个模式(schema)和要遵守的数据类型。SQL是与这些系统交互的标准方式。但是当出现对象-关系不匹配问题时,SQL并不是表达访问模式的最佳方式。例如,在当前火热的大数据领域,关系型数据库就不能很好地发挥作用。大数据的常见定义包括:首先,大数据是指大到你必须研究它才能从中获得一些见解的数据;第二,大数据是不再适用于单机的数据。这些观点并不完整,我们需要以一种根本不同的方式来思考数据,即如何驱动业务价值,而这种数据就是大数据。在大数据领域,系统需要能够适应不同种类的数据格式和数据源,不需要事先严格定义模式,能够处理大规模数据。就这样,NoSQL出现了。2、NoSQL的定义NoSQL(NoSQL=NotOnlySQL),意为“不只是SQL”,是一场全新的数据库革命运动。NoSQL的支持者提倡使用非关系数据存储。大多数数据库技术都不能保证支持ACID(Atomicity、Consistency、Isolation和Durability),而且大多数都是开源项目,统称为NoSQL。3、NoSQL的分类一般而言,NoSQL数据库分为四类:键值(Key-Value)存储数据库、列存储数据库、文档数据库和图(Graph)数据库。它们的数据模型、优缺点和典型应用场景如表1所示。表1四大NoSQL数据库分析4.NoSQL的特点NoSQL数据库没有统一的架构,但都有一些共同的特点,如表1所示。表2.表2NoSQL的特点5.常见的NoSQL数据库比较适合NoSQL数据库:(1)数据模型比较简单;(2)需要具有更大灵活性的IT系统;(3)对数据库性能提出了更高的要求;(4)不需要高度的数据一致性;(5)对于给定的键,更容易映射复杂的值环境。常见的NoSQL数据库如表3所示。表3常见的NoSQL数据库#p#六、NoSQL和SQL语法的简单比较上面介绍了NoSQL的基本情况,下面以HBase和ORACLE为例简单比较语法NoSQL和SQL。HBase数据库被认为是具有最全面安全功能的NoSQL数据库产品之一,它被证明是一个强大的工具,尤其是在已经使用Hadoop的情况下。今天,它是Apache项目,拥有许多开发人员和蓬勃发展的用户社区。1、创建表如果要创建一个包含“info”字段的表“mytable”,那么:(1)ORACLE中的语法是:createtablemytable(infovarchar(30)notnull);(2)HBase中的语法是:create'mytable','cf'这个命令创建一个表“mytable”,它有一个列族(“cf”)。2、写入数据如果要向表中写入数据“hellohbase”,那么:(1)ORACLE中的语法是:insertintomytable(info)values('hellohbase');(2)HBase中的语法是:put'mytable','first','cf:info','hellohbase'该命令将“hellohbase”插入到表中“cf:info”列对应的数据单元中“mytable”表的“第一”行。3、读(查)数据如果要从表中读取单条数据,那么:(1)ORACLE中的语法是:select*frommytablewhereinfo='hellohbase';(2)HBase中的语法是:get'mytable','first'这个命令输出行的数据单元。如果要从表中读取所有数据,那么:(1)ORACLE中的语法是:select*frommytable;(2)HBase中的语法是:scan'mytable'这个命令输出所有的数据。4、删除数据如果要从表中删除数据,那么:(1)ORACLE中的语法是:deletefrommytablewhereinfo='hellohbase';(2)HBase中的语法是:put'mytable','first','cf:info','hellohbase1'这个命令用最新的值覆盖旧的值,相当于删除原来的数据。5、修改数据如果要修改表中的数据,那么:(1)ORACLE中的语法是:updatemytablesetinfo='hellohbase1'whereinfo='hellohbase';(2)HBase中的语法是:put'mytable','first','cf:info','hellohbase1'这个命令用最新的值覆盖旧的值,相当于修改了原来的数据。6、删除表如果要删除一个表,那么:(1)ORACLE中的语法是:droptablemytable;(2)HBase中的语法是:disable'mytable'drop'mytable'该命令先“禁用”表,再“删除”表。我们可以看到HBase的语法比较简单,所以可以把上面的所有命令都放到一个shell脚本中,让命令批量执行。下面我们来看一下具体操作:第一步,编写名为“command.sh”的脚本,脚本内容如下:exec/root/zhouzx/hbase-1.0.1/bin/hbaseshell<
