ND

nubo-db/dynoxide

Developer tools

이 페이지는 AI로 자동 번역되었습니다. 기술적인 세부 사항은 원문을 확인하세요. 원문 보기

102 stars 9 forks 품질 68 트렌드 35Apache-2.0

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 --version prints 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
GitHub에서 전체 README 보기

설치

npx dynoxide --port 8000
MCP 초보자라면? mcpskill.org 가이드부터 시작하세요 →