zeroae / zeroae/zae-limiter

✨ Investigate OCI NoSQL Database compatibility

Open
#160 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

api-design area/limiter
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.