Carbonado是Java應用程序的可擴展的高性能持久抽象層,為潛在的持久技術提供了關係視圖。可以通過JDBC可訪問的SQL關係數據庫提供持久性,也可以是伯克利DB。也可以在兩者之間完全複製。
即使Backing Database不是基於SQL的,Carbonado仍然支持任何類型的關係數據庫中發現的許多核心功能。它支持查詢,聯接,索引,並執行查詢優化。當以這種方式使用時,Carbonado不僅是關係數據庫的層,而且是關係數據庫。 SQL不是實施關係數據庫的要求。
在Carbonado中定義新類型涉及創建遵循Java Bean慣例的接口或抽像類。通過插入特殊註釋來指定其他信息。至少需要註釋來指定主鍵。註釋是Java 5中首先可用的功能,因此,Carbonado取決於Java 5。
從表面上看,看來Carbonado類型的定義是像Pojos一樣定義的。不同之處在於,在Carbonado中,類型是關係的對象表示。它不是對像數據庫,也不是對象關聯橋。此外,數據類型的定義只是接口,並且沒有外部配置文件。所有實現類型的代碼都是自動生成的,但是沒有額外的構建時間步驟。
Carbonado在訪問實際存儲時會施加非常低的開銷來實現高性能。低開銷是通過Cojen庫自動生成績效關鍵代碼的部分來實現的。
Carbonado 1.2添加了許多新功能,在此處和發行說明中總結了這些功能。
一般功能
存儲庫
JDBC功能
查詢引擎功能
Carbonado分為幾個包裝捆綁包,以更好地依賴性管理。開始使用Carbonado的最簡單方法是使用Berkeley DB JE支持的存儲庫。為此,您需要獲取Carbonado和Carbonadosleepycatje套件捆綁包。
Carbonado Core Carbonado代碼,取決於Apache Commons Logging,Joda Time和Cojen。
Carbonadosleepycatje包含用於支持SleepyCat/Oracle的存儲庫,伯克利DB Java版。伯克利DB JE代碼必須單獨下載和安裝。
Carbonadosleepycatdb包含用於支持SleepyCat/Oracle Berkeley DB的存儲庫。伯克利DB代碼必須單獨下載和安裝。
從Carbonado術語到SQL術語的寬鬆映射:
Carbonado | SQL |
---|---|
存儲庫 | 資料庫 |
貯存 | 桌子 |
可保持定義 | 表定義 |
存儲實例 | 表行 |
財產 | 柱子 |
詢問 | 選擇/刪除語句 |
游標 | 結果設置 |
Carbonado查詢不如SQL Select的表現力。與SQL不同,Carbonado查詢不支持數據處理或匯總功能。
Carbonado支持最小的查詢功能,使自動索引選擇成為可能。 SQL中可用的其他功能可以用代碼模擬。如果數據庫是本地的,則不會提供性能損失。
希望僅將Carbonado用作SQL上方便層的應用程序將無法使用完整的SQL功能。 Carbonado絕不是JDBC的替代者。這類應用可能會選擇Carbonado和JDBC的混合物。為了促進這一點,支持當前交易中使用的JDBC連接。
由伯克利DB支持的Carbonado存儲庫使用基於規則的查詢優化器來提出查詢計劃。基於成本的優化器通常更有效,因為它們估計I/O成本。 Carbonado具有基於規則的優化器,主要是因為它易於編寫。
Carbonado能夠支持許多不同類型的持久性技術。但是,為了提供足夠的Carbonado功能以證明努力的合理性:
理想情況下,持久性技術應支持交易。如果沒有,則必須通過在內存中批處理更新來實現其交易。在進行交易之前,更新不會持續。如果支持原子批處理更新,則存儲庫可以報告支持“讀取訂單”的隔離級別。否則,它只能支持最低級別的“讀取”。
其他功能很不錯,但並不是嚴格必需的: