DynamoDB Usage Notes

Except for the endpoint, applications that run with the downloadable version of
Amazon DynamoDB should also work with the DynamoDB web service. However, when using
DynamoDB
locally, you should be aware of the following:

If you use the -sharedDb option, DynamoDB creates a single
database file named shared-local-instance.db. Every
program that connects to DynamoDB accesses this file. If you delete the file,
you lose any data that you have stored in it.

If you omit -sharedDb, the database file is named
myaccesskeyid_region.db, with the AWS access key ID
and Region as they appear in your application configuration. If you delete
the file, you lose any data that you have stored in it.

If you use the -inMemory option, DynamoDB doesn't write any
database files at all. Instead, all data is written to memory, and the data
is not saved when you terminate DynamoDB.

If you use the -optimizeDbBeforeStartup option, you must also
specify the -dbPath parameter so that DynamoDB can find its
database file.

The AWS SDKs for DynamoDB require that your application configuration specify
an access key value and an AWS Region value. Unless you're using the
-sharedDb or the -inMemory option, DynamoDB uses
these values to name the local database file.

These values don't have to be valid AWS values to run locally. However,
you might find it convenient to use valid values so that you can run your
code in the cloud later simply by changing the endpoint you're using.

Command Line Options

You can use the following command line options with the downloadable version
of DynamoDB:

-corsvalue — Enables support for cross-origin resource
sharing (CORS) for JavaScript. You must provide a comma-separated
"allow" list of specific domains. The default setting for
-cors is an asterisk (*), which allows public
access.

-dbPathvalue — The directory where DynamoDB writes its database
file. If you don't specify this option, the file is written to the
current directory. You can't specify both -dbPath and
-inMemory at once.

-delayTransientStatuses — Causes DynamoDB to introduce
delays for certain operations. DynamoDB (Downloadable Version) can perform
some tasks almost instantaneously, such as create/update/delete
operations on tables and indexes. However, the DynamoDB service requires
more time for these tasks. Setting this parameter helps DynamoDB running on
your computer simulate the behavior of the DynamoDB web service more
closely. (Currently, this parameter introduces delays only for global
secondary indexes that are in either CREATING or
DELETING status.)

-help — Prints a usage summary and options.

-inMemory — DynamoDB runs in memory instead of using a
database file. When you stop DynamoDB, none of the data is saved. You can't
specify both -dbPath and -inMemory at
once.

-optimizeDbBeforeStartup — Optimizes the underlying
database tables before starting DynamoDB on your computer. You also must
specify -dbPath when you use this parameter.

-portvalue — The port number that DynamoDB uses to
communicate with your application. If you don't specify this option, the
default port is 8000.

Note

DynamoDB uses port 8000 by default. If port 8000 is unavailable, this
command throws an exception. You can use the -port
option to specify a different port number. For a complete list of
DynamoDB runtime options, including -port , type this
command:

Differences Between Downloadable
DynamoDB and the DynamoDB Web Service

The downloadable version of DynamoDB is intended for development and testing purposes
only. By comparison, the DynamoDB web service is a managed service with
scalability, availability, and durability features that make it ideal for
production use.

The downloadable version of DynamoDB differs from the web service in the
following ways:

Regions and distinct AWS accounts are not supported at the client
level.

Provisioned throughput settings are ignored in downloadable DynamoDB, even
though the CreateTable operation requires them. For
CreateTable, you can specify any numbers you want for
provisioned read and write throughput, even though these numbers are not
used. You can call UpdateTable as many times as you want
per day. However, any changes to provisioned throughput values are
ignored.

Scan operations are performed sequentially. Parallel scans are not supported. The
Segment and TotalSegments parameters of
the Scan operation are ignored.

The speed of read and write operations on table data is limited only by
the speed of your computer. CreateTable,
UpdateTable, and DeleteTable operations
occur immediately, and table state is always ACTIVE.
UpdateTable operations that change only the provisioned
throughput settings on tables or global secondary indexes occur
immediately. If an UpdateTable operation creates or deletes
any global secondary indexes, then those indexes transition through
normal states (such as CREATING and DELETING, respectively) before they
become an ACTIVE state. The table remains ACTIVE during this
time.

Read operations are eventually consistent. However, due to the speed of
DynamoDB running on your computer, most reads appear to be strongly
consistent.

Consumed capacity units are not tracked. In operation responses, nulls are
returned instead of capacity units.

Item collection metrics and item collection sizes are not tracked. In
operation responses, nulls are returned instead of item collection
metrics.

In DynamoDB, there is a 1 MB limit on data returned per result set. Both the
DynamoDB web service and the downloadable version enforce this limit.
However, when querying an index, the DynamoDB service calculates only the
size of the projected key and attributes. By contrast, the downloadable
version of DynamoDB calculates the size of the entire item.

If you're using DynamoDB Streams, the rate at which shards are created might differ.
In the DynamoDB web service, shard-creation behavior is partially
influenced by table partition activity. When you run DynamoDB locally,
there is no table partitioning. In either case, shards are ephemeral, so
your application should not be dependent on shard behavior.

Javascript is disabled or is unavailable in your browser.

To use the AWS Documentation, Javascript must be enabled. Please refer to your browser's
Help pages for instructions.