2015-06-18 75 views
2

我在學習HBase,它是用Java編寫的,因此有一個Java API。我認爲它也支持JDBC,但它看起來沒有,現在我想我並不真正瞭解JDBC的含義。JDBC和Java API有什麼區別?

有什麼區別?我可以用Java API做什麼,我無法用JDBC做,反之亦然?

+0

JDBC _is_是一個Java API,用於連接到各種類型的RDBMS。 API代表「應用程序編程接口」。 JDBC絕對是其中之一,HBase也是如此。 –

+0

JDBC是一個數據庫連接API,可在缺省Java庫中使用。它主要關注的是爲基於SQL的數據庫提供公共訪問層 – MadProgrammer

+0

查看此處的答案,瞭解如何使用JDBC驅動程序連接到HBase:http://stackoverflow.com/questions/18201278/connect-hbase-via -java-jdbc –

回答

6

這是一個設計選擇。 HBase演示摘錄:當您需要對大數據進行隨機,實時的讀/寫訪問時,請使用Apache HBase™。該項目的目標是託管非常大的表 - 數十億行×數百萬列 - 在商品硬件集羣上。 Apache的HBase的是一個開源的,分佈式的,版本,非關係型數據庫...

因此該項目側重於他們關注的創造者(BigData),並提供了不直接支持SQL的API,但意圖在BigData上下文中有效。

通過JDBC驅動程序訪問HBase的的確是可能的,但另一個項目:Apache Phoenix阿帕奇鳳凰是在HBase的交付作爲客戶嵌入式JDBC驅動程序在HBase的數據針對低延遲查詢關係數據庫層。 Apache Phoenix將您的SQL查詢編譯爲一系列HBase掃描,並編排這些掃描的運行以生成常規JDBC結果集。

作爲參考,JDBC是一種標準API,允許通過SQL語言以獨立於數據庫的方式訪問數據庫。從這個意義上說,JDBS是a Java API,但數據庫作者可以提供其他Java API ...

0

JDBC是用於訪問關係數據庫支持SQL,像MySQL,甲骨文,H2的標準API ...

HBase的是不是一個關係數據庫,不支持SQL的查詢,所以它不能實現JDBC。它有一個自定義的API,可以在HBase文檔中使用名爲Java API的Java訪問它。

+2

JDBC的數據源不*必須是關係型的。事實上,非關係數據源有很多JDBC驅動程序。從'java.sql'的Javadoc:'提供了使用JavaTM編程語言訪問和處理存儲在數據源**(通常是關係數據庫)**中的數據的API。「 [着重點] –

+0

可以使用JDBC驅動程序訪問HBase。在這裏看到更多的信息:http://stackoverflow.com/questions/18201278/connect-hbase-via-java-jdbc –

+0

正確,但HBase沒有實現JDBC:http://java.dzone.com/articles/ handling-big-data-hbase-part-4 – Toilal

相關問題