最大的特点是对海量数据(TB到PB级别)进行毫秒级查询。



HBase逻辑结构特点:
1.NoSQL数据库,并不是严格意义上的关系型数据库。
   SQL语言的特点决定了关系型数据库的结构。底层是关系代数。按行进行存储的,表中的数据会进行格式化,
   字段的类型,格式都是固定的,结构化的目的是为了进行快速查询,查询的时候是先把行加载到内存中,

   在传统的关系型数据库中,如果单表字段非常多,查询字段非常少的情况下,会造成极大的资源浪费(主要是浪费内存)。


2.本身是不支持SQL的。查询采用了最原始的查询方式,key、value,key就是行键,非常类似于主键,


   value就是一行记录。  


HBase中为什么会有时间戳这个概念?



   HBase是根据Google的Big Table的论文演变而来的,之前在Big Table中就有时间戳这一概念,



   就自然而然的引到了HBase中。





HBase物理结构特点:

1.列簇是一系列列的集合。列簇是单独存储为HDFS文件的。


2.集群结构分为主从式的。主节点HMaster负责管理调度,很多个从节点HRegionServer负责执行写入、查询的操作。



问题:如果写入、查询都是高并发的,怎么样解决高并发带来的拥堵状况呢?



          方案1:放到消息队列中,让其排队。



          方案2:采用分布式,让多个任务同时执行,所以HBase的集群结构为主从式的,就是特点2描述的。





HBase列和列簇概念:



HBase数据是按照列存储的。经常在一起被查询的字段可以放在一起,形成列簇,单独形成磁盘文件。



形成列簇的原因是什么?减少文件数量,减少IO操作,下面的问题验证了此观点



问题:100个字段,要写到100个文件中吗?
          不是。每个文件打开都是一次IO操作,IO是很耗性能的,所以要把经常在一起被查询的

          字段放在一起,放在一个文件中,形成列簇。





HBase为什么能对海量数据进行毫秒级查询?低层运用了那些核心技术?
分布式、索引、缓存
索引本质上就是key-value键值对。行健相当于key,索引相当于是需要查询的数据在文件中的位置

关系型数据库:按行进行存储的,字段是格式化过的。只要实现快速查询,必须用索引。