
nubo-db/dynoxide
Developer tools이 페이지는 AI로 자동 번역되었습니다. 기술적인 세부 사항은 원문을 확인하세요. 원문 보기
Rust로 된 DynamoDB 에뮬레이터이며, SQLite가 지원합니다. 단일 정적 바이너리로 밀리초 단위로 시작하며, 공개 컴포맨스 스위트에서 실제 AWS와 대조해 검증됩니다.
개요
Rust로 된 DynamoDB 에뮬레이터로, SQLite가 지원합니다. 코딩 에이전트를 위한 HTTP 서버 또는 MCP 서버로 실행되며, Rust 및 iOS 애플리케이션에 라이브러리로 임베드되고, 브라우저용 WebAssembly로 컴파일됩니다. 위의 crates.io 배지는 Rust 라이브러리만 포함하는 버전을 보여줍니다. 의존하지 않고 설치하는 모든 것은 별도의 버전을 가지고 있습니다: 바이너리, npm 패키지, 컨테이너 이미지, 브라우저 엔진, 그리고 Action. 이것이 바로 숫자 dynoxide -version prints이며, 버그 리포트에서 인용해야 할 버전입니다. 왜 두 가지가 있는가. Dynoxi를 만든 이유는 DynamoDB Local이 느리고 무겁고 임베딩이 불가능하기 때문입니다. JVM이 필요하고, 일반적인 Docker 기반 설정은 유용한 작업을 하기 전에 ~3초간의 콜드 스타트, ~209MB의 유휴 메모리, ~225MB의 Docker 이미지(~473MB 디스크)가 추가됩니다. 통합 테스트를 실행한다면, 그것은 Docker가 시작되고 JVM이 워밍업되며 파이프라인이 대기 중입니다. 다이녹사이드는 고유 이진법입니다. 밀리초 단위로 시작해 ~7에서 유휴 상태입니다.
개요(AI 번역)
Rust로 된 DynamoDB 에뮬레이터로, SQLite가 지원합니다. 코딩 에이전트를 위한 HTTP 서버 또는 MCP 서버로 실행되며, Rust 및 iOS 애플리케이션에 라이브러리로 임베드되고, 브라우저용 WebAssembly로 컴파일됩니다.
위의 crates.io 배지는 crate 버전을 나타내며, 이는 Rust 라이브러리만 포함합니다. 의존하지 않고 설치하는 모든 것은 별도의 product 버전을 가지고 있습니다: 바이너리, npm 패키지, 컨테이너 이미지, 브라우저 엔진, 그리고 Action. 이것이 바로
dynoxide --version인쇄 번호이며, 버그 리포트에서 인용해야 할 번호입니다. 왜 두 개가 있는지.
왜 다이녹사이드?
Dynoxi를 만든 이유는 DynamoDB Local이 느리고 무겁고 임베딩이 불가능하기 때문입니다. JVM이 필요하고, 일반적인 Docker 기반 설정은 유용한 작업을 하기 전에 ~3초간의 콜드 스타트, ~209MB의 유휴 메모리, ~225MB의 Docker 이미지(~473MB 디스크)를 추가합니다. 통합 테스트를 실행한다면, Docker가 시작되고 JVM이 워밍업되며 파이프라인이 대기 중입니다.
Dynoxide는 네이티브 바이너리입니다. 밀리초 단위로 시작하고, 대기 상태는 ~7.2MB이며, ~3MB 다운로드로 배송됩니다. DynamoDB SDK를 사용해도 테스트가 바로 정상 작동합니다.
이 페이지는 AI로 자동 번역되었습니다. 기술적인 세부 사항은 원문을 확인하세요.
README
원문 README의 일부입니다. 원문 보기.
Dynoxide
A DynamoDB emulator in Rust, backed by SQLite. Runs as an HTTP server or an MCP server for coding agents, embeds into Rust and iOS applications as a library, and compiles to WebAssembly for the browser.
The crates.io badge above shows the crate version, which covers the Rust library alone. Everything you install rather than depend on carries a separate product version: the binary, the npm packages, the container images, the browser engine and the Action. That is the number
dynoxide --versionprints and the one to quote in a bug report. Why there are two.
Why Dynoxide?
I built Dynoxide because DynamoDB Local is slow, heavy, and can’t embed. It needs a JVM, and the typical Docker-based setups adds ~3 seconds of cold-start, ~209 MB of memory at idle, and a ~225MB Docker image (~473 MB on disk) before you’ve done anything useful. If you’re running integration tests, that’s Docker starting, the JVM warming up, and your pipeline waiting.
Dynoxide is a native binary. It starts in milliseconds, idles at ~7.2 MB, and ships as a ~3 MB download. Point any DynamoDB SDK at it and your tests just work.
For Rust projects, there’s also an embedded mode - direct API calls via Database::memory() with no HTTP layer at all. Each test gets an isolated in-memory database with zero startup cost. And because it compiles to a native library with no runtime dependencies, it runs on platforms where DynamoDB Local can’t, including iOS.
Performance
Local Development (Apple Silicon)
| Metric | Dynoxide (embedded) | Dynoxide (HTTP) | DynamoDB Local |
|---|---|---|---|
| Cold startup | ~0.2ms | ~15ms | ~2,287ms |
| GetItem (p50) | 9µs | 0.1ms | 0.8ms |
설치
npx dynoxide --port 8000