ND

nubo-db/dynoxide

Developer tools

Эта страница переведена автоматически. Технические детали смотрите в оригинале. Открыть оригинал

102 stars 9 forks Качество 68 Тренд 35Apache-2.0

Эмулятор DynamoDB в Rust, поддерживаемый SQLite. Начинается за миллисекунды как один статический бинарный файл и проверяется с реальным AWS с помощью публичного пакета соответствия.

Обзор

Эмулятор DynamoDB в Rust, поддерживаемый SQLite. Работает как HTTP-сервер или MCP-сервер для программных агентов, встраивается в приложения Rust и iOS как библиотека, а также компилируется в WebAssembly для браузера. Значок crates.io выше показывает версию, которая охватывает только библиотеку Rust. Всё, что вы устанавливаете, а не полагаетесь, имеет отдельную версию: бинарную версию, npm-пакеты, изображения контейнеров, движок браузера и Action. Это число dynoxide — версия печатает, и та, которую приводят в отчёте об ошибке. Почему их две. Я создал Dynoxide, потому что DynamoDB Local медленный, тяжёлый и не может встраиваться. Ему нужен JVM, а типичные настройки на базе Docker добавляют ~3 секунды холодного запуска, ~209 МБ памяти в режиме простоя и ~225 МБ образа Docker (~473 МБ на диске), прежде чем вы сделаете что-то полезное. Если вы запускаете интеграционные тесты, это запускается Docker, JVM разогревается, а ваш конвейер ждёт. Диноксид — это нативная бинарная система. Он начинается в миллисекундах, работает на ~7.

Обзор (машинный перевод)

Эмулятор DynamoDB в Rust, поддерживаемый SQLite. Работает как HTTP-сервер или MCP-сервер для программных агентов, встраивается в приложения Rust и iOS как библиотека, а также компилируется в WebAssembly для браузера.

Значок crates.io выше показывает версию crate, которая охватывает только библиотеку Rust. Всё, что вы устанавливаете, а не полагаетесь на него, несёт отдельную версию product: бинарную версию, npm-пакеты, изображения контейнеров, движок браузера и Action. Это число, которое печатает dynoxide --version, и которое нужно цитировать в отчёте об ошибках. Почему их два.

Почему диноксид?

Я создал Dynoxide, потому что DynamoDB Local медленный, тяжёлый и не может встраиваться. Ему нужен JVM, а типичные настройки на базе Docker добавляют ~3 секунды холодного запуска, ~209 МБ памяти в режиме простоя и ~225 МБ образа Docker (~473 МБ на диске), прежде чем вы сделаете что-то полезное. Если вы запускаете интеграционные тесты, это запускает Docker, JVM разогревает и ваш конвейер ждёт.

Dynoxide — это нативный бинарный файл. Он стартует за миллисекунды, работает на ~7,2 МБ и отправляется как загрузка на ~3 МБ. Направьте на него любой SDK DynamoDB — и ваши тесты просто работают.

Эта страница переведена автоматически. Технические детали смотрите в оригинале.

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
Открыть полный README на GitHub

Установка

npx dynoxide --port 8000
Новичок в MCP? Начните с руководства на mcpskill.org →