✨ Investigate OCI NoSQL Database compatibility
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 0
- Forks
- 0
- Avg merge
- 6h 51m
- Merged PRs (30d)
- 104
Description
Summary
Investigate whether the existing DynamoDB Repository works with Oracle Cloud Infrastructure (OCI) NoSQL Database, which claims DynamoDB API compatibility.
Motivation
OCI NoSQL Database supports the DynamoDB-compatible API, which means the existing Repository might work with minimal or no changes:
# Hypothetically could work with just endpoint change
repo = Repository(
name="my-app",
endpoint_url="https://nosql.us-ashburn-1.oci.oraclecloud.com",
region="us-ashburn-1",
)
| Aspect | DynamoDB | OCI NoSQL |
|---|---|---|
| API | Native | DynamoDB-compatible |
| Latency (p50) | 36-51ms (txn) | ~5-15ms (single), TBD (txn) |
| Cost model | Pay-per-request | Pay-per-request |
| Transactions | ✅ TransactWriteItems | ✅ (via DynamoDB API) |
Investigation Tasks
1. API Compatibility Testing
Test with existing Repository against OCI NoSQL:
- Basic CRUD (GetItem, PutItem, DeleteItem)
- Query operations
- TransactWriteItems (critical for acquire())
- BatchWriteItem
- GSI support (GSI1, GSI2)
- Streams equivalent
2. Authentication
OCI uses different auth than AWS:
# May need OCI SDK or API key auth
# vs AWS credentials
Options:
- OCI SDK with DynamoDB compatibility shim
- API signature differences
- IAM role equivalent
3. Streams/Aggregator
DynamoDB Streams → OCI equivalent?
- OCI Events?
- Change Data Capture?
- May need separate aggregator approach
4. Latency Benchmarking
- Single-item operations
- TransactWriteItems latency
- Compare with AWS DynamoDB benchmarks
Possible Outcomes
Best Case: Works Out of Box
Just need endpoint URL and OCI credentials. Document as supported deployment target.
Medium Case: Minor Adapter
Need thin adapter for auth/endpoint handling:
from zae_limiter.backends.oci import OCINoSQLRepository
repo = OCINoSQLRepository(
compartment_id="ocid1.compartment...",
region="us-ashburn-1",
)
Worst Case: Significant Differences
API compatibility is incomplete, need full backend implementation like Cosmos DB/Firestore.
Dependencies
- #150 - Repository Protocol extraction (if adapter needed)
Acceptance Criteria
- Document OCI NoSQL compatibility status
- If compatible: Add to docs as deployment option
- If adapter needed: Create follow-up implementation ticket
- Benchmark results documented
Resources
Related
- #150 - Repository Protocol extraction
- #149 - Redis backend
- #158 - Cosmos DB backend
- #159 - Firestore backend
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading the existing DynamoDB Repository and the linked OCI NoSQL DynamoDB-compatibility documentation. Test the listed CRUD, query, transaction, batch, GSI, streams, authentication, and latency cases against OCI, then document compatibility status, benchmark results, and whether a follow-up adapter is needed; account for dependency #150.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- backend, databases
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 28/100