# Apache HBase

**HBase**是一个[开源](https://zh.wikipedia.org/wiki/%E5%BC%80%E6%BA%90)的[非关系型](https://zh.wikipedia.org/wiki/%E9%9D%9E%E5%85%B3%E7%B3%BB%E5%9E%8B%E6%95%B0%E6%8D%AE%E5%BA%93)[分布式数据库](https://zh.wikipedia.org/wiki/%E5%88%86%E5%B8%83%E5%BC%8F%E6%95%B0%E6%8D%AE%E5%BA%93)（NoSQL），它参考了[谷歌](https://zh.wikipedia.org/wiki/%E8%B0%B7%E6%AD%8C)的[BigTable](https://zh.wikipedia.org/wiki/BigTable)建模，实现的编程语言为 [Java](https://zh.wikipedia.org/wiki/Java)。它是[Apache软件基金会](https://zh.wikipedia.org/wiki/Apache%E8%BD%AF%E4%BB%B6%E5%9F%BA%E9%87%91%E4%BC%9A)的[Hadoop](https://zh.wikipedia.org/wiki/Hadoop)项目的一部分，运行于[HDFS](https://zh.wikipedia.org/wiki/HDFS)文件系统之上，为 [Hadoop](https://zh.wikipedia.org/wiki/Hadoop) 提供类似于BigTable 规模的服务。因此，它可以对[稀疏文件](https://zh.wikipedia.org/wiki/%E7%A8%80%E7%96%8F%E6%96%87%E4%BB%B6)提供极高的[容错率](https://zh.wikipedia.org/wiki/%E6%95%85%E9%9A%9C%E5%AE%B9%E8%A8%B1%E5%BA%A6)。

HBase在列上实现了BigTable论文提到的压缩算法、内存操作和[布隆过滤器](https://zh.wikipedia.org/wiki/%E5%B8%83%E9%9A%86%E8%BF%87%E6%BB%A4%E5%99%A8)。HBase的表能够作为[MapReduce](https://zh.wikipedia.org/wiki/MapReduce)任务的输入和输出，可以通过[Java API](http://hbase.apache.org/apidocs/index.html)来访问数据，也可以通过[REST](https://zh.wikipedia.org/wiki/REST)、Avro或者Thrift的API来访问。

虽然最近性能有了显著的提升，HBase 还不能直接取代[SQL](https://zh.wikipedia.org/wiki/SQL)[数据库](https://zh.wikipedia.org/wiki/%E6%95%B0%E6%8D%AE%E5%BA%93)。如今，它已经应用于多个数据驱动型网站[\[1\]](https://zh.wikipedia.org/wiki/Apache_HBase#cite_note-1)[\[2\]](https://zh.wikipedia.org/wiki/Apache_HBase#cite_note-2)，包括 [Facebook](https://zh.wikipedia.org/wiki/Facebook)的消息平台[\[3\]](https://zh.wikipedia.org/wiki/Apache_HBase#cite_note-the-underlying-technology-of-messages-3)[\[4\]](https://zh.wikipedia.org/wiki/Apache_HBase#cite_note-theregister-4)。

在 Eric Brewer的[CAP理论](https://zh.wikipedia.org/wiki/CAP)中，HBase属于CP类型的系统。
