暑假老师要写篇海量非结构化数据的存储和查询方面的综述,下面是自己参考几篇论文写得。写得不好,有的仅个人理解,有什么问题,希望指出.
当今信息化时代充斥着大量的数据。海量数据存储是一个必然的趋势。然而数据如何的存储和查询,尤其是当今非结构化数据的快速增长,对其数据的存储,处理,查询。使得如今的 关系数据库存储带来了巨大的挑战。分布存储技术是云计算的基础,主要研究如何存储、组织和管理数据中心上的大规模海量数据.由于面临的数据规模和用户规模更加庞大,在可扩展性、容错性以及成本控制方面面临着更加严峻的挑战[1]。
对于大量的半结构化数据(semi-structure data)和非结构化数据,对其存储和并发计算以及扩展能力而设计出了NoSQL,像有google的Bigtable,Amaze 的Dynamo,以及Apache的Hbase。NoSQL支持强大的水平扩展能力和高性能,与关系数据库不同的是,NoSQL可以采用松弛一致性(relax consistant),但是提供最终一致性保证数据的读的不一致。像在Dynamo中为了提供高的写的能力(购物时不会因为并发而不会添加购物车不能成功,而影响用户体验),不得不采取最终一致性。根据CAP原理,一致性、高可用性、分区容忍性(Partition-tolerance)三者中最多择其二,舍其一。在Dynamo牺牲了一致性,但是提供高的可用性[6]。另外Dynamo采用非集中化管理,使得每个节点都是同等地位,充分利用分布式哈希表(DHT)的一种实现即一致性哈希,使得Dynamo提供强大的可扩展性。Hbase可以说提供强的一致性,但是牺牲掉了一定的高可用性,比如存在单点故障,在当一个Regionserver出问题或失去联系时,需要master来重新部署原Regionserver下面的是Region到别的空闲的服务器下。这段时间无法与下面的Region联系。Hbase是Apache的顶级项目Hadoop的一个组成部分,hadoop是一种分布式系统基础架构。它可以充分利用集群的威力高速运算和存储。下面着重介绍Hbase。
一、非结构化数据存储结构
Hbase是Apache的顶级子项目,它的理念来自于Google的Bigtable。它是分布的、面向列的、多维的数据库系统,它提供高的容错性和可扩展性,它是建立HDFS(Hadoop分布式文件系统)之上。Hbase的表的每一行有行键(row key)和任意多的列(column)组成,其中多个列可以组成列族(column family)。每个数据单元(cell)可以拥有数据的多个版本(version),这个是使用时间戳来区分。所以Hbase是拥有map:(行键,列族:列,时间戳