**Show HN:**
*Turbolite – S3 からの冷却 JOIN クエリを 250 ms 未満で応答する SQLite VFS*

2026/03/27 3:58

**Show HN:** *Turbolite – S3 からの冷却 JOIN クエリを 250 ms 未満で応答する SQLite VFS*

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

要約:

Turbolite は、Amazon S3(および他のオブジェクトストア)を高速で SQLite 互換の仮想ファイルシステムに変える Rust ベースのツールです。データを圧縮された 16 MB の「ページグループ」として保存し、シーク可能な範囲 GET リクエストを使用することで、Turbolite はサブ 250 ms のコールドレイテンシでポイント検索とジョインを実行できます。これは、Tigris などの競合ソリューションよりも約 2 倍速いです。プランベースのフロントランニングとリアクティブなインライン/バックグラウンドフェッチングによる適応的プリフェッチは往復時間をさらに短縮し、ページごとの暗号化により読み取り速度を落とさずにデータを安全に保護します。ライブラリは Rust クレート、SQLite ロード可能拡張、および Python、Node.js、Go 用の言語バインディングとして利用でき、S3、Tigris、R2、MinIO の複数バックエンドとテスト用ローカル専用モードをサポートしています。

将来的な計画には、マニフェスト内の trie を使用してクロステーブルアクセスパターンを予測するプリディクティブプリフェッチエンジンや、WAL(書き込み前ログ)、マルチライタサポート、およびより広範な SQLite 機能カバレッジの追加が含まれます。これらはチェックポイントを介して耐久性を維持しながら実装されます。オブジェクトストレージ上でほぼネイティブな SQLite パフォーマンスを可能にすることで、Turbolite はスタートアップや分析チームがインフラコストを削減し、専用サーバーを避け、データ中心のアプリケーションのデプロイを簡素化できるよう支援します。

要約スケルトン

本文の主旨(メインメッセージ)
Turbolite は Rust ベースの SQLite 仮想ファイルシステムで、圧縮・オプションで暗号化されたページグループと適応的プリフェッチを通じて、S3 上でサブ 250 ms のコールドレイテンシでポイント検索やジョインを直接実行できるほか、ほぼ全ての SQLite 機能をサポートします。

根拠 / 推論(なぜそう言われているか)

  • zstd 圧縮された 16 MB オブジェクトをページタイプ別にグループ化し、約 256 KB のチャンクでシーク可能な範囲 GET を実現しています。
  • プランベースのフロントランニングとリアクティブなインライン/バックグラウンドフェッチングという二層構造のプリフェッチにより往復時間を削減します。
  • ベンチマークでは、S3 Express One Zone 上で 77–259 ms の検索が可能で、Tigris 上では 118–384 ms、プリフェッチ時のフルスキャンは約 600 ms と報告されています。

関連ケース / 背景(文脈・過去事例・周辺情報)

  • Turbolite は AWS S3、Tigris、R2、MinIO の複数バックエンドをサポートし、ローカル専用モードで実行できます。
  • Rust ライブラリ、SQLite ロード可能拡張、および Python・Node.js・Go 用の言語パッケージとして提供されています。
  • 他の SQLite‑over‑network ソリューションとは異なり、圧縮グループ上でシーク可能な範囲 GET を組み合わせ、ページごとの暗号化と最小限の書き込みコスト(1 つの PUT per group)を実現しています。

将来起こること(テキストに記載された将来開発・予測)

  • 実験的なプリディクティブプリフェッチエンジンは、マニフェスト内の trie を使用してクロステーブルパターンを事前取得します。
  • 今後のリリースでは WAL シッピング、マルチライタサポート、およびより広範な機能カバレッジを追加しつつ、チェックポイントで耐久性を維持することが目標です。

