Skip to content

API Parity

Mark Lauter edited this page Feb 14, 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.

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 changes accepted but no-op

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 on GSI Supported Throws exception (matches DynamoDB)

TTL

Operation Status Notes
UpdateTimeToLiveAsync Supported Enable/disable with backfill
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 values (80K/40K)
DetermineServiceOperationEndpoint Stubbed Returns http://dynamodb.localhost

Export & Import

Operation Status Notes
ExportTableToPointInTimeAsync Supported Local filesystem, DYNAMODB_JSON only
DescribeExportAsync Supported
ListExportsAsync Supported
ImportTableAsync Supported Local filesystem, 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)

  • ExecuteStatementAsync — throws NotSupportedException
  • ExecuteTransactionAsync — throws NotSupportedException

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
Export 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