
nubo-db/dynoxide
Developer toolsЭта страница переведена автоматически. Технические детали смотрите в оригинале. Открыть оригинал
Эмулятор 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 --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