影響(ユーザー/企業/業界へのインパクト)

  • ユーザーは専用サーバーをプロビジョニングせずにオブジェクトストレージ上で低レイテンシの SQLite クエリを実行でき、データ中心のスタートアップや分析ワークロードに恩恵があります。
  • 企業は S3 Express One Zone や類似バックエンドを活用しつつインフラコストを削減し、テスト時にはローカル専用モードで簡単に検証できます。
  • このアプローチは、圧縮・暗号化されたページグループと適応的プリフェッチを組み合わせてオブジェクトストレージ上でほぼネイティブな SQLite パフォーマンスを提供できることを示すことで、データベース‑as‑a‑サービス市場全体に影響を与える可能性があります。

本文

turbolite – S3 から直接ポイント検索と結合を実行できる、Rust ベースの SQLite VFS。サブ 250 ms のコールドレイテンシを実現します。

  • ページ単位圧縮(zstd)&暗号化(AES‑256)で効率とセキュリティを両立。S3 から独立して利用可能です。
  • 実験的プロダクトで、バグが存在しデータ破損の恐れがあります。慎重にご使用ください。

なぜ turbolite?

機能利点
S3 Express One Zone1 桁 ms の GET
Tigris極めて高速
Turbolite はローカルディスクとクラウドストレージのギャップを縮小する

turbopuffer に触発された設計で、クラウド制約に最適化。初期目標は Neon's >500 ms コールドスタートを上回ること → 成功しました。


使い道

  • サーバーごとにデータベースを持つ → ボリュームを利用。
  • 数百〜数千のデータベース(テナント、ワークスペース、デバイス)を単一ボリュームで管理。書き込み元は 1 つでも可。

配布

フォーマット内容
Rust ライブラリ直接インポート
SQLite 可搬拡張 (.so / .dylib)
sqlite3_load_extension
で読み込み
Python / Node.js パッケージNPM / PyPI から取得
Go バインディングGitHub の依存関係経由

AWS S3、Tigris、R2、MinIO 等、S3 対応ストレージならどれでも動作。標準 SQLite VFS を採用しているため、FTS、R‑tree、JSON、WAL モード、VACUUM、autovacuum などほぼ全機能が使用可能です。


クイックスタート

Python

import turbolite

# S3 対応ストレージ(Tigris)からのコールドクエリ
conn = turbolite.connect(
    "my.db", mode="s3",
    bucket="my-bucket",
    endpoint="https://t3.storage.dev"
)

conn.execute("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, email TEXT)")
conn.execute("INSERT INTO users VALUES (1, 'alice', 'alice@example.com')")
conn.commit()

alice = conn.cursor().execute("SELECT * FROM users").fetchone()
print(alice[1])   # → "alice"

Node.js

const { Database } = require('turbolite');

const db = new Database('my.db');
db.exec(`CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)`);
db.exec(`INSERT INTO users VALUES (1, 'alice')`);

console.log(db.query("SELECT * FROM users")); // [{ id: 1, name: 'alice' }]
db.close();

Rust

use turbolite::{register, CompressedVfs};

let vfs = CompressedVfs::new("/path/to/data", 3); // zstd レベル 3
register("turbolite", vfs)?;

let conn = rusqlite::Connection::open_with_flags_and_vfs(
    "mydb.db",
    rusqlite::OpenFlags::SQLITE_OPEN_READ_WRITE | rusqlite::OpenFlags::SQLITE_OPEN_CREATE,
    "turbolite",
)?;

アーキテクチャ

  1. ページグループ – 同一タイプ(インターナル、インデックスリーフ、データリーフ)のページを S3 オブジェクトにまとめる(約 256 ページ ≈ 16 MB / 64 KB ページ)。
  2. マニフェスト – 明示的ポインタで SQLite の暗黙の
    page * size
    を置き換える。古いページグループは上書きせず、マニフェストアップロードはアトミック。
  3. 圧縮 – zstd フレーム(約 4 ページ単位)。範囲 GET により必要なサブチャンク(≈256 KB)だけを取得。
  4. プリフェッチ
    • クエリプラン前処理
      EXPLAIN QUERY PLAN
      を傍受し、最初の読み込み前に必要ページグループ全てを事前取得。
    • リアクティブスケジュール – B‑tree のミッスクウンタから導出される 2 種類(SEARCH & LOOKUP)。

