Time-Series Engine
Alopex Skulk
サーバーのいらない時系列エンジン
時系列データベースを使うために、サーバーを立てて運用する必要はありません。Skulkはライブラリとしてアプリケーションに組み込みます。運用対象は増えず、配布するのはこれまでどおり1つのバイナリだけ。エッジや組み込み機器にもそのまま載ります。
アプリケーションに組み込んで使う時系列エンジン。メトリクスのためにサーバーを運用しなくてよくなる。
- バイナリサイズ
- 3.7 MB
- 取り込みプロトコル
- 3
Key points
- 運用するプロセスが増えない
- 同梱してもアプリが膨らまない
- 貯めたParquetは他のツールからそのまま読める
Challenge
組み込みからクラスタまで使える時系列DBがない
エッジの機器に載る時系列DBと、クラスタで運用する時系列DBは別物です。規模が変わるたびに製品を乗り換え、データを移し、クエリを書き直すことになります。Skulkが挑むのは、組み込みからクラスタまでを1つのエンジンで通すことです。
- エッジや組み込みで使える時系列DBは、選択肢そのものが少ない
- 単一ノードで始めた製品が、そのままクラスタにはならない
- 規模を変えるたびに、データ移行とクエリの書き直しが発生する
Skulkはアプリケーションに組み込んで使います。サーバーもデーモンも要りません。クエリエンジンを内蔵せずArrowとParquetだけを使うので、同梱してもアプリが膨らまず、貯めたParquetは他のツールからそのまま読めます。分散はAlopex DBと共有するクラスタ基盤の上に載せるので、規模が変わっても同じエンジンのままです。
クエリのSQLとPromQLのパーサーはNimで書きます。Alopex DBと同じ実装です。ASTを大量に作る処理ではNimがRustより46%速いという検証結果があります(詳細)。
Skulkが扱うのは時系列です。イベントログにはTrail、両方をダッシュボードごとまとめたものがAlopex OTelです。
組み込みから分散まで同じエンジンで通す
Skulkは単一プロセスに組み込むライブラリです。サーバーもデーモンも要りません。規模が変わったときは、Alopex DBと共有するクラスタ基盤Chirpsの上に分散機能が載ります。
- アプリケーションのバイナリに同梱できる3.7MB
- Arrow + Parquetで、書いたデータはそのまま他ツールから読める
- 取り込みプロトコルが3種類あり、既存のエージェントをそのまま向けられる
- 必要なプロセス
- 1
- 圧縮改善(繰り返し値)
- 7.1×
Capabilities
3つの使い方
同じエンジンのまま、規模に応じて使い方を変えられます。
アプリケーションに組み込む
エッジ機器、単一プロセスのアプリケーション向け
- ライブラリとしてリンクし、サーバーは立てない
- アプリケーションのバイナリに同梱して配布できる
- 貯めたParquetはその場で他のツールから読める
単一ノードで動かす
開発環境、小規模な監視向け
- HTTPサーバーとして複数のプロセスから書き込む
- 既存のエージェントを向けるだけで取り込める
- SQLとPromQLで問い合わせる
クラスタに広げる
冗長性が要る本番ワークロード向け
- Alopex DBと共有するChirpsの上で分散する
- 組み込みで始めた構成をそのまま広げられる
- 規模が変わってもクエリの書き直しが要らない
Features
主要機能
時系列を貯めて読むために備えている機能。
3つの取り込みプロトコル
InfluxDB Line Protocol、Prometheus Remote Write、JSONに対応。既存のエージェントを向けるだけで取り込めます。
時間パーティションとTTL
期間で区切って保存し、期限を過ぎたものは自動で落とします。保持期間の管理に別の仕組みが要りません。
高圧縮の列指向保存
v0.2比で、繰り返しの多い値は7.1倍、変動の大きいゲージは1.6倍小さくなりました。同じディスクでより長く保持できます。
外部ツールから読めるParquet
貯めたデータはParquetのまま置かれます。分析のためにエクスポートする必要がありません。
SQLとPromQLのクエリ
Alopex DBと同じNim実装のパーサーを共有します。ASTを大量に作る処理ではNimがRustより46%高速でした。
Chirps上での分散
分散とレプリケーションは、Alopex DBと共有するクラスタ基盤Chirpsの上に載せます。組み込みで始めた構成をそのまま広げられます。
Tech Stack
技術スタック
Alopexファミリーと部品を共有しています。
ストレージ
Apache Arrow + Apache Parquet
クエリ
Nim実装のパーサー
クラスタ
Chirps: SWIM + QUIC
Status
開発状況
v0.3.0を2026年7月28日にリリースし、crates.ioで公開しています。v0.3.1では取り込み性能の最適化を進めています。クエリ実行はv0.4、ダウンサンプリングはv0.5、HTTPサーバーはv0.6、分散とレプリケーションはv0.8以降です。v0.4のクエリ層では、SQLパーサーにAlopex DBのNim実装を共有し、PromQLパーサーもNimで実装します。
公開リソース
最新の資料・コード・コミュニティ導線をまとめています。
Get Involved
使ってみて、詰まったところを教えてください
取り込みプロトコルや保存の挙動で困った点があれば、Issueに書いてください。