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です。これが数字のダイノキシド(バージョン印刷)であり、バグレポートで引用すべきものです。なぜ二つあるのか。 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 --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 のガイドから始めましょう →