パフォーマンス

クエリコールド (S3 Express)コールド (Tigris)
Post + user lookup + join77 ms259 ms
Profile (5 JOINs)188 ms681 ms
Who‑liked (index search + join)118 ms384 ms
Mutual friends (multi‑search join)77 ms201 ms
Indexed filter (covered index scan)75 ms159 ms
Full scan + filter591 ms921 ms
  • ベンチマークは EC2 c5.2xlarge + S3 Express One Zone(GET 約 4 ms)で実施。
  • プリフェッチスレッド数:8(デフォルト
    num_cpus + 1
    )。
  • キャッシュ階層:なし・インターナル・インデックス・データ。

チューニング

パラメータデフォルト
prefetch_threads
num_cpus + 1
pages_per_group
256
grouping_strategy
BTreeAware
gc_enabled
false
sync_mode
Durable

プリフェッチスケジュール

  • SCAN (frontrun) – バルクで全グループを事前取得。
  • SEARCH (reactive)
    [0.3, 0.3, 0.4]
  • LOOKUP (reactive)
    [0.0, 0.1, 0.2]

接続ごとに

SELECT turbolite_config_set(...)
で変更可能です。


耐久性

ステージS3 にデータはあるか
チェックポイント後はい(ページグループ+マニフェスト)
チェックポイント間ローカル WAL のみ

チェックポイント頻度:SQLite 自動チェックポイント(1000 フレームごと)。
2 つの同期モード:

  1. Durable – チェックポイント時にアップロードし、排他ロック。
  2. LocalThenFlush – ローカルキャッシュへ書き込み、後で呼び出し側が S3 にフラッシュ。

暗号化 & 圧縮

  • 圧縮 – ページグループに zstd(シーク可能マルチフレーム)。カスタム辞書もサポート。
  • 暗号化 – S3 では AES‑256‑GCM、ローカルデータは AES‑256‑CTR。キー回転は
    rotate_encryption_key
    で実施。

制限事項

  • 単一ライターのみ。複数ライターはマニフェストを破壊する恐れあり。
  • WAL の送信は未対応(計画中)。
  • SQLite の全機能が完全にサポートされるわけではありません。

インストール

