Skip to content

API Parity

Mark Lauter edited this page May 10, 2026 · 5 revisions

API Parity

Overview

DynamoDbLite implements the IAmazonDynamoDB interface from AWSSDK.DynamoDBv2. This page documents which operations are supported, partially supported, stubbed, or not implemented, and highlights behavioral differences from real DynamoDB. See the DynamoDB API Reference for the full AWS API specification.

Operation Support Matrix

Table Management

Operation Status Notes
CreateTableAsync Supported Immediate ACTIVE status
DeleteTableAsync Supported Synchronous deletion
DescribeTableAsync Supported Exact item count and size
ListTablesAsync Supported All overloads
UpdateTableAsync Partial GSI create/delete; throughput and billing-mode changes accepted but no-op; other UpdateTable fields silently ignored

Item CRUD

Operation Status Notes
PutItemAsync Supported ConditionExpression, ReturnValues (ALL_OLD)
GetItemAsync Supported ProjectionExpression, ConsistentRead (no-op)
DeleteItemAsync Supported ConditionExpression, ReturnValues (ALL_OLD)
UpdateItemAsync Supported All UpdateExpression clauses, all ReturnValues modes

Query & Scan

Operation Status Notes
QueryAsync Supported KeyConditionExpression, FilterExpression, pagination, index queries
ScanAsync Supported FilterExpression, pagination, index scans, legacy overloads

Batch Operations

Operation Status Notes
BatchGetItemAsync Supported Multi-table, ProjectionExpression per table
BatchWriteItemAsync Supported Mixed put/delete, duplicate detection
BatchExecuteStatementAsync Not Implemented Throws NotImplementedException

Transactions

Operation Status Notes
TransactWriteItemsAsync Supported All action types, idempotency tokens
TransactGetItemsAsync Supported Multi-table, ProjectionExpression

Secondary Indexes

Feature Status Notes
GSI at table creation Supported Up to 5
LSI at table creation Supported Up to 5
GSI via UpdateTable Supported With immediate backfill
GSI deletion Supported
Projection types (ALL, KEYS_ONLY, INCLUDE) Supported
Sparse indexes Supported
ConsistentRead=true on GSI Not Implemented Throws AmazonDynamoDBException on call (matches DynamoDB, which rejects strongly-consistent reads on GSIs)

TTL

Operation Status Notes
UpdateTimeToLiveAsync Supported Enable/disable; enabling immediately backfills existing items' TTL epoch
DescribeTimeToLiveAsync Supported

Tags

Operation Status Notes
TagResourceAsync Supported
UntagResourceAsync Supported
ListTagsOfResourceAsync Supported

Admin / Endpoints

Operation Status Notes
DescribeEndpointsAsync Stubbed Returns dynamodb.localhost
DescribeLimitsAsync Stubbed Returns hardcoded limits (account: 80,000 R/W; table: 40,000 R/W)
DetermineServiceOperationEndpoint Stubbed Returns http://dynamodb.localhost
Paginators Not Implemented Property always returns null

Export & Import

Operation Status Notes
ExportTableToPointInTimeAsync Supported Local filesystem via S3Bucket field (treated as a directory path); DYNAMODB_JSON only
DescribeExportAsync Supported
ListExportsAsync Supported
ImportTableAsync Supported Local filesystem via S3BucketSource.S3Bucket field (treated as a directory path); DYNAMODB_JSON only
DescribeImportAsync Supported
ListImportsAsync Supported

Backup & Restore (Not Implemented)

All throw NotImplementedException:

  • CreateBackupAsync
  • DeleteBackupAsync
  • DescribeBackupAsync
  • DescribeContinuousBackupsAsync
  • ListBackupsAsync
  • RestoreTableFromBackupAsync
  • RestoreTableToPointInTimeAsync
  • UpdateContinuousBackupsAsync

Global Tables (Not Implemented)

All throw NotImplementedException:

  • CreateGlobalTableAsync
  • DescribeGlobalTableAsync
  • DescribeGlobalTableSettingsAsync
  • DescribeTableReplicaAutoScalingAsync
  • ListGlobalTablesAsync
  • UpdateGlobalTableAsync
  • UpdateGlobalTableSettingsAsync
  • UpdateTableReplicaAutoScalingAsync

Kinesis Streams (Not Implemented)

All throw NotImplementedException:

  • DescribeKinesisStreamingDestinationAsync
  • DisableKinesisStreamingDestinationAsync
  • EnableKinesisStreamingDestinationAsync
  • UpdateKinesisStreamingDestinationAsync

PartiQL (Not Supported)

These throw NotSupportedException (rather than NotImplementedException used elsewhere) because PartiQL is intentionally out of scope for this emulator, not pending implementation.

  • ExecuteStatementAsync
  • BatchExecuteStatementAsync
  • ExecuteTransactionAsync

Other (Not Implemented)

All throw NotImplementedException:

  • DeleteResourcePolicyAsync
  • GetResourcePolicyAsync
  • PutResourcePolicyAsync
  • DescribeContributorInsightsAsync
  • ListContributorInsightsAsync
  • UpdateContributorInsightsAsync

Behavioral Differences

Behavior DynamoDB DynamoDbLite
Table status transitions CREATING → ACTIVE → DELETING Immediately ACTIVE; synchronous deletion
GSI creation CREATING status, eventual backfill Synchronous backfill, immediately ACTIVE
Provisioned throughput Enforced; throttling on exceeded capacity Stored but not enforced; no throttling
Consumed capacity Tracked and returned Not tracked
ConsistentRead Eventually vs strongly consistent All reads are strongly consistent (SQLite)
TTL deletion Items deleted ~48 hours after expiry; may still appear in reads Items filtered instantly at read time; physically deleted within 30s
TTL enable/disable Can take up to 1 hour Immediate
Item count / table size Updated approximately every 6 hours Updated on every write (exact)
Table ARN Region-specific, real account ID arn:aws:dynamodb:local:000000000000:table/{name}
Export/Import S3-based Local filesystem (the S3Bucket field is reused as a directory path)
Export/Import format DYNAMODB_JSON and ION DYNAMODB_JSON only
Parallel scan Supports segments for parallelism Not supported (TotalSegments/Segment ignored)
Idempotency token Persisted server-side In-memory cache with 10-minute TTL
UnprocessedKeys/Items May return unprocessed items under throttling Always empty (all items processed)
Auto-scaling Adjusts throughput based on load Not applicable
Encryption At-rest and in-transit encryption Not applicable (local storage)
Point-in-time recovery Continuous backups Not implemented
DynamoDB Streams Change data capture Not implemented
Global tables Multi-region replication Not implemented

Known Limitations

  • No parallel scanTotalSegments and Segment parameters are ignored
  • No capacity trackingReturnConsumedCapacity has no effect
  • No DynamoDB Streams — no change event notifications
  • No auto-scaling — throughput values are decorative
  • Export format — only DYNAMODB_JSON (ION not supported)
  • Connection strings — must follow Microsoft.Data.Sqlite format
  • PaginatorsIDynamoDBv2PaginatorFactory is not implemented (returns null)

Clone this wiki locally