Buat tabel dengan Indeks Sekunder Lokal.
# Create a table with a Local Secondary Index
aws dynamodb create-table \
--table-name CustomerOrders \
--attribute-definitions \
AttributeName=CustomerID,AttributeType=S \
AttributeName=OrderID,AttributeType=S \
AttributeName=OrderDate,AttributeType=S \
--key-schema \
AttributeName=CustomerID,KeyType=HASH \
AttributeName=OrderID,KeyType=RANGE \
--local-secondary-indexes \
"IndexName=OrderDateIndex,\
KeySchema=[{AttributeName=CustomerID,KeyType=HASH},{AttributeName=OrderDate,KeyType=RANGE}],\
Projection={ProjectionType=ALL}" \
--billing-mode PAY_PER_REQUEST
Buat tabel dengan banyak LSIs.
# Create a table with multiple Local Secondary Indexes
aws dynamodb create-table \
--table-name CustomerDetails \
--attribute-definitions \
AttributeName=CustomerID,AttributeType=S \
AttributeName=Name,AttributeType=S \
AttributeName=Email,AttributeType=S \
AttributeName=RegistrationDate,AttributeType=S \
--key-schema \
AttributeName=CustomerID,KeyType=HASH \
AttributeName=Name,KeyType=RANGE \
--local-secondary-indexes \
"[
{
\"IndexName\": \"EmailIndex\",
\"KeySchema\": [
{\"AttributeName\":\"CustomerID\",\"KeyType\":\"HASH\"},
{\"AttributeName\":\"Email\",\"KeyType\":\"RANGE\"}
],
\"Projection\": {\"ProjectionType\":\"INCLUDE\",\"NonKeyAttributes\":[\"Address\",\"Phone\"]}
},
{
\"IndexName\": \"RegistrationIndex\",
\"KeySchema\": [
{\"AttributeName\":\"CustomerID\",\"KeyType\":\"HASH\"},
{\"AttributeName\":\"RegistrationDate\",\"KeyType\":\"RANGE\"}
],
\"Projection\": {\"ProjectionType\":\"KEYS_ONLY\"}
}
]" \
--billing-mode PAY_PER_REQUEST
Data kueri menggunakan LSIs.
# Query the OrderDateIndex LSI
aws dynamodb query \
--table-name CustomerOrders \
--index-name OrderDateIndex \
--key-condition-expression "CustomerID = :custId AND OrderDate BETWEEN :date1 AND :date2" \
--expression-attribute-values '{
":custId": {"S": "C1"},
":date1": {"S": "2023-01-01"},
":date2": {"S": "2023-02-01"}
}'
# Query with a filter expression
aws dynamodb query \
--table-name CustomerOrders \
--index-name OrderDateIndex \
--key-condition-expression "CustomerID = :custId" \
--filter-expression "Amount > :amount" \
--expression-attribute-values '{
":custId": {"S": "C1"},
":amount": {"N": "150"}
}'