This is an automated email from the ASF dual-hosted git repository.
palashc pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/phoenix-adapters.git
The following commit(s) were added to refs/heads/main by this push:
new 51dc628 README update with alternatives (Addendum) (#8)
51dc628 is described below
commit 51dc628a15bebde7fe2e8b6cd540484e25c074bb
Author: Palash Chauhan <[email protected]>
AuthorDate: Thu May 28 09:06:34 2026 -0700
README update with alternatives (Addendum) (#8)
Co-authored-by: Palash Chauhan
<[email protected]>
---
ALTERNATIVES.md | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++
README.md | 81 +++++----------------------------------------------------
2 files changed, 82 insertions(+), 75 deletions(-)
diff --git a/ALTERNATIVES.md b/ALTERNATIVES.md
new file mode 100644
index 0000000..089ca2a
--- /dev/null
+++ b/ALTERNATIVES.md
@@ -0,0 +1,76 @@
+# DynamoDB-Compatible Alternatives
+
+Several open-source projects provide DynamoDB-compatible APIs on non-AWS
infrastructure. This document compares **Phoenix-Adapters** with the two most
prominent alternatives — **ScyllaDB Alternator** and **ExtendDB** — across
architecture, API surface, scalability, and design philosophy, to help you pick
the right tool for your workload.
+
+> _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 / UpdateTable | ✅ | ✅
| ✅ |
+| PutItem / GetItem / DeleteItem / UpdateItem | ✅ | ✅ | ✅ |
+| Query / Scan | ✅ | ✅ | ✅ |
+| BatchGetItem / BatchWriteItem | ✅ | ✅ | ✅ |
+| TransactWriteItems / TransactGetItems | ❌ | ❌ | ✅ |
+| DynamoDB Streams | ✅ | ✅ | ✅ |
+| GSI / LSI | ✅ | ✅ | ✅ |
+| TTL | ✅ | ✅ | ✅ |
+| Backup / Restore | ❌ | ❌ | ✅ |
+| Import / Export | ❌ | ❌ | ✅ |
+| Tagging | ❌ | ✅ | ✅ |
+
+## 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)
diff --git a/README.md b/README.md
index c5b7863..3992363 100644
--- a/README.md
+++ b/README.md
@@ -199,78 +199,9 @@ Logs are stored in the following locations:
## 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 / 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)
\ No newline at end of file
+Phoenix-Adapters is one of several open-source projects that expose a
DynamoDB-compatible API on non-AWS infrastructure. The two most prominent
alternatives are:
+
+- [**ScyllaDB
Alternator**](https://www.scylladb.com/technologies/dynamodb-api/) — DynamoDB
API embedded in ScyllaDB.
+- [**ExtendDB**](https://github.com/ExtendDB/extenddb) — DynamoDB API on
PostgreSQL.
+
+📊 **For a detailed feature-by-feature comparison — API coverage, expressions,
scalability, design philosophy, and a "when to use what" guide — see
[ALTERNATIVES.md](ALTERNATIVES.md).**
\ No newline at end of file