我正在学习HBase,它是用Java编写的,因此有一个Java API。我认为它也支持JDBC,但它看起来没有,现在我想我并不真正理解JDBC的含义。
有什么区别?我可以用Java API做什么,我不能用JDBC做,反之亦然?
答案 0 :(得分:6)
这是一个设计选择。从HBase演示文稿中提取:当您需要对大数据进行随机,实时读/写访问时,请使用Apache HBase™。该项目的目标是托管非常大的表 - 数十亿行X百万列 - 在商品硬件集群上。 Apache HBase是一个开源,分布式,版本化的非关系型数据库......
因此,该项目的创建者专注于他们的关注点(BigData),并提供了一个不直接支持SQL的API,但旨在提高BigData上下文的效率。
通过JDBC驱动程序访问HBase确实是可能的,但是另一个项目是:Apache Phoenix: Apache Phoenix是HBase上的关系数据库层,作为客户端嵌入式JDBC驱动程序提供,目标是针对HBase的低延迟查询数据。 Apache Phoenix接受您的SQL查询,将其编译为一系列HBase扫描,并协调这些扫描的运行以生成常规JDBC结果集。
作为参考,JDBC是一种标准API,允许以独立于数据库的方式通过SQL语言访问数据库。从这个意义上讲,JDBS是 a Java API,但数据库作者可以提供其他Java API ...
答案 1 :(得分:0)
JDBC是访问支持SQL的关系数据库的标准API,如MySQL,Oracle,H2 ......
HBase不是关系数据库,并且不支持SQL查询,因此它无法实现JDBC。它有一个自定义API,用于在HBase docs中使用名为 Java API 的Java访问它。