

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Amazon QLDB 概觀
<a name="what-is.overview"></a>

**重要**  
支援終止通知：現有客戶將可以使用 Amazon QLDB，直到 07/31/2025 的支援結束為止。如需詳細資訊，請參閱[將 Amazon QLDB Ledger 遷移至 Amazon Aurora PostgreSQL](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)。

下列各節提供 Amazon QLDB 服務元件及其互動方式的高階概觀。

**Topics**
+ [

## 日誌優先
](#what-is.overview.journal)
+ [

## 固定
](#what-is.overview.immutable)
+ [

## 密碼編譯可驗證
](#what-is.overview.verifiable)
+ [

## 類似 SQL 且文件彈性
](#what-is.overview.sql-like)
+ [

## 開放原始碼開發人員工具
](#what-is.overview.open-source)
+ [

## 無伺服器和高可用性
](#what-is.overview.scalable)
+ [

## 企業級
](#what-is.overview.enterprise)

## 日誌優先
<a name="what-is.overview.journal"></a>

在傳統資料庫架構中，您通常會將資料寫入資料表，做為交易的一部分。交易日誌，通常是內部實作，會記錄所有交易及其所做的資料庫修改。交易日誌是資料庫的重要元件。您需要 日誌，才能在系統故障、災難復原或資料複寫時重播交易。不過，資料庫交易日誌不可變，而且並非設計用來直接且輕鬆地存取使用者。

在 Amazon QLDB 中，日誌是資料庫的核心。此日誌結構類似於交易日誌，是一種不可變、僅附加的資料結構，可存放您的應用程式資料以及相關聯的中繼資料。所有寫入交易，包括更新和刪除，都會先遞交日誌。

QLDB 使用日誌，透過將分類帳資料具體化為可查詢、使用者定義的資料表，來判斷其目前狀態。這些資料表也提供所有交易資料的可存取歷史記錄，包括文件修訂和中繼資料。此外，日誌會處理分類帳資料的並行、排序、密碼編譯驗證和可用性。

下圖說明 QLDB 日誌架構。

![\[標題為 QLDB 的圖表：日誌是資料庫，顯示日誌架構，具有連接至分類帳的應用程式，並將交易遞交至日誌，這些日誌具體化為資料表。\]](http://docs.aws.amazon.com/zh_tw/qldb/latest/developerguide/images/journal-first.png)

+ 在此範例中，應用程式會連線至分類帳，並執行將文件插入、更新和刪除至名為 資料表的交易`cars`。
+ 資料會先依順序寫入日誌。
+ 然後，資料會具體化為具有內建檢視的資料表。這些檢視可讓您查詢車輛的目前狀態和完整歷史記錄，每個修訂都會指派版本編號。
+ 您也可以直接從日誌匯出或串流資料。

## 固定
<a name="what-is.overview.immutable"></a>

因為 QLDB 日誌僅供附加，所以會保留資料的所有變更的完整記錄，這些資料無法修改或覆寫。沒有 APIs或其他方法來修改任何遞交的資料。此日誌結構可讓您存取和查詢分類帳的完整歷史記錄。

**注意**  
QLDB 支援的唯一不可變性例外是*資料修訂*。透過此功能，您可以遵循歐盟的一般資料保護法規 (GDPR) 和加州消費者隱私權法 (CCPA) 等法規法規。  
QLDB 提供修訂操作，可讓您永久刪除資料表歷史記錄中的非作用中文件修訂。此操作只會刪除指定修訂中的使用者資料，並使日誌序列和文件中繼資料保持不變。這可維護您分類帳的整體資料完整性。如需詳細資訊，請參閱[編輯文件修訂](working.redaction.md)。

QLDB 會將一個區塊寫入交易中的日誌。每個區塊都包含項目物件，這些物件代表您插入、更新和刪除的文件，以及您執行以遞交這些文件的陳述式。這些區塊會進行排序和雜湊鏈結，以確保資料完整性。

下圖說明此日誌結構。

![\[標題為記錄的圖表無法變更，顯示 QLDB 中的不可變、僅附加日誌結構，以及每個雜湊鏈結日誌區塊的序號。\]](http://docs.aws.amazon.com/zh_tw/qldb/latest/developerguide/images/immutable.png)


圖表顯示交易會以雜湊鏈結的區塊的形式遞交至日誌以供驗證。每個區塊都有序號來指定其地址。

## 密碼編譯可驗證
<a name="what-is.overview.verifiable"></a>

日誌區塊會與密碼編譯雜湊技術一起排序和鏈結，類似於區塊鏈。QLDB 使用日誌的雜湊鏈，使用密碼編譯驗證方法提供交易資料完整性。使用*摘要* （代表截至某個時間點之日誌完整雜湊鏈的雜湊值） 和 *Merkle 稽核證明* （證明二進位雜湊樹中任何節點有效性的機制），您可以驗證資料是否隨時沒有意外變更。

下圖顯示摘要，涵蓋某個時間點日誌的完整雜湊鏈。

![\[使用 SHA-256 標題為雜湊鏈結的圖表，顯示涵蓋日誌完整雜湊鏈結的摘要，其中日誌區塊的結構包含代表 Ion 文件、PartiQL 陳述式和中繼資料的項目。\]](http://docs.aws.amazon.com/zh_tw/qldb/latest/developerguide/images/verifiable.png)


在此圖表中，日誌區塊會使用 SHA-256 密碼編譯雜湊函數進行雜湊，並依序鏈結至後續區塊。每個區塊都包含項目，其中包含您的資料文件、中繼資料和在交易中執行的 PartiQL 陳述式。

如需詳細資訊，請參閱[Amazon QLDB 中的資料驗證](verification.md)。

## 類似 SQL 且文件彈性
<a name="what-is.overview.sql-like"></a>

QLDB 使用 PartiQL 做為其查詢語言，而 Amazon Ion 做為其文件導向的資料模型。PartiQL 是一種開放原始碼、與 SQL 相容的查詢語言，已擴充以使用 Ion。使用 PartiQL，您可以使用熟悉的 SQL 運算子插入、查詢和管理資料。當您查詢一般文件時，語法與使用 SQL 查詢關聯資料表相同。若要進一步了解 PartiQL 的 QLDB 實作，請參閱 [Amazon QLDB PartiQL 參考](ql-reference.md)。

Amazon Ion 是 JSON 的超集合。Ion 是一種開放原始碼、以文件為基礎的資料格式，可讓您靈活地儲存和處理結構化、半結構化和巢狀資料。若要進一步了解 QLDB 中的 Ion，請參閱 [Amazon QLDB 中的 Amazon Ion 資料格式參考](ion.md)。

如需傳統關聯式資料庫與 QLDB 中核心元件和功能的高階比較，請參閱[從關聯式到分類帳](what-is.relational-ledger.md)。

## 開放原始碼開發人員工具
<a name="what-is.overview.open-source"></a>

為了簡化應用程式開發，QLDB 提供多種程式設計語言的開放原始碼驅動程式。您可以使用這些驅動程式，透過在分類帳上執行 PartiQL 陳述式並處理這些陳述式的結果，來與交易資料 API 互動。如需目前支援之驅動程式語言的相關資訊和教學課程，請參閱 [Amazon QLDB 驅動程式入門](getting-started-driver.md)。

Amazon Ion 也提供用戶端程式庫，可為您處理 Ion 資料。如需處理 Ion 資料的開發人員指南和程式碼範例，請參閱 GitHub 上的 [Amazon Ion 文件](http://amzn.github.io/ion-docs/)。

## 無伺服器和高可用性
<a name="what-is.overview.scalable"></a>

QLDB 是全受管、無伺服器且高可用性。服務會自動擴展以支援應用程式的需求，您不需要佈建執行個體或容量。您的資料的多個複本會在 的可用區域和跨可用區域進行複寫 AWS 區域。

## 企業級
<a name="what-is.overview.enterprise"></a>

QLDB 交易完全符合原子、一致性、隔離和耐久性 (ACID) 屬性。QLDB 使用樂觀並行控制 (OCC)，交易以完全可序列化的方式運作，這是最高層級的隔離。這表示沒有看到假體讀取、骯髒讀取、寫入扭曲或其他類似並行問題的風險。如需詳細資訊，請參閱[Amazon QLDB 並行模型](concurrency.md)。