使用其主索引鍵讀取項目的差異 - Amazon DynamoDB

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

使用其主索引鍵讀取項目的差異

資料庫常見的一種存取模式是從資料表讀取單一項目。您必須指定您想要讀取之項目的主索引鍵。

使用其主索引鍵搭配 讀取項目 SQL

在 中SQL,您會使用 SELECT陳述式從資料表擷取資料。您可以在結果中請求一或多個資料行 (或使用 * 運算子請求所有資料行)。WHERE 子句則可決定要傳回的資料列。

下列為從 Music 資料表擷取單一資料列的 SELECT 陳述式。WHERE 子句會指定主索引鍵值。

SELECT * FROM Music WHERE Artist='No One You Know' AND SongTitle = 'Call Me Today'

您可以修改此查詢,只擷取部分資料行。

SELECT AlbumTitle, Year, Price FROM Music WHERE Artist='No One You Know' AND SongTitle = 'Call Me Today'

請注意,此資料表的主要索引鍵由 Artist 和 組成SongTitle

在 DynamoDB 中使用項目的主索引鍵讀取項目

在 Amazon DynamoDB 中,您可以使用 DynamoDB API或 PartiQL (一種 SQL相容的查詢語言) 從資料表讀取項目。

DynamoDB API

透過 DynamoDB API,您可以使用 PutItem操作將項目新增至資料表。

DynamoDB 提供 GetItem 操作,可依主索引鍵擷取項目。GetItem 的效率極高,因為它可供您直接存取項目的實體位置。(如需詳細資訊,請參閱 DynamoDB 中的分割區和資料分佈。)

根據預設,GetItem 會傳回整個項目及其所有屬性。

{ TableName: "Music", Key: { "Artist": "No One You Know", "SongTitle": "Call Me Today" } }

您可以新增 ProjectionExpression 參數,以只傳回某些屬性。

{ TableName: "Music", Key: { "Artist": "No One You Know", "SongTitle": "Call Me Today" }, "ProjectionExpression": "AlbumTitle, Year, Price" }

請注意,此資料表的主要索引鍵由 Artist 和 組成SongTitle

DynamoDB GetItem 操作非常有效率。它使用主索引鍵值判斷所指項目的確切儲存位置,然後直接從該位置擷取項目。如果依主索引鍵值擷取項目,則SQLSELECT陳述式效率類似。

此SQLSELECT陳述式支援多種查詢和資料表掃描。DynamoDB 使用其 QueryScan 操作提供類似功能,這些操作會在 查詢資料表的差異掃描資料表的差異 中說明。

SQL SELECT 陳述式可以執行資料表聯結,可讓您同時從多個資料表擷取資料。在資料庫資料表標準化且資料表間的關聯性明確時,聯結最為有效。但是,若您在單一 SELECT 陳述式中聯結太多資料表,應用程式的效能可能會受到影響。您可以使用資料庫複寫、具體化檢視,或查詢重寫來因應這項問題。

DynamoDB 是非關聯式資料庫,不支援資料表聯結。若您正在將現有應用程式從關聯式資料庫遷移至 DynamoDB,必須將您的資料模型去標準化,才不需聯結。

PartiQL for DynamoDB

借助 PartiQL,您可以使用 PartiQL Select 陳述式,使用 ExecuteStatement 操作讀取資料表的項目。

SELECT AlbumTitle, Year, Price FROM Music WHERE Artist='No One You Know' AND SongTitle = 'Call Me Today'

請注意,此資料表的主要索引鍵由 Artist 和 組成 SongTitle。

注意

PartiQL Select 陳述式也可以用來查詢或掃描 DynamoDB 資料表

如需使用 SelectExecuteStatement 的程式碼範例,請參閱 適用於 DynamoDB 的 PartiQL Select 陳述式