NoSQL数据库概览及其与SQL语法的比较是怎样的

44次阅读
没有评论

共计 4238 个字符,预计需要花费 11 分钟才能阅读完成。

NoSQL 数据库概览及其与 SQL 语法的比较是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面丸趣 TV 小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

HBase 是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,同时也是知名的 NoSQL 数据库之一。NoSQL 数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用的难题。

丸趣 TV 小编对 NoSQL 数据库的定义、分类、特征、当前比较流行的 NoSQL 数据库系统等进行了简单的介绍,并对 NoSQL 和 SQL 语法进行了简单的比较,为大家对 NoSQL 数据库的学习提供了有益的参考。

一、NoSQL 的出现

关系型数据库系统多年来在解决数据存储、服务和处理问题方面取得了巨大的成功。一些大型的公司使用关系型数据库建立了自己的系统,如联机事务处理系统和后端分析应用系统。联机事务处理 (OLTP) 系统用来实时记录交易信息。对这类系统的期望是能够快速返回响应信息 (一般在毫秒级)。联机分析处理(OLAP) 系统用来分析查询所储存的数据。OLAP 属于商业智能的范畴,数据需要研究、处理和分析,以便收集信息,进一步驱动商业决策。

关系型数据库的内部设计由关系算法决定,这些系统需要预先定义一个模式 (schema) 和数据要遵守的类型。SQL 是与这些系统交互的标准方式。但在对象 - 关系不匹配问题出现的场合,SQL 就不是表达访问模式的 *** 方式了。例如目前炙手可热的大数据领域,关系型数据库不能很好地工作。

有关大数据常见定义包括:***,大数据意味着数据足够大,为了从这些数据中获得一些真知灼见,你不得不研究它;第二,大数据就是不再适用于单台机器的数据。这些观点并不完整,我们需要用一种根本上不同的方式来考虑数据,从如何驱动商业价值的角度来考虑数据,这种数据就是大数据。

在大数据领域中,系统需要能够适应不同种类的数据格式和数据源,不需要预先严格定义模式,并且能够处理大规模数据。这样,NoSQL 就出现了。

二、NoSQL 的定义

NoSQL(NoSQL= Not Only SQL),意即“不仅仅是 SQL”,是一项全新的数据库革命性运动。NoSQL 的拥护者们提倡运用非关系型的数据存储。大多数数据库技术不能保证支持 ACID(原子性、一致性、隔离性和持久性),而且大部分技术都是开源项目,这些技术作为整体被称为 NoSQL。

三、NoSQL 的分类

一般将 NoSQL 数据库分为四大类:键值 (Key-Value) 存储数据库、列存储数据库、文档型数据库和图形 (Graph) 数据库。它们的数据模型、优缺点、典型应用场景如表 1 所示。

表 1 四大 NoSQL 数据库分析

四、NoSQL 的特征

NoSQL 数据库并没有一个统一的架构,但是它们都普遍存在表 2 所示的一些共同特征。

表 2 NoSQL 的特征

五、常见的 NoSQL 数据库

比较适合采用 NoSQL 数据库的场合是:(1)数据模型比较简单;(2)需要灵活性更强的 IT 系统;(3)对数据库性能要求较高;(4)不需要高度的数据一致性;(5)对于给定 key,比较容易映射复杂值的环境。

常见的 NoSQL 数据库如表 3 所示。

表 3 常见的 NoSQL 数据库

六、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  COLUMN CELL cf:info timestamp=1435807200326, value=hello hbase 1 row(s) in 0.0440 seconds scan  mytable  ROW COLUMN+CELL first column=cf:info,timestamp=1435807200326, value=hello hbase 1 row(s) in 0.0210 seconds put  mytable ,  first ,  cf:info ,  hello hbase1  0 row(s) in 0.0040 seconds disable  mytable  0 row(s) in 1.1930 seconds drop  mytable  0 row(s) in 0.1940 seconds

整个脚本执行过程不过几秒钟,但我们之前提到的所有 HBase 命令都包括其中了,由此可见批处理的威力。大家一定要好好体会一下。

七、总结

本文对 NoSQL 进行了全面的介绍,并比较了它与 SQL 语法之间的不同。尽管大多数 NoSQL 数据存储系统都已被部署到实际应用中,但仍存在以下挑战性问题需要解决:

第一,已有 key-value 数据库产品大多是面向特定应用自治构建的,缺乏通用性。

第二,已有产品支持的功能有限(不支持事务特性),导致其应用具有一定的局限性。

第三,已有一些研究成果和改进的 NoSQL 数据存储系统,但它们都是针对不同应用需求而提出的相应解决方案,很少从全局考虑系统的通用性,也没有形成系列化的研究成果。

第四,缺乏类似关系数据库所具有的强有力的理论 (如 armstrong 公理系统)、技术(如成熟的基于启发式的优化策略、两段封锁协议等)、标准规范(如 SQL 语言) 的支持。

第五,很多 NoSQL 数据库没有提供内建的安全机制。

随着云计算、移动互联网等技术的发展,大数据广泛存在,同时也出现了许多云环境下的新型应用,如社交网络、移动服务、协作编辑等。这些新型应用对海量数据管理或称云数据管理系统也提出了新的需求,NoSQL 数据库在这些方面有大展身手的机会。我们有理由相信,NoSQL 数据库的明天会更加的美好!

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注丸趣 TV 行业资讯频道,感谢您对丸趣 TV 的支持。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-19发表,共计4238字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)