-
Notifications
You must be signed in to change notification settings - Fork 9
README update with alternatives #7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -196,3 +196,81 @@ Logs are stored in the following locations: | |
| - Main log: `$PHOENIX_ADAPTERS_LOG_DIR/rest.log` | ||
| - GC log: `$PHOENIX_ADAPTERS_LOG_DIR/gc.log` | ||
| - Heap dumps: `$PHOENIX_ADAPTERS_LOG_DIR/` (on OutOfMemoryError) | ||
|
|
||
| ## DynamoDB-Compatible Alternatives | ||
|
|
||
| Several open-source projects provide DynamoDB-compatible APIs on non-AWS infrastructure. Here's how they compare: | ||
|
|
||
| > _Analysis as of **2026-05-27**._ | ||
|
|
||
| ### At a Glance | ||
|
|
||
| | | **Phoenix-Adapters** | **ScyllaDB Alternator** | **ExtendDB** | | ||
| |---|---|---|---| | ||
| | **Storage Engine** | Apache Phoenix / HBase | ScyllaDB (embedded) | PostgreSQL | | ||
| | **Language** | Java | C++ | Rust | | ||
| | **Deployment** | Stateless REST servers + HBase cluster | Built into every ScyllaDB node | Single binary + PostgreSQL | | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Does scylladb not have REST servers dedicated to dynamodb contract?
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. looks like not
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. No, ScyllaDB does NOT have dedicated REST servers for the DynamoDB contract. Alternator is compiled directly into the ScyllaDB binary as a protocol_server |
||
|
|
||
| ### API Coverage | ||
|
|
||
| | Operation | Phoenix-Adapters | Alternator | ExtendDB | | ||
| |---|:---:|:---:|:---:| | ||
| | CreateTable / DeleteTable / DescribeTable / ListTables / UpdateTable | ✅ | ✅ | ✅ | | ||
| | PutItem / GetItem / DeleteItem / UpdateItem | ✅ | ✅ | ✅ | | ||
| | Query / Scan | ✅ | ✅ | ✅ | | ||
| | BatchGetItem / BatchWriteItem | ✅ | ✅ | ✅ | | ||
| | TransactWriteItems / TransactGetItems | ❌ | ❌ | ✅ | | ||
| | DynamoDB Streams | ✅ | ✅ | ✅ | | ||
| | GSI / LSI | ✅ | ✅ | ✅ | | ||
| | TTL | ✅ | ✅ | ✅ | | ||
| | Backup / Restore | ❌ | ❌ | ✅ | | ||
| | Import / Export | ❌ | ❌ | ✅ | | ||
| | Tagging | ❌ | ✅ | ✅ | | ||
| | PartiQL | ❌ | ❌ | ❌ | | ||
|
|
||
| ### Expressions & Query Features | ||
|
|
||
| | Feature | Phoenix-Adapters | Alternator | ExtendDB | | ||
| |---|:---:|:---:|:---:| | ||
| | ConditionExpression | ✅ | ✅ | ✅ | | ||
| | FilterExpression | ✅ | ✅ | ✅ | | ||
| | ProjectionExpression | ✅ | ✅ | ✅ | | ||
| | UpdateExpression (SET/REMOVE/ADD/DELETE) | ✅ | ✅ | ✅ | | ||
| | KeyConditionExpression | ✅ | ✅ | ✅ | | ||
| | Legacy APIs (Expected, AttributesToGet, ScanFilter) | ✅ | ✅ | ❌ | | ||
|
|
||
| ### Scalability & Operations | ||
|
|
||
| | | Phoenix-Adapters | Alternator | ExtendDB | | ||
| |----------------------------|-----------------------------|---------------------------------------|---| | ||
| | **Horizontal scale** | Petabytes (HBase regions) | Petabytes (ScyllaDB vnodes) | Single node server (PG vertical) | | ||
| | **Multi-instance safe** | ✅ Stateless tier | ✅ Native (peer-to-peer) | ❌ No coordination (documented gap) | | ||
| | **Write distribution** | Across HBase region servers | Across ScyllaDB nodes | Single PG writer | | ||
| | **Data Consistency** | Configurable (HBase) | Tunable (LOCAL_ONE / LOCAL_QUORUM) | Strong (PG default) | | ||
| | **Index Consistency** | Eventual GSI / Strong LSI | Eventual GSI / Strong LSI | Strong (PG default) | | ||
| | **Operational complexity** | Medium (HBase + Phoenix) | Medium (ScyllaDB cluster) | Low (binary + PG) | | ||
|
|
||
| ### Design Philosophy | ||
|
|
||
| | | Phoenix-Adapters | Alternator | ExtendDB | | ||
| |---|----------------------------------|---|---| | ||
| | **Approach** | Many APIs → one backend | Embedded in storage engine | One API → pluggable backends | | ||
| | **Expression evaluation** | Server-side Phoenix functions | Native C++ in storage layer | In-process Rust evaluator | | ||
| | **Index implementation** | Phoenix Global Secondary Indexes | ScyllaDB materialized views | Separate PG tables | | ||
| | **Stream implementation** | Phoenix CDC | ScyllaDB CDC | Atomic with data writes (PG txn) | | ||
|
|
||
| ### When to Use What | ||
|
|
||
| | Scenario | Best Fit | | ||
| |---|---| | ||
| | Need DynamoDB compat at petabyte scale on HBase infrastructure | **Phoenix-Adapters** | | ||
| | Already running ScyllaDB or want DDB API as a Cassandra alternative | **Alternator** | | ||
| | Need high API fidelity, transactions, or a lightweight local setup | **ExtendDB** | | ||
| | Must support legacy DynamoDB APIs (Expected, QueryFilter) | **Phoenix-Adapters** or **Alternator** | | ||
| | Need multi-item atomic transactions (TransactWriteItems) | **ExtendDB** (only option) | | ||
|
|
||
| ### Links | ||
|
|
||
| - [Phoenix-Adapters](https://github.com/apache/phoenix-adapters) — DynamoDB on Phoenix/HBase | ||
| - [ScyllaDB Alternator](https://www.scylladb.com/technologies/dynamodb-api/) — DynamoDB embedded in ScyllaDB | ||
| - [ExtendDB](https://github.com/ExtendDB/extenddb) — DynamoDB on PostgreSQL (pluggable) | ||
Uh oh!
There was an error while loading. Please reload this page.