User Tools

Site Tools


cloud:aws:dynamodb

This is an old revision of the document!


Table of Contents

Dynamo DB

Indexing

Partition Key

(alias “Hash Key”
A column, chosen to be hashed, to distribute data on DB-nodes.

This is part of the reason DynamoDB is so scalable. Because it can hash your data inputs into an arbitrary number of storage nodes

https://www.beabetterdev.com/2022/02/07/dynamodb-partition-key-vs-sort-key/
Sort Key

(alias “Range Key”)

is a secondary DB key that you can optionally decide to use alongside your Partition Key.

if you decide to only specify a partition key and not a sort key, all records must have a unique partition key value. In other words, you will only be able to have one record with CustomerId as CID-123.

By using a Sort key, we’re also able to perform what I call “range-like” queries on our Sort Key values.

  • = (equal to)
  • ⇐ (less than equal to)
  • >= (greater than equal to)
  • > (greater than)
  • between
  • begins with
  • sort ascending / descending
Composite primary Key Partition key + Sort Key
Local Secondary Indexes
\\(LSI)

Local Secondary Index is like an additional sort-key.
Relies on Partition Key.
You can have max. 5 of LSI.

  • partitionKey+sortKey1
  • partitionKey+sortKey2
  • .. partitionKey+sortKey6.

https://stackoverflow.com/questions/21381744/difference-between-local-and-global-indexes-in-dynamodb

Facts:

  • Limit you to only 10GB of data per Partition Key.
  • Unlike GSIs, they share throughput with base table.

    If you query for data using LSI, the usage will be calculated against capacity of the underlying table and its base index.
  • They have to be specified at table creation. you can't add or remove them after provisioning the table
Global Secondary Indexes

(GSI)

DynamoDB global secondary index is a type of index containing a partition key and a sort key different from the base table's primary key.

It is known as the “global” secondary index since the queries on the index can access data from multiple partitions of the base table.

Sparse index

Sparse Index is a special type of GSI that allows you to index only a subset of the collection by indexing an attribute that is not present on all the items.

This technique is useful to quickly query for a set of items that have a specific attribute value, e.g. only rows that have an attribute deletedAt defined.

To create a sparse index, make sure that only items that should be in that index - have a value of that index-sort-key present.

Inverted index

Inverted Index is a GSI that is basically a primary key but inversed - table's hash key becomes inverted index's sort key and table's sort key becomes inverted index's hash key.

QA

Question: When to use this one, when to use a relational DB?

Answer: The Dynamo DB has a limited indexing-ability

Glossary:

TermValue
TermValue
primary keyValue
sort keyValue
Global secondary indexValue
Local secondary indexValue
TermValue

### Query vs Scan

https://dynobase.dev/dynamodb-scan-vs-query/

dynamodb-scan-vs-query

cloud/aws/dynamodb.1689095833.txt.gz · Last modified: by skipidar