言語コマンド
Python
pip install turbolite
Node.js
npm install turbolite
RustCargo.toml に
turbolite = "0.2"
を追加(S3 用には
features = ["tiered"]
Go
make lib-bundled
で共有ライブラリをビルドし、cgo でリンク

可搬拡張のロード例:

# リポジトリクローン後
make ext   # turbolite.{so,dylib} を生成

sqlite3_enable_load_extension(db, 1);
sqlite3_load_extension(db, "path/to/turbolite", NULL, NULL);

関連プロジェクト

  • Litestream – WAL の S3 送信(バックアップ)。
  • sqlite_web_vfs + sqlite_zstd_vfs – 圧縮範囲リクエスト。
  • mvsqlite – FoundationDB KV ストアでページを管理。
  • Verneuil – DB を 64 KB チャンクに分割し、マニフェストを使用。

turbolite はシーク可能圧縮ページグループ、マニフェスト駆動ポインタ、適応型プリフェッチ、オプション暗号化を組み合わせた、標準 SQLite VFS 内で完結する点が特徴です。


ベンチマーク

バンドルされた実行ファイルを使用:

# 基本ベンチ(100k 投稿)
TIERED_TEST_BUCKET=my-bucket AWS_ENDPOINT_URL=https://t3.storage.dev \
  cargo run --features zstd,tiered --bin tiered-bench --release -- --sizes 100000

# スケジュールを調整
cargo run --features zstd,tiered --bin tiered-tune --release \
  --prefix "databases/my-db" \
  --query "SELECT * FROM users WHERE id = ?1"

全テストは

benchmark/
ディレクトリにあります。


セキュリティモデル

  • S3 データ:AES‑256‑GCM、フレームごとに一意のランダム nonce(認証付き)。
  • ローカルキャッシュ:AES‑256‑CTR、ページ番号/オフセットを使った決定的 nonce。

ライセンスは Apache‑2.0 です。

同じ日のほかのニュース

一覧に戻る →

2026/03/27 5:53

**Deploytarot.com – デプロイメントのタロットカードリーディング** 「デプロイプロジェクトに対する洞察に満ちた指針を、個別化されたタロットカードリーディングで得ましょう。」

## 日本語訳: 記事では、ソフトウェアデリバリーを一連のタスク、リスク、およびステークホルダーの視点として可視化する比喩的な「カードデッキ」を紹介しています。各カードは、A/Bテスト、AI統合、DB移行、サーバーレス移行などの特定のタスクとアイコンおよび簡潔な説明をペアにします。リスクカードでは、「どの指標が重要かについてゼロコンセンサス」や「カードが見ている」という不確実性を列挙しています。役割カードは、CEO、CISO、CTO、清掃係、クライアント、コンサルタント、請負業者、DBA、データサイエンティスト、デザイナー、DevOpsエンジニア、エンジニアリングマネージャー、人事、インターン、ジュニア開発者、オフショア開発者、プロダクトマネージャー、プロジェクトマネージャー、QAエンジニア、受付係、営業、スクラムマスター、セキュリティエンジニア、シニアデベロッパー、SRE、ステークホルダー、テックリード、VP of Engineering など多岐にわたるステークホルダーの各役割がデプロイメント決定をどのように見ているかを示す一文の逸話を提供します。 物語は「アーケナはあなたのスプリント速度を気にしない」と強調し、代わりに「時折その終点で崖がある」という潜在的な落とし穴をハイライトすることに焦点を当てています。 デッキは各引きごとに新たにシャッフルされますが、「戻ってくると覚えている」と説明され、過去の洞察を保持する動的システムであることを示唆しています。 速度よりもリスク認識を前面に押し出すことで、このモデルは多様な役割間で明確なコミュニケーションと整合性を維持し、よりレジリエントなデリバリープロセスを育むことを奨励します。

2026/03/26 0:46

**2025年に多くの制御室がシー・フロムグリーン(海泡色)を採用した理由は?** | 要因 | なぜ重要だったか | |------|-----------------| | **エルゴノミクス研究** | その年に公開された調査では、海泡色が目の疲労を軽減し、長時間の監視作業中に集中力を向上させることが示されました。 | | **省エネルギー動向** | この色は白や黄よりも自然光を反射しやすく、24時間稼働する環境で人工照明の必要性を低減します。 | | **ブランドアイデンティティ** | いくつかのテック大手が「グリーンファースト」サステナビリティイニシアチブを開始し、その理念に合わせて制御室も再設計されました。 | | **心理的影響** | 緑は落ち着きとバランスに結びついており、オペレーターが重要なシステムを管理する際には不可欠な特性です。 | | **規制ガイドライン** | 新たな安全基準では、状態インジケータの可視性を高めるカラースキームが推奨されており、海泡色は赤警報と衝突せずにその要件を満たしました。 | まとめると、エルゴノミクス科学、省エネルギー政策、企業ブランディング、心理研究、そして更新された規制の融合が、2025年の制御室にとって実用的でストレスの少ない選択肢として海泡色を押し上げました。

## Japanese Translation: 記事は、核施設や工業サイトでよく見られる特徴的な海藻緑色を第二次世界大戦時のファーバー・ビレン(Faber Birren)の産業用カラー安全コードに遡ります。2017年夏、著者はオークリッジのX‑10グラファイト炉(「ファットマン」研究のためにロスアラモスへ輸送されたプルトニウムを生成した24フィート四方のブロック)を訪れ、壁と制御パネルでビレンが推奨するライト/ミディアムグリーンが一貫して使用されていることに注目しました。ビレン(1919–1996)は1944年に国立安全協議会によって承認されたカラーコードを開発し、1948年までに世界中で採用されました。このコードは次のような色から構成されています: - **Fire Red** – 火災防止、緊急停止、可燃液 - **Solar Yellow** – 注意、物理的危険 - **Alert Orange** – 危険機械部品 - **Safety Green** – 救急装置、出口、洗眼ステーション - **Caution Blue** – 非安全通知または故障表示 - **Light Green** – 視覚疲労を軽減する壁色 同じスキームがハンフォードのB‑レイザー制御室にも見られます:下部壁にミディアムグリーン、機械にはミディアムグレー、火災防止にファイヤーレッド、低照度エリアにベージュ、床はライトです。ビレンは、このような機能的カラー使用が明るさを制御し、事故を減らし、メンテナンス基準を向上させ、労働士気を高めると主張しました。 ドイツの「ケルン橋緑(Cologne Bridge Green)」は、橋という工業用途で開発された海藻緑色の別例です。著者はまた、古い自動車部品リストに触発されて「Parts List」というフォントをデザインし、オイル交換待合室の雰囲気を呼び起こすことを目的としています。このフォントは彼女のウェブサイトで入手可能です。彼女はこれら歴史的安全色が今日どのように適用できるかを引き続き探求し、海藻緑の使用を現代施設に拡大する可能性や、「Parts List」フォントを産業美学を捉えるデザインツールとして推進する計画です。

2026/03/24 7:06

**クラウドフレアのGen 13サーバー:** コア数とキャッシュ容量を入れ替えて、パフォーマンスを2倍にしています。

## Japanese Translation: Cloudflare は、AMD EPYC 5th‑Gen「Turin」CPU と Rust ベースのリクエストハンドラ FL2 を搭載した新しい Gen 13 エッジサーバーをデプロイ完了しました。Turin はコア数が倍増(最大 192 コア、Gen 12 の 96 コアに対して)し、Zen 5 により IPC が向上、1 コアあたりの電力消費が約32%削減され、DDR5‑6400 メモリバンド幅をサポートします。チップは全コアで 384 MB の L3 キャッシュしか共有せず、1 コアあたり約 2 MB(Gen 12 の 3D V‑Cache を搭載した場合は 12 MB/コア)です。 元の FL1 ハンドラ(NGINX/LuaJIT)は Turin 上で L3 ミス率が高く、ミスサイクルが約350回に対しヒットは約50回と遅延が増大し、スループット向上にもかかわらずレイテンシが悪化しました。プリフェッチャーの調整、ワーカースケーリング、および NUMA コアアフィニティの最適化を行っても、スループットはわずか 5 % 未満にしか改善されませんでした。FL2 の軽量メモリアクセスパターンはこのボトルネックを解消し、Turin 上で Gen 12 に比べ約 50 % 低いレイテンシ、62 % 高いスループット、および FL1 より CPU あたり 2 倍のリクエスト数を実現します。 Gen 13 が Cloudflare のグローバルエッジネットワーク全体に完全展開されたことで、同社はサーバー数を減らしつつより多くのトラフィックを処理できるようになり、SLA に縛られたレイテンシを維持したままで最大 2 倍のスループットを達成します。これにより、パフォーマンス・ペー・ワットが約 50 % 改善され、ラック単位でのスループットは約 60 % 向上します。結果として CDN とクラウド顧客双方の運用コスト削減とカーボンインパクト低減に寄与します。

**Show HN:** *Turbolite – S3 からの冷却 JOIN クエリを 250 ms 未満で応答する SQLite VFS* | そっか~ニュース