论文部分内容阅读
摘要:随着云计算技术的不断发展,云计算将影响传统数据库的发展趋势,同时,云服务模式正在逐步得到市场认可,本文将探讨云数据库所支持的几种数据模型及其它们的优缺点,NoSQL数据库的优劣势分析,最后介绍了目前常见的几种云数据库产品。
关键词:云计算 数据模型 云数据库 NoSQL数据库
0 引言
从2006年Google提出“云计算”的概念至今,云计算正以史无前例的速度发展,国内外各大IT企业都在开发布署各自的云计算平台,云计算的应用更趋多样化,目前在互联网上我们看到的很多应用都可以看到“云”的身影,诸如“云存储”、“云安全”、“云物联”、“云邮件”、“云输入法”等等。总的来说云计算包括三个层次的服务:基础设施即服务(IaaS),平台即服务(PaaS)和软件即服务(SaaS)。云服务模式实现了资源集中配置和管理,实现按需采购、配置,避免资源浪费,能够更好满足用户不断变化的需求。同时降低管理维护成本,随着云计算技术的不断发展,系统的可靠性、扩展性、稳定性也会更好,云计算将影响传统数据库的发展趋势,云服务模式将逐步得到市场认可,反过来讲,传统数据库必须能更好适应云计算环境的需求。传统的关系型数据库由于其天生的限制,已经越来越无法满足目前时代的要求,云计算时代对数据库技术提出了新的需求,主要表现在海量数据处理,大规模集群管理,低延迟读写速度,建设及运营成本。虽然它在数据存储方面占据了不可动摇的地位,但对数据扩展、读写速度、支撑容量以及建设和运营成本的要求方面,就稍显逊色。下面我们来探讨适应于云计算的数据库所支持的数据模型。
1 云数据模型的类型
无论是关系型数据库还是非关系型数据库,都是某种数据模型的实现,不同的数据模型可以满足不同的应用需求。数据模型会影响客户端通过API对数据的操作,决定了客户端如何对数据进行编码存储。云数据库的设计可以采用不同的数据模型,目前适应于云计算平台的数据模型有以下几类:
1.1 基于云计算的关系模型。关系型云数据库的数据模型涉及行组和表组等相关概念。此模型的数据结构为一个表是一个逻辑关系,它包含一个分区键,用来对表进行分区。具有相同分区键的多个表的集合称为表组。在表组中,具有相同分区键值的多个行的集合称为行组。一个行组中包含的行总是被分配到同一个数据节点上。每个表组会包含多个行组,这些行组会被分配到不同的数据节点上。一个数据分区包含了多个行组。因此,每个数据节点都存储了位于某个分区键值区间内的所有行。微软的SQL Azure云数据库就是基于此模型的。
1.2 NoSQL数据库数据模型。由于在设计上和传统的关系型数据库相比有很大的不同,故称此类数据库为“NoSQL(Not only SQL)”系列数据库,即非关系型的数据库。与关系型数据库相比,此类数据库非常关注对数据高并发读写和海量数据的存储,在架构和数据模型方面做了简化,而在扩展和并发等方面做了增强。此类数据库种类繁多,且各有优缺点,其数据模型有如下四类:①键值(key-value)存储模型。使用一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。其数据模型为一系列的键值对。它能提供非常快的查询速度、大的数据存放量和高并发操作,非常适合通过主键对数据进行查询和修改等操作,缺点是存储的数据缺少结构化,不支持复杂的操作。运用此模型的数据库有BigTable、Tokyo cabinet/Tyrant、Redis、Voldmort、Berkeley DB等。②列式存储模型。列式存储和关系模型相似,与关系模型存储记录不同,列式存储以流的方式在列中存储所有的数据。其数据模型为以列簇式存储,将同一列数据存放在一起。属于同一列的数据会尽可能地存储在硬盘同一个页中,而不是将属于同一个行的数据存放在一起。使用列式数据库,将会节省大量I/O,并且大多数列式数据库都支持Column Family这个特性,能将多个列并为一个小组。总体而言,这种数据模型的优点是查找速度快,可扩展性强,更容易进行分布式扩展,缺点是功能相对局限。运用此模型的数据库有Cassandra、HBase、Riak等。③文档模型。在数据结构上,文档型和键值型很相似,也是一个key对应一个value,但是这个Value主要以JSON或者XML等格式的文档来进行存储,是有语义的,并且文档数据库一般可以对Value来创建Secondary Index来方便上层的应用,而这点是普通键值数据库所无法支持的。这种数据模型的优点是对数据结构要求不严格,缺点是对查询性能不高,而且缺乏统一的查询语法。运用此类模型的数据库有MongoDB、CouchDB等。④图形模型。图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。其数据模型为图结构,其优点是可以很方便地利用图的相关算法,缺点是需要对整个图做计算才能得出结果,不容易做分布式的集群方案。运用此类模型的数据库有Neo4J、InfoGrid、Infinite Graph等。数据模型有着各自的优缺点,它们适用于不同的领域。不管选择关系模型,还是非关系模型,都要根据实际应用的场景做出选择。有时候单一的数据模型并不能满足我们的需求,对于许多大型的应用可能需要集成多种数据模型。
2 NoSQL数据库的优劣势分析
2.1 NoSQL数据库的优点:①易扩展。NoSQL数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性。数据之间无关系,这样就非常容易扩展。也无形之间,在架构的层面上带来了可扩展的能力。②大数据量,高性能。NoSQL数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。这得益于它的无关系性,数据库的结构简单。③高可用。NoSQL在不太影响性能的情况,就可以方便的实现高可用的架构。比如Cassandra,HBase模型,通过复制模型也能实现高可用。④灵活的数据模型。NoSQL无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式。而在关系数据库里,增删字段是一件非常麻烦的事情。如果是非常大数据量的表,增加字段简直就是一个噩梦。这点在大数据量的web2.0时代尤其明显。 2.2 NoSQL数据库的缺点:①不提供对SQL的支持:如果不支持SQL这样的工业标准,将会对用户产生一定的学习和应用迁移成本。②支持的特性不够丰富:现有产品所提供的功能都比较有限,大多数NoSQL数据库都不支持事务,也不像MS SQL Server和Oracle那样能提供各种附加功能,比如BI和报表等。③现有产品的不够成熟:大多数产品都还处于初创期,和关系型数据库几十年的完善不可同日而语。
3 常见的云数据库产品
①基于关系模型的微软SQL Azure云数据库。SQL Azure是由微软SQL Server 2008为主,建构在Windows Azure云操作系统之上,运行云计算的关系数据库服务,是一种云存储的实现,提供网络型的应用程序数据存储的服务。SQL Azure 架构在数据中心可分为三个部份:a服务提供层;b平台提供层;c基础建设层。②基于键值模型的Google BigTable云数据库。BigTable是Google设计的分布式数据存储系统,用来处理海量的数据的一种非关系型的数据库。是一个稀疏的、分布式的、持久化存储的多维度排序Map。BigTable的设计目的是可靠的处理PB级别的数据,并且能够部署到上千台机器上。BigTable已经实现了下面的几个目标:适用性广泛、可扩展、高性能和高可用性。③基于列式存储模型的Facebook Cassandra云数据库。Cassandra项目是Facebook在2008年开源出来的,随后Facebook自己使用Cassandra的另外一个不开源的分支,而开源出来的Cassandra主要被Amazon的Dynamite团队来维护,并且Cassandra被认为是Dynamite2.0版本。目前除了Facebook之外,twitter和digg.com都在使用Cassandra。Cassandra的主要特点就是它不是一个数据库,而是由一堆数据库节点共同构成的一个分布式网络服务,对Cassandra的一个写操作,会被复制到其他节点上去,对Cassandra的读操作,也会被路由到某个节点上面去读取。其主要特征:分布式,基于column的结构化,高伸展性。
4 结束语
如今,云数据库随着云计算平台的日益盛行和普及,云数据库势必会成为未来数据库的发展趁势,鉴于云数据库还处在发展阶段,诸如不支持事务,没有统一的标准,以及数据存放在云端如何保证数据的安全性等一些问题的存在,以及传统数据库如何能更好地适应云计算环境的需求,这些都迫使我们有必要研究出一种新的数据模型,更好地适应未来云计算的各种应用需求。
参考文献:
[1]程莹,张云勇,房秉毅,徐雷.云计算时代的数据库研究[J].电信技术,2011(1):27-28.
[2]林子雨,赖永炫,林琛,谢怡,邹权.云数据库研究[J].软件学报,2012,23(5):1148-1166.
[3]廖峰,成静静.基于云计算的数据库云方案的研究与设计[J].数据通信,2012(3):45-48.
[4]张瑞.NoSQL数据库的类型分析[EB/OL].圣才学习网.http://it.100xuexi.com/ExtendItem/OTDetail_cc71997d-776b-4381-a2cc-97b687ccc268.htm.
作者简介:
姚远耀(1984-),男,湖北荆州人,讲师,主要研究方向:网络安全、数据库技术。赖蘋华(1984-),女,江西萍乡人,讲师,主要研究方向:软件开发。
关键词:云计算 数据模型 云数据库 NoSQL数据库
0 引言
从2006年Google提出“云计算”的概念至今,云计算正以史无前例的速度发展,国内外各大IT企业都在开发布署各自的云计算平台,云计算的应用更趋多样化,目前在互联网上我们看到的很多应用都可以看到“云”的身影,诸如“云存储”、“云安全”、“云物联”、“云邮件”、“云输入法”等等。总的来说云计算包括三个层次的服务:基础设施即服务(IaaS),平台即服务(PaaS)和软件即服务(SaaS)。云服务模式实现了资源集中配置和管理,实现按需采购、配置,避免资源浪费,能够更好满足用户不断变化的需求。同时降低管理维护成本,随着云计算技术的不断发展,系统的可靠性、扩展性、稳定性也会更好,云计算将影响传统数据库的发展趋势,云服务模式将逐步得到市场认可,反过来讲,传统数据库必须能更好适应云计算环境的需求。传统的关系型数据库由于其天生的限制,已经越来越无法满足目前时代的要求,云计算时代对数据库技术提出了新的需求,主要表现在海量数据处理,大规模集群管理,低延迟读写速度,建设及运营成本。虽然它在数据存储方面占据了不可动摇的地位,但对数据扩展、读写速度、支撑容量以及建设和运营成本的要求方面,就稍显逊色。下面我们来探讨适应于云计算的数据库所支持的数据模型。
1 云数据模型的类型
无论是关系型数据库还是非关系型数据库,都是某种数据模型的实现,不同的数据模型可以满足不同的应用需求。数据模型会影响客户端通过API对数据的操作,决定了客户端如何对数据进行编码存储。云数据库的设计可以采用不同的数据模型,目前适应于云计算平台的数据模型有以下几类:
1.1 基于云计算的关系模型。关系型云数据库的数据模型涉及行组和表组等相关概念。此模型的数据结构为一个表是一个逻辑关系,它包含一个分区键,用来对表进行分区。具有相同分区键的多个表的集合称为表组。在表组中,具有相同分区键值的多个行的集合称为行组。一个行组中包含的行总是被分配到同一个数据节点上。每个表组会包含多个行组,这些行组会被分配到不同的数据节点上。一个数据分区包含了多个行组。因此,每个数据节点都存储了位于某个分区键值区间内的所有行。微软的SQL Azure云数据库就是基于此模型的。
1.2 NoSQL数据库数据模型。由于在设计上和传统的关系型数据库相比有很大的不同,故称此类数据库为“NoSQL(Not only SQL)”系列数据库,即非关系型的数据库。与关系型数据库相比,此类数据库非常关注对数据高并发读写和海量数据的存储,在架构和数据模型方面做了简化,而在扩展和并发等方面做了增强。此类数据库种类繁多,且各有优缺点,其数据模型有如下四类:①键值(key-value)存储模型。使用一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。其数据模型为一系列的键值对。它能提供非常快的查询速度、大的数据存放量和高并发操作,非常适合通过主键对数据进行查询和修改等操作,缺点是存储的数据缺少结构化,不支持复杂的操作。运用此模型的数据库有BigTable、Tokyo cabinet/Tyrant、Redis、Voldmort、Berkeley DB等。②列式存储模型。列式存储和关系模型相似,与关系模型存储记录不同,列式存储以流的方式在列中存储所有的数据。其数据模型为以列簇式存储,将同一列数据存放在一起。属于同一列的数据会尽可能地存储在硬盘同一个页中,而不是将属于同一个行的数据存放在一起。使用列式数据库,将会节省大量I/O,并且大多数列式数据库都支持Column Family这个特性,能将多个列并为一个小组。总体而言,这种数据模型的优点是查找速度快,可扩展性强,更容易进行分布式扩展,缺点是功能相对局限。运用此模型的数据库有Cassandra、HBase、Riak等。③文档模型。在数据结构上,文档型和键值型很相似,也是一个key对应一个value,但是这个Value主要以JSON或者XML等格式的文档来进行存储,是有语义的,并且文档数据库一般可以对Value来创建Secondary Index来方便上层的应用,而这点是普通键值数据库所无法支持的。这种数据模型的优点是对数据结构要求不严格,缺点是对查询性能不高,而且缺乏统一的查询语法。运用此类模型的数据库有MongoDB、CouchDB等。④图形模型。图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。其数据模型为图结构,其优点是可以很方便地利用图的相关算法,缺点是需要对整个图做计算才能得出结果,不容易做分布式的集群方案。运用此类模型的数据库有Neo4J、InfoGrid、Infinite Graph等。数据模型有着各自的优缺点,它们适用于不同的领域。不管选择关系模型,还是非关系模型,都要根据实际应用的场景做出选择。有时候单一的数据模型并不能满足我们的需求,对于许多大型的应用可能需要集成多种数据模型。
2 NoSQL数据库的优劣势分析
2.1 NoSQL数据库的优点:①易扩展。NoSQL数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性。数据之间无关系,这样就非常容易扩展。也无形之间,在架构的层面上带来了可扩展的能力。②大数据量,高性能。NoSQL数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。这得益于它的无关系性,数据库的结构简单。③高可用。NoSQL在不太影响性能的情况,就可以方便的实现高可用的架构。比如Cassandra,HBase模型,通过复制模型也能实现高可用。④灵活的数据模型。NoSQL无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式。而在关系数据库里,增删字段是一件非常麻烦的事情。如果是非常大数据量的表,增加字段简直就是一个噩梦。这点在大数据量的web2.0时代尤其明显。 2.2 NoSQL数据库的缺点:①不提供对SQL的支持:如果不支持SQL这样的工业标准,将会对用户产生一定的学习和应用迁移成本。②支持的特性不够丰富:现有产品所提供的功能都比较有限,大多数NoSQL数据库都不支持事务,也不像MS SQL Server和Oracle那样能提供各种附加功能,比如BI和报表等。③现有产品的不够成熟:大多数产品都还处于初创期,和关系型数据库几十年的完善不可同日而语。
3 常见的云数据库产品
①基于关系模型的微软SQL Azure云数据库。SQL Azure是由微软SQL Server 2008为主,建构在Windows Azure云操作系统之上,运行云计算的关系数据库服务,是一种云存储的实现,提供网络型的应用程序数据存储的服务。SQL Azure 架构在数据中心可分为三个部份:a服务提供层;b平台提供层;c基础建设层。②基于键值模型的Google BigTable云数据库。BigTable是Google设计的分布式数据存储系统,用来处理海量的数据的一种非关系型的数据库。是一个稀疏的、分布式的、持久化存储的多维度排序Map。BigTable的设计目的是可靠的处理PB级别的数据,并且能够部署到上千台机器上。BigTable已经实现了下面的几个目标:适用性广泛、可扩展、高性能和高可用性。③基于列式存储模型的Facebook Cassandra云数据库。Cassandra项目是Facebook在2008年开源出来的,随后Facebook自己使用Cassandra的另外一个不开源的分支,而开源出来的Cassandra主要被Amazon的Dynamite团队来维护,并且Cassandra被认为是Dynamite2.0版本。目前除了Facebook之外,twitter和digg.com都在使用Cassandra。Cassandra的主要特点就是它不是一个数据库,而是由一堆数据库节点共同构成的一个分布式网络服务,对Cassandra的一个写操作,会被复制到其他节点上去,对Cassandra的读操作,也会被路由到某个节点上面去读取。其主要特征:分布式,基于column的结构化,高伸展性。
4 结束语
如今,云数据库随着云计算平台的日益盛行和普及,云数据库势必会成为未来数据库的发展趁势,鉴于云数据库还处在发展阶段,诸如不支持事务,没有统一的标准,以及数据存放在云端如何保证数据的安全性等一些问题的存在,以及传统数据库如何能更好地适应云计算环境的需求,这些都迫使我们有必要研究出一种新的数据模型,更好地适应未来云计算的各种应用需求。
参考文献:
[1]程莹,张云勇,房秉毅,徐雷.云计算时代的数据库研究[J].电信技术,2011(1):27-28.
[2]林子雨,赖永炫,林琛,谢怡,邹权.云数据库研究[J].软件学报,2012,23(5):1148-1166.
[3]廖峰,成静静.基于云计算的数据库云方案的研究与设计[J].数据通信,2012(3):45-48.
[4]张瑞.NoSQL数据库的类型分析[EB/OL].圣才学习网.http://it.100xuexi.com/ExtendItem/OTDetail_cc71997d-776b-4381-a2cc-97b687ccc268.htm.
作者简介:
姚远耀(1984-),男,湖北荆州人,讲师,主要研究方向:网络安全、数据库技术。赖蘋华(1984-),女,江西萍乡人,讲师,主要研究方向:软件开发。