Hadoop Database (HBase) 非常適於創建一個語義 Web 並提取現有知識或計算知識。學習如何在 HBase 資料庫中為科學文章表示 RDF/XML 斷言,了解 HBase 和 Bigtable 如何發起一種存儲和處理數據的新方法。
HBase 是一個針對結構化數據的可伸縮、分散式和面向列的動態模式資料庫。它能有效和可靠地管理分佈在數千個商品伺服器上的大規模數據(千兆兆位元組或更多)。HBase 根據 Google 的 Bigtable 資料庫建模,是 Apache Software Foundation 的 Hadoop 項目的子項目。
|
注意:在撰寫本文時,HBase 的最新版本是 V0.19.3。本文提供的信息適用於這個版本。
HBase 數據模型
HBase 數據被建模為多維映射,其中值(表單元)通過 4 個鍵索引:
value = Map(TableName, RowKey, ColumnKey, Timestamp) |
其中:
二進位數據被編碼為 Base64,以便通過網路傳輸。
行鍵是表的主鍵,通常是一個字元串。行通過行鍵按字典順序排序。
存儲在表中的信息的結構為列族(column family),您可以將這種結構視為類別。每個列族可以擁有任意數量的成員,它們通過標籤(或修飾符)識別。column 鍵由族名、: 號和標籤組成。例如,對於系列 info 和成員 date,列鍵為 info:date。
一個 HBase 表模式定義多個列族,但當您向表中插入一行時,應用程序能夠在運行時創建新成員。對於一個列族,表中的不同行可以擁有不同數量的成員。換句話說,HBase 支持一個動態模式 模型。
一個 HBase 表示例
表 1 展示了一個名為 Persons 的 HBase 表的簡單示例,該表有兩個列族:name 和 contact。
行鍵 | 時間戳 | 列族 | |
---|---|---|---|
name | contact | ||
000001 | t3 | contact:http research.google.com/people/jeff/ | |
t2 | name:first Jeffrey | ||
t1 | name:last Dean | ||
000002 | t5 | name:first Gabriel | |
t4 | name:last Mateescu |
一個空單元沒有與單元的鍵相關聯的值。在表 1 中,與鍵 (000002, contact:http, t4) 關聯的單元為空。空單元不存儲在 HBase 中,讀取空單元類似於根據不存在的鍵從映射提取值。HBase 表以這種方法適應稀疏的 行。
對於任意行,一次只能訪問一個列族的一個成員(這與關係資料庫不同,在關係資料庫中,一個查詢可以訪問來自一個行中的多個列的單元)。您可以將一個行中的一個列族的成員視為子行。
表被分解為多個表區域,等同於 Bigtable 片(tablet)。一個區域包含某個範圍中的行。將一個表分解為多個區域是高效處理大型表的關鍵機制。
RDF 和語義 Web
考慮一下這個問題:如何表示關於科學文章的信息?文章和它們的作者是屬於資源。在資源描述框架(Resource Description Framework,RDF)中,關於資源的知識通過斷言(參見 參考資料)表示,其中斷言是一個三元組:
(subject, predicate, object) |
謂語定義主語(斷言引用的資源)和賓語之間的關係。例如,句子 “The article has the title Bigtable” 可以表示為:
(The article, has title, Bigtable) |
斷言的主語 是一個必須通過 URI 識別的資源。謂語 必須在辭彙表中定義,以便它與辭彙表的名稱空間 URI 關聯。斷言的賓語 可以通過 URI 或文本 識別,如果它是另一個斷言的主語,則它必須通過 URI 識別。
有關一篇文章的知識可以表達為斷言,斷言可以用 RDF/XML 格式表示。
一篇期刊文章的 RDF 描述
考慮這篇關於 Bigtable 的期刊文章:
F. Chang, J. Dean, S. Ghemawat, W. Hsieh, D. Wallach, M. Burrows, T. Chandra, A. Fikes, and R. Gruber, "Bigtable: A Distributed Storage System for Structured Data", ACM Trans. Comput. Syst. 26 (2), June 2008.
您可以通過一組句子描述這篇文章,例如:
其中:
要用 RDF/XML 表示這些句子,必須在適當的名稱空間中確定主語的 URI 和謂語的名稱。對於文章 URI,使用 Bigtable 論文的 Digital Object Identifier (DOI) URI:http://doi.acm.org/10.1145/1365815.1365816。按照如下方式重新組織第一個句子:
The article with the URI "http://doi.acm.org/10.1145/1365815.1365816" has the title "Bigtable: A Distributed Storage System for Structured Data."
對於謂語,使用來自表 2 中的辭彙表的術語:
前綴 | 名稱空間 URI | 描述 |
---|---|---|
rdf | http://www.w3.org/1999/02/22-rdf-syntax-ns# | RDF 辭彙表術語 |
dc | http://purl.org/dc/elements/1.1/ | Dublin Core 元素 |
dcterms | http://purl.org/dc/terms/ | Dublin Core 術語 |
eprint | http://purl.org/eprint/terms/ | Eprints 術語 |
foaf | http://xmlns.com/foaf/0.1/ | FOAF 辭彙表術語 |
根據這些辭彙表,您可以以 RDF/XML 格式組織這個關於 Bigtable 的句子,如清單 1 所示:
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" > <rdf:Description rdf:about="http://doi.acm.org/10.1145/1365815.1365816"> <dc:title>Bigtable: A Distributed Storage System for Structured Data</title> <dc:creator rdf:resource="http://purl.org/sweb/Authors/google/research/Fay_Chang"/> </rdf:Description> </rdf:RDF> |
[火星人 ] 使用 HBase 發現通往語義 Web 的道路已經有351次圍觀