
nubo-db/dynoxide
Developer toolsこのページは AI により自動翻訳されています。技術的な詳細は原文をご確認ください。 原文を見る
Rustで使われたDynamoDBエミュレーターで、SQLiteでサポートされています。単一の静的バイナリとしてはミリ秒単位で始まり、公開された適合スイートによって実際のAWSと照合されます。
概要
Rustで使われたDynamoDBエミュレータで、SQLiteでサポートされています。コーディングエージェント用のHTTPサーバーまたはMCPサーバーとして動作し、RustやiOSアプリケーションにライブラリとして埋め込み、ブラウザ用のWebAssemblyにコンパイルします。 上の crates.io バッジはバージョンを示しており、Rustライブラリのみをカバーしています。依存するのではなくインストールするすべてのものは別バージョンを持っています:バイナリ、npmパッケージ、コンテナイメージ、ブラウザエンジン、そしてActionです。これが数字のダイノキシド(バージョン印刷)であり、バグレポートで引用すべきものです。なぜ二つあるのか。 Dynoxidは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の印刷数であり、バグレポートで引用すべきものです。なぜ2つあるのか。
なぜダイノキシド?
DynoxidはDynamoDB Localが遅く重く、埋め込みができないため作りました。JVMが必要で、典型的なDockerベースのセットアップは、何も使えないまでに~3秒のコールドスタート、~209MBのアイドルメモリ、そして225MBのDockerイメージ(ディスク上約473MB)が追加されます。統合テストを実行する場合、それはDockerの起動、JVMのウォームアップ、パイプラインの待機です。
Dynoxiはネイティブバイナリです。ミリ秒で開始し、アイドル時は約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