Reladomo → Amazon DynamoDB · MIT · Java 11+
A generic Reladomo persistence adapter for DynamoDB. Point an existing Reladomo object model at DynamoDB without changing the XML, the generated classes, or a single finder call site — and keep Reladomo's bitemporal semantics exactly.
Reladomo's bitemporal logic lives in its TemporalDirector, above the
persistence layer. By the time a write reaches storage, the director has already decided which rows
should exist and hands down plain inserts, updates and deletes that carry their own
businessDate and processingDate boundaries.
So Reladynamo does not reimplement bitemporality — it replaces only the persister and inherits everything above it. That makes "the same bitemporal behaviour" something to test rather than assert: one conformance suite runs against H2 (stock Reladomo JDBC, the reference) and against DynamoDB, and the results must be identical.
Finder / your code
↓
MithraObjectPortal
↓
TemporalDirector ← bitemporal semantics live here, unchanged
↓
MithraDatedObjectPersister ← Reladynamo replaces only this
↓
DynamoDB
From the closed-loop gate (scripts/check.sh) as of 2026-09-16:
Not production ready. Nothing has run against a real AWS endpoint yet (tests use DynamoDB Local in-process), and the adapter has not been load tested. Online migration, reverse migration and Sybase ASE extraction are out of scope for 0.1.0. Read the support contract before planning a migration.
Where the adapter plugs into Reladomo, the two time axes, and how a row becomes a DynamoDB item.
Business date against processing date on a grid, with every temporal operation drawn as a split.
The same object as relational rows and as DynamoDB items, built up key component by key component.
How an arbitrary predicate becomes key conditions, filters, in-memory residuals — or a refusal.
Transactions, arbitrary predicates, item size, index consistency — and the workaround for each.
git clone https://github.com/drompincen/reladynamo.git
cd reladynamo
java scripts/GenerateScripts.java # scripts ship as markdown; this generates them
mvn clean install # all modules; DynamoDB Local runs in-process, no Docker
bash scripts/check.sh # the full gate, including the H2-vs-DynamoDB differential suite
The repository contains no executable scripts — see start-here.md.
Then run a demo. Each is a standalone Maven project that runs against both H2 and DynamoDB:
| Demo | JDK | Entities | Shape |
|---|---|---|---|
| 01-crm-bitemporal | 11 | ~46 | Bitemporal + audit-only + plain |
| 02-petstore-unitemporal | 21 | ~22 | One AsOfAttribute |
| 03-car-classifier | 11 | 5 | Bitemporal rules — start here |