palashc commented on code in PR #7: URL: https://github.com/apache/phoenix-adapters/pull/7#discussion_r3314613981
########## README.md: ########## @@ -196,3 +196,80 @@ 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 | + +### API Coverage + +| Operation | Phoenix-Adapters | Alternator | ExtendDB | +|---|:---:|:---:|:---:| +| CreateTable / DeleteTable / DescribeTable / ListTables | ✅ | ✅ | ✅ | +| 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) | Limited (PG vertical) | Review Comment: done ########## README.md: ########## @@ -196,3 +196,80 @@ 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 | + +### API Coverage + +| Operation | Phoenix-Adapters | Alternator | ExtendDB | +|---|:---:|:---:|:---:| +| CreateTable / DeleteTable / DescribeTable / ListTables | ✅ | ✅ | ✅ | +| 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) | Limited (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 | +| **Consistency** | Configurable (HBase) | Tunable (LOCAL_ONE / LOCAL_QUORUM) | Strong (PG default) | +| **Operational complexity** | High (HBase + Phoenix + ZK) | 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 UDFs) | Native C++ in storage layer | In-process Rust evaluator | Review Comment: done -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
