ArangoDB:成功實現多值資料庫

處理不同的資料庫結構通常會給系統架構帶來顯著的複雜性,尤其是在需要多個資料庫實例的情況下。這種碎片化可能會使操作變得複雜,增加成本,並降低效率。像 ArangoDB 這樣的多模型資料庫提供了一個統一的解決方案來應對這些挑戰。它們通過在單個資料庫實例中支持多種數據模型 — 鍵值、文檔和圖形 — 簡化了架構並優化了數據管理。

與關聯式資料庫不同,NoSQL 資料庫並不遵循像 SQL 這樣的通用標準。相反,它們是基於它們的存儲結構進行分類的。其中一些流行的類型有:

  • 鍵值:類似於 Java 的 Map 或 Python 字典,這種結構使用一個鍵檢索整個值作為 BLOB。
  • 寬列:類似於鍵值,但將值分割為列,提供更細粒度的數據檢索。
  • 文檔:結構類似於 JSON 或 XML,這種類型提供了更大的查詢靈活性。
  • 圖形:通過表示實體及其連接來實現複雜的關係建模和查詢。

一個多模型資料庫將這些功能結合到一個系統中。例如,ArangoDB 支持鍵值、文檔和圖形模型,消除了需要使用獨立資料庫的必要性。

本文章演示了如何使用 ArangoDB 和 Jakarta NoSQL 在 Java 應用程序中探索鍵值和文檔模型。

設置 ArangoDB

要開始使用 ArangoDB,Docker 提供了一種簡單的方式來管理第三方服務。通過運行以下命令,您可以輕鬆設置 ArangoDB 實例:

Shell

 

探索鍵值數據

鍵值數據庫非常適合簡單的數據模型。讓我們創建一個樣本應用程序來使用 ArangoDB 的鍵值功能來管理機場數據。實體 Airport 將包括兩個字段:code(ID)和name

Java

 

定義了實體後,您可以使用 KeyValueTemplate 與數據庫進行交互。在本教程中,我們將探索 Jakarta NoSQL 的更多功能,超出注釋,使用 Eclipse JNoSQL;一旦 Eclipse JNoSQL 實現並支持 Jakarta Data,您可以創建存儲庫。

Java

 

此程序會生成一條隨機的機場記錄,將其插入數據庫並檢索它。如果您在本地運行,您可以使用以下 URL 通過瀏覽器檢查數據庫中的值:

http://localhost:8529/_db/airport/_admin/aardvark/index.html#collections

處理文檔數據

Jakarta NoSQL提供豐富的功能,可用於處理文檔數據庫,包括繼承和階層數據建模支持。雖然NoSQL數據庫通常不內置支持這些功能,但Jakarta NoSQL通過其API填補了這一空白。讓我們使用Jakarta NoSQL與ArangoDB來管理雲服務提供商數據,包括兩個特定的專業化:Amazon Web Services(AWS)和Azure。

Jakarta NoSQL使用@DiscriminatorColumn@DiscriminatorValue@Inheritance註釋來管理文檔數據庫中的繼承。

  • @DiscriminatorColumn註釋指定用於在數據庫文檔中識別實體類型的字段。
  • @DiscriminatorValue註釋為每個子類定義特定值,確保它們被正確識別。
  • @Inheritance註釋表示該類層次將映射到數據庫中。

首先,定義雲服務提供商的基類:

Java

 

接下來,我們介紹專門的雲服務提供商類。這些示例展示了Jakarta NoSQL如何利用註釋@DiscriminatorValue來區分不同的文檔類型。每個專業化(AWS和Azure)都繼承自基礎CloudProvider類,同時定義了每個提供商獨有的屬性。此外,還提供了工廠方法(of)來生成演示目的的示例數據。

AWSCloudProvider

Java

 

AzureCloudProvider

Java

 

最後,讓我們看看如何使用 DocumentTemplate 與資料庫互動。此程式碼示範了如何建立 AWS 和 Azure 提供者的實例,將它們插入資料庫並檢索它們。該實作利用 Jakarta NoSQL 的 API 來處理資料持久性,確保在儲存和檢索期間無縫應用繼承和辨識器邏輯。

Java

 

結論

ArangoDB 的多模型功能使其成為現代應用的多功能選擇。將鍵值和文件模型結合在單一資料庫中簡化了您的資料架構,同時保留了彈性。憑藉 Jakarta NoSQL,將 ArangoDB 整合到 Java 應用程式中變得無縫,利用熟悉的註釋和程式設計範式。

有關完整程式碼,請參閱 GitHub 存儲庫

Source:
https://dzone.com/articles/arangodb-success-through-multivalue-database