给你一张上亿行,上百万列的大表,你要怎么存储并读取它呢?
用excel?好像不行呢,excel多只能存储104万行的数据,要是拆分存储可能要100多张表。这显然是不行的。
用数据库?mysql,orcale? 存是可以存,但是要频繁的查询呢,这种大表每查询一次估计要几分钟吧。
当然目前可以处理这种需求的数据库产品有很多,但是其中肯定会有一个数据库的名字,它就是Hbase。
Hbase是一个开源的非关系型分布式数据库,它参考了谷歌的BigTable建模,实现的编程语言为Java。它是Apache软件基金会Hadoop项目的一部分,运行于HDFS文件系统之上,为Hadoop提供类似于BigTable规模的服务。虽然其在性能有显著的提升,但还不能直接取代SQL数据库,它已经应用于多个数据驱动型网站。
其显著的特征有:
容量大:单表可达百亿行、百万列,数据矩阵横向和纵向支持都具有弹性,且不会数据查询和写入性能不会随着数据量级的增大而下滑。;
面向列储存:数据按列储存,只访问查询所涉及的列,降低系统 I/O ,相同列类型一致,可高压缩;
稀疏性:数据为 Null 时不占储存空间;
扩展性:基于 HDFS,可在不停止现有服务的情况下,随时添加减少节点;
高可靠性:通过 WAL 和 Replication 机制数据不会丢失或损坏;
高性能: LSM 底层数据结构和良好的Rowkey 的设计可以 HBASE 查询能够在毫秒级别返回;
故其其广泛应用于:抓取用户交互数据,遥测技术,定向投放广告等领域。
#数据库#