DynamoDB
Overview
Amazon DynamoDB is a fully managed, serverless NoSQL key-value and document database. It stores schemaless items in tables keyed by a partition key (and an optional sort key), scales automatically, and delivers single-digit millisecond latency. DynamoDB runs only on AWS, with a local emulator (DynamoDB Local) available for development.
Driver
Arris connects with the official aws-sdk-dynamodb
crate over the DynamoDB JSON API. Queries are issued as PartiQL, DynamoDB's
SQL-compatible dialect, through the ExecuteStatement operation.
- Crate:
aws-sdk-dynamodb - Version:
1.116
Connection fields
| Field | Description |
|---|---|
| Region | AWS region the table lives in, such as us-east-1. Required unless supplied by the environment. |
| Access Key ID | AWS access key id. Leave blank to use the default credential chain (environment, shared profile, or IAM role). |
| Secret Access Key | AWS secret access key paired with the access key id. Stored in the macOS Keychain. |
| Session Token | Optional temporary session token for STS or assumed-role credentials. |
| Endpoint URL | Optional endpoint override, for example http://localhost:8000 to target DynamoDB Local or a VPC endpoint. |
DynamoDB has no host, port, or database fields, and no connection URI. Configure the fields above directly. All connections also support an optional SSH tunnel; see SSH tunnels for details.
Authentication
When you enter an access key id and secret access key, Arris uses them as static credentials
(with the session token if provided). When those fields are blank, the AWS default credential
chain is used, resolving credentials from environment variables, the shared
~/.aws/credentials profile, or an attached IAM role. Connections always use TLS, so
there are no SSL mode options.
http://localhost:8000 Schema browser
Once connected, Arris lists every table in the region. DynamoDB only declares its key attributes, so Arris samples a page of items per table to surface the rest. Each table node shows the following children:
- Columns: the partition key and optional sort key with their scalar types, plus the non-key attributes discovered from the sampled items, each with the type inferred from its values.
- Indexes: global secondary indexes (GSIs) and the attributes they key on.
Double-click any table to open it in a new tab with browse mode.
Query language
DynamoDB has no SQL surface, so Arris uses PartiQL for every statement. Write PartiQL directly in
the editor; statements run through ExecuteStatement and read results page through
DynamoDB's NextToken automatically. Result columns follow your SELECT
projection order, and ORDER BY (which PartiQL itself lacks) is applied by Arris over
the full result set. Arris also accepts the familiar ANSI-style
INSERT INTO t (cols) VALUES (...) and translates it to PartiQL for you, and applies
UPDATE / DELETE with any WHERE (not only a full primary key).
SELECT * FROM "orders" WHERE "customer_id" = 1
INSERT INTO "orders" VALUE {'order_id': 200, 'customer_id': 1, 'status': 'pending', 'amount': 42.00}
UPDATE "orders" SET "status" = 'shipped' WHERE "order_id" = 200
DELETE FROM "orders" WHERE "order_id" = 200 Supported PartiQL commands
| Command | Notes |
|---|---|
SELECT | Reads items from a table or index. Result columns follow the projection order and page automatically via NextToken. |
INSERT | Adds items. Both the native PartiQL VALUE document form and the standard INSERT INTO t (cols) VALUES (...) form (including multiple rows) are accepted. |
UPDATE | Updates matching items. A full primary-key match runs directly; any other WHERE (a non-key or range condition) is applied by selecting the matching rows first, then updating each. |
DELETE | Deletes matching items, using the same full-key-or-match behavior as UPDATE. |
Unsupported commands
| Command | Notes |
|---|---|
EXPLAIN | DynamoDB has no query planner, so plan output is not available. |
JOIN | PartiQL on DynamoDB does not support joins across tables. Use federation mode to join a DynamoDB table with another source. |
GROUP BY and aggregates | PartiQL has no GROUP BY or aggregate functions (COUNT, SUM, ...). Run these through federation mode, which aggregates in the query engine. |
DDL (CREATE / DROP) | Manage tables through the AWS console, CLI, or infrastructure tooling. |