NoSQL数据库数据模型以及系统介绍

时间:2022-09-07 07:11:07

NoSQL数据库数据模型以及系统介绍

摘 要:传统的关系型数据库具有不错的性能,稳定性高,易于使用,功能也较强大,同时也积累了大量的成功案例。在20世纪90年代的互联网领域,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付。在那个时候更多的都是静态网页,动态交互类型的网站不多。可是最近几年,互联网web2.0网站开始快速发展。论坛、博客、 微博逐渐引领web领域的潮流。传统的关系型数据库在应付这些超大规模和高并发的纯动态网站显得力不从心,暴露了很多难以克服的问题。无法应对数据库的高并发读写。

关键词:关系型数据库;非关系型数据库NoSQL ;云计算技术;数据模型

一、NoSQL数据库概述

关系型数据库越来越无法满足云计算的应用场景,为了解决此类问题,非关系型数据库应运而生,由于在设计上和传统的关系型数据库相比有了很大的不同,所以此类数据库被称为“NoSQL(Not only SQL)”系列数据库。与关系型数据库相比,它们非常关注对数据高并发读写和海量数据的存储,在架构和数据模型方面作了简化,而在扩展和并发等方面作了增强。

二、NoSQL数据库优势

NoSQL数据库主要有以下优势:

扩展简单,去掉关系型数据库的关系型特性,数据之间无关系 这样就非常容易扩展。典型例子是Cassandra,由于其架构类似于经典的P2P,因此能够通过简单添加新的节点来扩展集群;

读写快速,典型例子是Redis,由于数据之间无关系,纯内存操作,因此其具有非常出色的性能,单节点每秒可以处理超过10万次的读写操作;

灵活的数据模型,NoSQL 数据库无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式。在关系型数据库中,处理大数据量的表,增加字段的工作量是非常庞大的;

成本低廉,企业级数据库的价格很高,并且随着系统的规模增大而不断上升。高昂的建设和运维成本无法满足云计算应用对数据库的需求。NoSQL一般都是以开源的形式存在,可以聚集很多人的智慧,获得很多人得关注,可以减少高昂的成本支出。

三、NoSQL数据库数据模型

目前,主流的NoSQL数据库包括BigTable、HBase、Cassandra、SimpleDB、CouchDB、MongoDB以及Redis等。NoSQL常用数据模型包括以下3种。

(1)Column-oriented(列式)

列式主要使用Table这样的模型,但是它并不支持类似Join这样多表的操作,它的主要特点是在存储数据时,主要围绕着“(Column)”,而不是像传统的关系型数据库那样根据“行(Row)”进行存储,也就是说,属于同一列的数据会尽可能地存储在硬盘同一个页中,而不是将属于同一个行的数据存放在一起。使用列式数据库,将会节省大量I/O,并且大多数列式数据库都支持Column Family这个特性,能将多个列并为一个小组。

(2)Key-value(键值)

虽然Key-value这种模型和传统的关系型相比较简单,有点类似常见的HashTable,一个Key对应一个Value,但是它能提供非常快的查询速度、大的数据存放量和高并发操作,非常适合通过主键对数据进行查询和修改等操作,虽然不支持复杂的操作,但是可以通过上层的开发来弥补这个缺陷。

(3)Document(文档)

在结构上,Document和Key-value是非常相似的,也是一个Key对应一个Value,但是这个Value主要以JSON或者XML等格式的文档来进行存储,是有语义的,并且Document DB一般可以对Value来创建Secondary Index来方便上层的应用,而这点是普通Key-Value DB所无法支持的。

四、主要NOSQL系统的介绍

根据NOSQL常用的数据模型进行分类,并在每类中选出一种典型系统进行介绍。

(1)面向列存储系统――BigTable

Bigtable已经在超过60个Google的产品和项目上得到了应用,包括 Google Analytics、GoogleFinance、Orkut等。它具有用性广泛、可扩展、高性能和高可用性的特点。BigTable是一个是非关系的数据库,是一个稀疏的、分布式的、持久化存储的多维度排序Map,采用面向列的存储方式来提高数据的读取效率。

BigTable的多维体现在,它的键有三维,分别是行键(row key)、列键(column key)和时间戳(timestamp),行键和列键都是字节串,时间戳是64位整型;而值是一个字节串。可以用 (row:string, column:string, time:int64)string 来表示一条键值对记录。

BigTable其它特征:稀疏,分布式,持久化。持久化的意思很简单,Bigtable的数据最终会以文件的形式放到GFS去。Bigtable建立在GFS之上本身就意味着分布式,当然分布式的意义并不仅限于此。稀疏的意思是,一个表里不同的行,列可能完完全全不一样。

(2)面向键值存储系统――Dynamo

Dynamo是亚马逊的key-value模式的存储平台,它的最大特点是去中心化的分布式系统,Dynamo 的主要特性:首先系统成本低 Dynamo 不像一些商用数据库产品,需要昂贵的服务器来得到良好的性能,而在 Dynamo上,由于是利用一堆廉价机器来存数据,于是你可能只需要很少的钱买个普通机器加入到集群里就行了;其次,Dynamo 是一个面向键值存储,因此他不支持外键和关联查询什么的。其Value值是二进制存储的,所以查询条件也只能作用在 Key 上; 第三,配置简单的分布式存储 - 这是由于 Dynamo 是去中心化地设计,在集群中它的每一台机器都是对等的,不像 MongoDB 这样的中心化设计,于是它也不会有单点问题。

(3) 面向文档存储系统――MongoDB

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。它是一种可扩展的,高性能的,开源的NoSQL数据库,用C++编写的。传统的数据库由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB同样也是由数据库(database)、集合(collection)、文档对象(document)三个层次组成。文档类似于json的键值对。{“name”:“jack”,“age”:15};集合是一组文档的集合。一个集合下的稳定无模式限制。

五、各NOSQL系统与关系型数据库的比较

通过以上三种不同结构的NOSQL系统的介绍,我们可以比较出NoSQL数据库与传统的关系型数据库有很大不同,其不同的地方主要体现在查询、架构、读写特性、扩展性以及负载策略等几个方面,下面选取当今最流行的开源的关系型数据库MySQL与三种NOSQL数据库系统做一个比较,如下图所示。

参考文献

【1】陈全,邓倩妮.云计算及其关键技术[J].计算机应用,2009,29(9):2562-2567.

【2】冯丹. 网络存储关键技术的研究及进展[J].移动通信,2009(11):35-39.

【3】程莹 云计算时代的数据库研究 电信技术

上一篇:基于SF6断路器的故障原因及处理措施研究 下一篇:信息化背景下的高校计算机教改探究