NoSQL数据库概览及其与SQL语法的比较
分类:软件项目实践中的SQL语言一瞥
* Neo4j:一个图数据库,支持ACID事务
* InfiniteGraph:用来维持和遍历对象间的关系,支持分布式数据存储
* AllegroGraph:结合使用了内存和磁盘,提供了高可扩展性,支持SPARQ、RDFS++和Prolog推理
六、NoSQL和SQL语法的简单比较
前面介绍了NoSQL的基本情况,下面以HBase和ORACLE为例,对NoSQL和SQL的语法进行简单的比较。HBase数据库被认为是安全特性最完善的NoSQL数据库产品之一,它被证实是一个强大的工具,尤其是在已经使用Hadoop的场合。如今,它已经是Apache顶级项目,有着众多的开发人员和兴旺的用户社区。
1.创建表
如果要创建一个表“mytable”,其中包含了一个“info”字段,那么:
(1)ORACLE中的语法为:
create table mytable
(
info varchar(30)not null
);
(2)HBase中的语法为:
create ‘mytable’, ‘cf’
该命令创建了一个有一个列族(“cf”)的表“mytable”。
2.写数据
如果要向表中写入数据“hello hbase”,那么:
(1)ORACLE中的语法为:
insert into mytable(info) values(‘hello hbase’);
(2)HBase中的语法为:
put ‘mytable’, ‘first’, ‘cf:info’, ‘hello hbase’
该命令在“mytable”表的“first”行中的“cf:info”列对应的数据单元中插入“hello hbase”。
3.读(查)数据
如果要从表中读出单条数据,那么:
(1)ORACLE中的语法为:
select * from mytable where info = ‘hello hbase’;
(2)HBase中的语法为:
get ‘mytable’, ‘first’
该命令输出了该行的数据单元。
如果要从表中读出所有数据,那么:
(1)ORACLE中的语法为:
select * from mytable;
(2)HBase中的语法为:
scan ‘mytable’
该命令输出了所有数据。
4.删数据
如果要从表中删除数据,那么:
(1)ORACLE中的语法为:
delete from mytable where info = ‘hello hbase’;
(2)HBase中的语法为:
put ‘mytable’, ‘first’, ‘cf:info’, ‘hello hbase1’
该命令用最新的值覆盖了旧的值,就相当于将原数据删除了。
5.修改数据
如果要在表中修改数据,那么:
(1)ORACLE中的语法为:
update mytable set info = ‘hello hbase1’ where info = ‘hellohbase’;
(2)HBase中的语法为:
put ‘mytable’, ‘first’, ‘cf:info’, ‘hello hbase1’
该命令用最新的值覆盖了旧的值,就相当于修改了原数据。
6.删表
如果要删除表,那么:
(1)ORACLE中的语法为:
drop table mytable;
(2)HBase中的语法为:
disable ‘mytable’
drop ‘mytable’
该命令先将表“disable”掉,然后再“drop”掉。
我们可以看到,HBase的语法比较的简单,因此完全可以将上述所有命令放到一个shell脚本中,让命令批量执行。下面,我们来具体操作一下:
第一步,编写名为“command.sh”的脚本,其内容如下:
exec /root/zhouzx/hbase-1.0.1/bin/hbase shell <<EOF
create ‘mytable’, ‘cf’
put ‘mytable’, ‘first’, ‘cf:info’, ‘hello hbase’
get ‘mytable’, ‘first’
scan ‘mytable’
put ‘mytable’, ‘first’, ‘cf:info’, ‘hello hbase1’
disable ‘mytable’
drop ‘mytable’
EOF
第二步,将该脚本上传到Linux机器的安装HBase的用户下,依次执行“dos2unix command.sh”和“chmod 777command.sh”命令来转换文件格式和对文件赋权限。
第三步,执行“./command.sh”命令,在Linux界面上,我们可以看到如下输出信息:
HBase Shell; enter ‘help<RETURN>’ for list of supportedcommands.
Type "exit<RETURN>" to leave the HBase Shell
Version 1.0.1, r66a93c09df3b12ff7b86c39bc8475c60e15af82d, Fri Apr17 22:14:06 PDT 2015
create ‘mytable’, ‘cf’
0 row(s) in 0.6660 seconds
Hbase::Table – mytable
put ‘mytable’, ‘first’, ‘cf:info’, ‘hello hbase’
0 row(s) in 0.1140 seconds
get ‘mytable’, ‘first’
懂得倾听别人的忠告。