Repolode
monoscope-tech

monoscope-tech/timefusion

ログ、トレース、メトリクス、イベントをS3上のDelta Lakeテーブルとして保存し、PostgreSQLワイヤプロトコルでクエリできる時系列データベース。

スター
223
フォーク
9
未解決の Issue
7
最終コミット
9 時間前

これは何?

TimeFusionは、ログ、トレース、メトリクス、イベントなどのオブザーバビリティデータを、S3、MinIO、R2などの独自のS3互換オブジェクトストレージにDelta Lakeテーブルとして保存します。PostgreSQLワイヤプロトコルを公開するため、新しいクライアントを用意しなくても、psqlや標準のPostgresドライバーからデータを挿入・クエリできます。クエリの実行には、Parquetファイル上でApache DataFusionを使用します。

書き込みはwrite-ahead logとインメモリバッファを経由してから、バックグラウンドでDeltaにフラッシュされるため、挿入の応答が速くなります。クエリではインメモリバッファとS3上のデータを組み合わせるため、書き込んだばかりの行もすぐに参照できます。データはproject_idと日付でパーティション分割されます。テナント分離とパーティションプルーニングのため、クエリではproject_idによる絞り込みが想定されています。

このプロジェクトはpre-1.0で、APIToolkitの本番環境で稼働しています。特定のWALディレクトリを所有できるプロセスは1つだけです。設定では、バッファサイズ、フラッシュ間隔、Foyerをベースにしたメモリとディスクのキャッシュを調整できます。

主な機能

  • 01S3互換ストレージ上で、Delta Lakeのトランザクションログ配下にデータをParquet形式で保存する。
  • 02psqlや任意のPostgreSQLドライバーからの接続を受け付ける。
  • 03DataFusionで分析用SQLを実行でき、ウィンドウ関数やPERCENTILE_CONTにも対応する。
  • 04WALとインメモリバッファに書き込みをため、バックグラウンドでDeltaにフラッシュする。
  • 05project_id単位でデータをパーティション分割し、分離する。
  • 06Foyerを介してメモリキャッシュとディスクキャッシュを提供する。

ユースケース

  • 独自のS3バケットにアプリケーションログやOpenTelemetryトレースを保存する。
  • 標準SQLを使って、プロジェクトごとのイベントデータを対象にレイテンシやエラー率を分析する。
  • 新しいクライアントを導入せずに、既存のPostgresベースのBIツールやオブザーバビリティツールからイベントデータにアクセスできるようにする。

クイックスタート

  1. 1

    リポジトリをクローンする

    git clone https://github.com/monoscope-tech/timefusion.git
  2. 2

    同梱のComposeスタックを起動する(ローカルのMinIOを含むため、AWSアカウントは不要)

    docker compose up
  3. 3

    ポート5432でpsqlを使って接続する

    psql "postgresql://postgres:postgres@localhost:5432/postgres"

使う前に知っておきたいこと

  • プロジェクトはまだバージョン1.0未満のため、リリース間でスキーマ、ワイヤー動作、設定が変更される可能性があります。
  • 同じWALディレクトリに対して同時に実行できるTimeFusionプロセスは1つだけです。
  • クエリでは必ずproject_idで絞り込んでください。そうしないとテナント全体をスキャンし、処理が大幅に遅くなります。
  • ソースからビルドするには、Rust 1.85以降が必要です。

収録されている特集

トピック

#timeseries#observability#delta-lake#postgresql#datafusion#parquet#s3#logs

よくある質問

timefusion とは?
ログ、トレース、メトリクス、イベントをS3上のDelta Lakeテーブルとして保存し、PostgreSQLワイヤプロトコルでクエリできる時系列データベース。 TimeFusionは、ログ、トレース、メトリクス、イベントなどのオブザーバビリティデータを、S3、MinIO、R2などの独自のS3互換オブジェクトストレージにDelta Lakeテーブルとして保存します。PostgreSQLワイヤプロトコルを公開するため、新しいクライアントを用意しなくても、psqlや標準のPostgresドライバーからデータを挿入・クエリできます。クエリの実行には、Parquetファイル上でApache DataFusionを使用します。
timefusion は無料で使えますか?ライセンスは?
timefusion は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
timefusion は今もメンテナンスされていますか?
活発にメンテナンス中。timefusion の最終コミットは 2026年11月7日 です。
timefusion は何に使えますか?
独自のS3バケットにアプリケーションログやOpenTelemetryトレースを保存する。 標準SQLを使って、プロジェクトごとのイベントデータを対象にレイテンシやエラー率を分析する。 新しいクライアントを導入せずに、既存のPostgresベースのBIツールやオブザーバビリティツールからイベントデータにアクセスできるようにする。
timefusion のインストール方法は?
リポジトリをクローンする: git clone https://github.com/monoscope-tech/timefusion.git 同梱のComposeスタックを起動する(ローカルのMinIOを含むため、AWSアカウントは不要): docker compose up ポート5432でpsqlを使って接続する: psql "postgresql://postgres:postgres@localhost:5432/postgres"
timefusion はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/monoscope-tech/timefusion

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト

DataFusionを基盤とするRustエンジンでApache Arrowのカラムナーデータ上でSpark SQLとDataFrameの演算子を実行し、コード変更なしでSparkを高速化します。

データ・分析#spark#arrow#datafusion
1316+7 今週414ScalaApache-2.0更新 1 時間前