1、前言    2
2、Hbase的体系结构    4
2.1  HBase的服务器体系结构    4
2.1.1  HBase的服务器的构架    5
2.1.2  数据的更新    6
2、2  HRegion和HMaster的关系    7
2.2.1  HMaster的主要任务    7
2.2.2  HMaster的管理    7
2.3逻辑视图    8
2.3.1  Row Key    9
2.3.2  列族    9
2.3.3  时间戳    10
2.3.4  Cell    10
2.4  Hbase与其他服务器的区别    10
2.4.1  Hbase的特点    10
2.4.2  Hbase的功能    11
3、 Hbase模块的组织原则    12
4、 Hbase中的DML    14
5、与DML相关的模块及数据结构    15
5.1  与DBF数据操作有关的方法及其功能    15
6、开发DML模块的方法    17
6.1  连接操作的实现    18
6.1.1  连接操作的从木原理    18
6.1.2  Hbase中Join的命令格式    18
6.1.3  主要函数    19
6.1.4  连接算法调用关系图    20
6.1.5  连接算法    20
6.1.6  移植中遇到的问题及解决方法    22
6.2  投影操作的实现    23
6.2.1  投影操作的基本原理    23
6.2.2  投影操作的两个重点    24
6.2.3  实现时的特殊问题投影有可能产生重复元组    24

1前言
1.1  社会背景
    随着现代科学技术的迅猛发展,计算机技术已经渗透到哥哥领域,成为各行业必不可少的工具,特别是Internet技术的推广和信息高速公路的建立,使IT产业在市场竞争中越发显示出其独特的优势,步入信息化时代,有巨大的数据信息等待加工处理和传输,这使得对书数据库的进一步开发和利用显得尤为迫切。
作为国内市场的一些中小型超市,它们在信息化过程中的步伐要落后于大中型超市,而对于这些企业的资源管理,信息的存储和处理也显得迫切需要,要适应市场竞争,就需要有高效的处理方式和管理方法,因此加快超市的信息化进程是必可少的。

    实习期间,我们通过对市场的调查,针对现在各中小型超市对经营业务和人事管理的实际需要,开发了这套超市管理系统。在开发过程中,我们针对当前各超市管理的特点和技术人员的实际水平,采用基于Windows图形用户界面这一易学易用的操作环境,在系统设计过程
中,我们尽量采用易懂易读的人机界面,使用户可以在短期内完全掌握。我们又始终发系统的正确性放在首位,力求数据的完整和处理的正确性。在此基础上优化程序代码,加速系统运行和减少对系统资源的占用。

1.2  超市背景
    在我国超市形成在20世纪90年代初期,现在已经成为我国零售业的一种重要形态,为国民经济的发展发挥了重要的作用。随着超市高速的发展,其经营管理也变得愈加复杂,早期的售货员站柜台的形式早已不能满足现有销售也的发展,这样就迫切地需要引入新的管理技术。

    超市形态具有种种优点,但在目前状况下,它仍存在零售业企业所共有的落后的一面,如:不能有效地管理每种商品,收款结算速度慢,容易出现营业差错,不宜进行商品调价,盘点效率低等,而且在超市日常管理中,商品的进、销、存等决策以经验为主,缺乏实时分析功能,管理人员对及时传递资料的要求始终得不到满足。
苏辙超市形态的高速发展,其经营管理也变得愈加复杂,日常所需要处理的数据量也逐渐增大,商业运转的中间环节也越来越多,原始的人工管理已无法应对这复杂的市场。为此,在选题过程中,我选择了超市管理系统设计题目,依靠现代化的计算机信息处理技术来管理超市,从而节省了大量的人力、物力,改善了员工的工作条件,减轻了劳动强度,并且能够快速反映出商品的进、销、存等状况和各种反馈信息分析,使管理人员快速对市场的变化做出相应的决策,加快超市经营管理效率。
2、Hbase的体系结构
2.1  HBase的服务器体系结构
HBase是基于Hadoop的开源数据库,它以googleBigTable为原型,设计并实现了具有高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统,用于存储粗粒度的结构化数据。
HBase是介于nosqlRDBMS之间,仅能通过主键(row key)和主键的range来检索数据,仅支持单行事务(可通过hive支持来实现多表join等复杂操作)。主要用来存储非结构化和半结构化的松散数据。 hadoop一样,Hbase目标主要依靠横向扩展,通过不断增加廉价的商用
服务器,来增加计算和存储能力。作为一个较大的系统软件,Hbase由众多程序模块组成。它们分别实现DBMS复杂而繁多的功能。1975年,ASNI / SPARC提出了一个由三级结构,即由外模式、概念模式组成的体系结构。J.D.Ullman1984年在对DBNS一般结构的描述上综合了数据流和控制流的观点,其结构如图所示:                                                                                             
   
    hadoop一样,Hbase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力。HBase中的表一般有这样的特点:
1 大:一个表可以有上亿行,上百万列
2 面向列:面向列()的存储和权限控制,列()独立检索。
  3 稀疏:对于为空(null)的列,并不占用存储空间,因此,表可以设计的非常稀疏。
Hbase在Hadoop Ecosystem的位置
Hadoop Ecosystem
中的位置
Hadoop Ecosystem
中的位置
         
hbase工作原理2.1.1  HBase的服务器的构架
HBase的服务器体系结构遵从主从服务器的架构,它由HRegion服务器和HBase Master服务器构成。HBase Master服务器负责管理所有的HRegion服务器,而HBase中所有的服务器都是通过ZooKeeper来进行协调,并处理HBase服务器运行期间可能遇到的错误。HBase逻辑上的表可能会被划分成多个HRegion,然后存储到HRegion服务器中。
当表的大小超过设置值的时候,HBase会自动地将表划分为不同的区域,每个区域包含所有行的一个子集,靠主键来区分。从物理上看,一张表被拆分成了多块,每一块就是一个HRegion。用表明+开始、结束主键来区分每一个HRegion,一个HRegion会保存一个表里面某段连续的数据,从开始主键到结束主键,一张完整的表格是保存在多个HRegion上面,每一个区段的HRegion只会被一个HRegion服务器维护。
2.1.2  数据的更新
当用户需要更新数据的时候,他会被分配到对应的HRegion服务器上提交修改,这些修改先是被写到Hmemcache缓存和服务器的Hlog里面,其中Hmemcache是内存中的缓存,保存最
近更新的数据;Hlog是磁盘上面的记录文件,它记录着所有的更新操作,在操作写入Hlog之后,commit()调用才会将其返回给客户端。
读取数据的时候,HRegion服务器会先访问Hmemcache缓存,如果缓存里面没有改数据,才会回到Hstores磁盘上面寻,每一个列簇都会有一个Hstores集合,每个Hstores集合包含很多集体的HstoreFiles文件,这些文件都是B树结构的。
系统会定期调用HRegion.flushcache()把缓存中的内容写到文件中,一般这会增加一个新的HstoreFiles文件,而此时高速缓存会被清空,并且会写一个标记到Hlog上,表示上面的内容已经被写入到文件中保存。
启动的时候,每台HRegion服务器都会检查自己的Hlog文件,看看最近一次执行flushcache之后有没有新的更新写入操作,如果没有就表示所有数据都已经更新到文件中了;如果有更新,服务器就会先把这次更新写入高速缓存,然后调用flushcache写入到文件中。最后服务器会删除旧的的Hlog文件,并开始让用户访问数据。HLog会被定期地回滚,回滚的时候是按照时间来备份文件的,每次回滚的时候,系统会删除那些已经被写到文件中的更新。