From b4e15a55383f40491e0270487184cf5a8d383e33 Mon Sep 17 00:00:00 2001 From: thomasabishop Date: Mon, 10 Jun 2024 17:45:05 +0100 Subject: [PATCH] Autosave: 2024-06-10 17:45:05 --- .zk/notebook.db | Bin 3481600 -> 3481600 bytes zk/DynamoDB.md | 25 +++++++++++++++++++++---- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/.zk/notebook.db b/.zk/notebook.db index c4425675bf36143376e3d6c982214f2b18532810..49ebe6fe0fb16cfb5dee5c0fc7573a913c1c16e8 100644 GIT binary patch delta 13881 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 delta 13027 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 diff --git a/zk/DynamoDB.md b/zk/DynamoDB.md index 60a9845..bb9c8f4 100644 --- a/zk/DynamoDB.md +++ b/zk/DynamoDB.md @@ -9,20 +9,37 @@ created: Sunday, June 09, 2024 ## Data structure +### Non-relational tables + DynamoDB is "NoSQL" because it does not support #SQL queries and is non-relational meaning there cannot be JOIN operations via [foreign_keys](Foreign_keys_in_SQL.md) ![](../img/dynamodb.png) -Although the data is stored as a table, one of the attributes is a key and the -rest of the attributes are effectively the values associated with it. Each item -in the table is uniquely identifiable by its primary key. +### Primary key + +Although the data is stored as a table, one of the attributes is a primary key +and the rest of the attributes are effectively the values associated with it. Because DynamoDB is schemaless, neither the attributes or their data types need to be defined beforehand and each item can have its own distinct attributes. -This attribute is known as the primary key. +Each item in the table is uniquely identifiable by its primary key. + +There are two types of primary key available: + +- partition key: a simple primary key composed of one attribute only. Because + the primary key is hash-mapped items can be retrieved very rapidly using the + primary key. + +- composite key: this comprises a partition key and a _sort key_ both of which + are attributes + +However, you can also set one or more **secondary indices**. A secondary index +lets you query the data in the table using an alternate key, in addition to +queries against the primary key. DynamoDB doesn't require that you use indexes, +but they give your applications more flexibility when querying your data. ## Usage