virajjasani commented on code in PR #7:
URL: https://github.com/apache/phoenix-adapters/pull/7#discussion_r3314601595


##########
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:
   `Server-side (Phoenix UDFs)` => `Server-side Phoenix functions`



##########
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) |

Review Comment:
   `High (HBase + Phoenix + ZK)` => `Medium (HBase + Phoenix)`



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

Reply via email to