Autosave: 2024-06-23 19:15:05
This commit is contained in:
parent
bcad37e625
commit
0831697099
7 changed files with 94 additions and 147 deletions
BIN
.zk/notebook.db
BIN
.zk/notebook.db
Binary file not shown.
|
@ -1,72 +0,0 @@
|
||||||
---
|
|
||||||
id: l045
|
|
||||||
title: DynamoDB CLI commands
|
|
||||||
tags: [AWS, databases, dynamodb]
|
|
||||||
created: Saturday, June 22, 2024
|
|
||||||
---
|
|
||||||
|
|
||||||
# DynamoDB CLI commands
|
|
||||||
|
|
||||||
## Connecting to a local (Docker)/prod (AWS) DynamoDB instance
|
|
||||||
|
|
||||||
In order to distinguish between local and production accounts you should keep
|
|
||||||
seperate profiles for each (via `.aws/config` and `.aws/credentials`).
|
|
||||||
|
|
||||||
When connecting to a local DB use the local profile and the local URL. Without
|
|
||||||
the `--profile` flag, AWS will default to the `default` profile which will
|
|
||||||
typically be your credentials for accessing AWS on the remote.
|
|
||||||
|
|
||||||
It also sometimes required to add the endpoint-url when working locally:
|
|
||||||
|
|
||||||
```
|
|
||||||
--endpoint-url http://localhost:800
|
|
||||||
|
|
||||||
> When using the commans below locally, assume `--endpoint-url` and `--profile`
|
|
||||||
> have been appended
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
For example:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
aws dynamodb list-tables \
|
|
||||||
--profile timetracking_dev \
|
|
||||||
--endpoint-url http://localhost:800
|
|
||||||
```
|
|
||||||
|
|
||||||
## Delete a table
|
|
||||||
|
|
||||||
```sh
|
|
||||||
aws dynamodb delete-table \
|
|
||||||
--table-name TableName
|
|
||||||
```
|
|
||||||
|
|
||||||
## Create table from JSON schema
|
|
||||||
|
|
||||||
```sh
|
|
||||||
aws dynamodb create-table \
|
|
||||||
--cli-input-json file://create-timeentries-table.json \
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
## Describe the table
|
|
||||||
|
|
||||||
View the table schema:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
|
|
||||||
aws dynamodb describe-table \
|
|
||||||
--table-name TimeEntries
|
|
||||||
```
|
|
||||||
|
|
||||||
## Scan the table
|
|
||||||
|
|
||||||
```sh
|
|
||||||
aws dynamodb scan \
|
|
||||||
--table-name TimeEntries \
|
|
||||||
--output table
|
|
||||||
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
## Related notes
|
|
|
@ -1,64 +0,0 @@
|
||||||
---
|
|
||||||
id: 8b6h
|
|
||||||
title: DynamoDB SDK commands
|
|
||||||
tags: [AWS, databases, dynamodb]
|
|
||||||
created: Sunday, June 23, 2024
|
|
||||||
---
|
|
||||||
|
|
||||||
# DynamoDB SDK commands
|
|
||||||
|
|
||||||
The following commands are for using `@aws-sdk/client-dynamodb` (the JS SDK).
|
|
||||||
|
|
||||||
## Create client
|
|
||||||
|
|
||||||
```js
|
|
||||||
import DynamoDBClient from "@aws-sdk/client-dynamodb";
|
|
||||||
|
|
||||||
const client = new DynamoDBClient({
|
|
||||||
region: "eu-west-2",
|
|
||||||
accessKeyId: process.env.ACCESS_KEY_ID,
|
|
||||||
secretAccessKey: process.env.ACCESS_KEY_ID,
|
|
||||||
});
|
|
||||||
```
|
|
||||||
|
|
||||||
### DynamoDB Document Client
|
|
||||||
|
|
||||||
The Document Client returns the data as a standard JSON document in the manner
|
|
||||||
of a document-based NoSQL database. Without it, DynamoDB will return the data
|
|
||||||
with type data which is unwieldy and hard to parse.
|
|
||||||
|
|
||||||
To transform into a document structure:
|
|
||||||
|
|
||||||
```js
|
|
||||||
import DynamoDBClient from "@aws-sdk/client-dynamodb";
|
|
||||||
import DynamoDBDocumentClient from "@aws-sdk/lib-dynamodb";
|
|
||||||
|
|
||||||
const client = new DynamoDBClient({
|
|
||||||
region: "eu-west-2",
|
|
||||||
accessKeyId: process.env.ACCESS_KEY_ID,
|
|
||||||
secretAccessKey: process.env.ACCESS_KEY_ID,
|
|
||||||
});
|
|
||||||
|
|
||||||
const dynamoDbDocumentClient = DynamoDBDocumentClient.from(client);
|
|
||||||
```
|
|
||||||
|
|
||||||
## Query a table
|
|
||||||
|
|
||||||
Querying is the most performant and cost-effective method since it is an O(1)
|
|
||||||
lookup against a partition key or secondary index.
|
|
||||||
|
|
||||||
```js
|
|
||||||
const params = {
|
|
||||||
TableName: "YourTableName",
|
|
||||||
KeyConditionExpression: "#pk = :pk",
|
|
||||||
ExpressionAttributeNames: { "#pk": "PrimaryKeyAttributeName" },
|
|
||||||
ExpressionAttributeValues: { ":pk": "PrimaryKeyValue" },
|
|
||||||
};
|
|
||||||
```
|
|
||||||
|
|
||||||
## Scan a table
|
|
||||||
|
|
||||||
Scanning is less performant (O(n)) and most expensive since it requires checking
|
|
||||||
every item in the database.
|
|
||||||
|
|
||||||
## Related notes
|
|
|
@ -16,6 +16,16 @@ When connecting to a local DB use the local profile and the local URL. Without
|
||||||
the `--profile` flag, AWS will default to the `default` profile which will
|
the `--profile` flag, AWS will default to the `default` profile which will
|
||||||
typically be your credentials for accessing AWS on the remote.
|
typically be your credentials for accessing AWS on the remote.
|
||||||
|
|
||||||
|
It also sometimes required to add the endpoint-url when working locally:
|
||||||
|
|
||||||
|
```
|
||||||
|
--endpoint-url http://localhost:800
|
||||||
|
|
||||||
|
> When using the commans below locally, assume `--endpoint-url` and `--profile`
|
||||||
|
> have been appended
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
For example:
|
For example:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
|
@ -28,8 +38,6 @@ aws dynamodb list-tables \
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
aws dynamodb delete-table \
|
aws dynamodb delete-table \
|
||||||
--profile timetracking_dev \
|
|
||||||
--endpoint-url http://localhost:8000 \
|
|
||||||
--table-name TableName
|
--table-name TableName
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -38,9 +46,25 @@ aws dynamodb delete-table \
|
||||||
```sh
|
```sh
|
||||||
aws dynamodb create-table \
|
aws dynamodb create-table \
|
||||||
--cli-input-json file://create-timeentries-table.json \
|
--cli-input-json file://create-timeentries-table.json \
|
||||||
--profile timetracking_dev \
|
|
||||||
--endpoint-url http://localhost:8000
|
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Describe the table
|
||||||
|
|
||||||
|
View the table schema:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
|
||||||
|
aws dynamodb describe-table \
|
||||||
|
--table-name TimeEntries
|
||||||
|
```
|
||||||
|
|
||||||
|
## Scan the table
|
||||||
|
|
||||||
|
```sh
|
||||||
|
aws dynamodb scan \
|
||||||
|
--table-name TimeEntries \
|
||||||
|
--output table
|
||||||
|
```
|
||||||
|
|
||||||
## Related notes
|
## Related notes
|
||||||
|
|
|
@ -7,16 +7,75 @@ created: Sunday, June 23, 2024
|
||||||
|
|
||||||
# DynamoDB SDK commands
|
# DynamoDB SDK commands
|
||||||
|
|
||||||
The following commands are for using `$aws-sdk/client-dynamodb` (the JS SDK).
|
The following commands are for using `@aws-sdk/client-dynamodb` (the JS SDK).
|
||||||
|
|
||||||
## Create client
|
## Create client
|
||||||
|
|
||||||
```js
|
```js
|
||||||
const params = {
|
import DynamoDBClient from "@aws-sdk/client-dynamodb";
|
||||||
|
|
||||||
|
const client = new DynamoDBClient({
|
||||||
region: "eu-west-2",
|
region: "eu-west-2",
|
||||||
accessKeyId: process.env.ACCESS_KEY_ID,
|
accessKeyId: process.env.ACCESS_KEY_ID,
|
||||||
secretAccessKey: process.env.ACCESS_KEY_ID,
|
secretAccessKey: process.env.ACCESS_KEY_ID,
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
### DynamoDB Document Client
|
||||||
|
|
||||||
|
The Document Client returns the data as a standard JSON document in the manner
|
||||||
|
of a document-based NoSQL database. Without it, DynamoDB will return the data
|
||||||
|
with type data which is unwieldy and hard to parse.
|
||||||
|
|
||||||
|
To transform into a document structure:
|
||||||
|
|
||||||
|
```js
|
||||||
|
import { DynamoDBClient } from "@aws-sdk/client-dynamodb";
|
||||||
|
import { DynamoDBDocumentClient } from "@aws-sdk/lib-dynamodb";
|
||||||
|
|
||||||
|
const client = new DynamoDBClient({
|
||||||
|
region: "eu-west-2",
|
||||||
|
accessKeyId: process.env.ACCESS_KEY_ID,
|
||||||
|
secretAccessKey: process.env.ACCESS_KEY_ID,
|
||||||
|
});
|
||||||
|
|
||||||
|
const dynamoDbDocumentClient = DynamoDBDocumentClient.from(client);
|
||||||
|
```
|
||||||
|
|
||||||
|
## Query a table
|
||||||
|
|
||||||
|
Querying is the most performant and cost-effective method since it is an O(1)
|
||||||
|
lookup against a partition key or secondary index.
|
||||||
|
|
||||||
|
```js
|
||||||
|
import { DynamoDBDocumentClient, QueryCommand } from "@aws-sdk/lib-dynamodb";
|
||||||
|
|
||||||
|
const params = {
|
||||||
|
TableName: "YourTableName",
|
||||||
|
KeyConditionExpression: "#pk = :pk",
|
||||||
|
ExpressionAttributeNames: { "#pk": "PrimaryKeyAttributeName" },
|
||||||
|
ExpressionAttributeValues: { ":pk": "PrimaryKeyValue" },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const dynamoDbDocumentClient = DynamoDBDocumentClient.from(client);
|
||||||
|
const data = await dynamoDbDocumentClient.send(new QueryCommand(params));
|
||||||
|
console.log(data);
|
||||||
|
```
|
||||||
|
|
||||||
|
## Scan a table
|
||||||
|
|
||||||
|
Scanning is less performant (O(n)) and most expensive since it requires checking
|
||||||
|
every item in the database.
|
||||||
|
|
||||||
|
```js
|
||||||
|
import { DynamoDBDocumentClient, ScanCommand } from "@aws-sdk/lib-dynamodb";
|
||||||
|
|
||||||
|
const params = {
|
||||||
|
TableName: "YourTableName",
|
||||||
|
};
|
||||||
|
|
||||||
|
const dynamoDbDocumentClient = DynamoDBDocumentClient.from(client);
|
||||||
|
const data = await dynamoDbDocumentClient.send(new ScanCommand(params));
|
||||||
```
|
```
|
||||||
|
|
||||||
## Related notes
|
## Related notes
|
||||||
|
|
|
@ -7,8 +7,7 @@ tags:
|
||||||
# Integrated circuits
|
# Integrated circuits
|
||||||
|
|
||||||
An integrated circuit (IC) is a single unit that comprises several logic gates
|
An integrated circuit (IC) is a single unit that comprises several logic gates
|
||||||
designed for the easy construction of
|
designed for the easy construction of [digital circuits](Digital_circuits.md).
|
||||||
[digital circuits](Digital_circuits.md).
|
|
||||||
The terms "integrated circuit" and "chip" are often used interchangeably.
|
The terms "integrated circuit" and "chip" are often used interchangeably.
|
||||||
|
|
||||||
An IC puts the gates on a single piece of silicon that has electrical contact
|
An IC puts the gates on a single piece of silicon that has electrical contact
|
||||||
|
@ -24,5 +23,6 @@ to a breadboard.
|
||||||
|
|
||||||
_An integrated circuit and its use on a breadboard:_
|
_An integrated circuit and its use on a breadboard:_
|
||||||
|
|
||||||
<img align="left" width="200" src="/home/thomas/repos/computer_science/img/integrated-circuit.jpeg">
|

|
||||||
<img width="200" src="/home/thomas/repos/computer_science/img/breadboard-DIP.jpg">
|
|
||||||
|

|
||||||
|
|
|
@ -21,5 +21,5 @@ generic diode circuit symbol:
|
||||||
An LED diode lights up when the right amount of current flows through it. A
|
An LED diode lights up when the right amount of current flows through it. A
|
||||||
standard LED has a maximum current of 20mA. An appropriate
|
standard LED has a maximum current of 20mA. An appropriate
|
||||||
[resistor](Resistance.md#resistors)
|
[resistor](Resistance.md#resistors)
|
||||||
must therefore be added to the circuit to ensure the current doesn't exeedd this
|
must therefore be added to the circuit to ensure the current doesn't exceed this
|
||||||
amount.
|
amount.
|
||||||
|
|
Loading…
Add table
Reference in a new issue