分散型の SQLite が 12 年

2026/10/24 10:16

分散型の SQLite が 12 年

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

要約▶

Japanese Translation:

元のサマリーが具体的なタイムラインの詳細を欠き、rqlite と関連プロジェクト間の主要な文脈的な対比を省略しており、「Key Points List」によって完全に支持されていない採用に関する推測を含んでいるため、改訂版は以下の通りです:

2014 年 9 月にリリースされた rqlite は、SQLite を Raft 合意プロトコルと組み合わせてクラスター全体に書き込みの複製を行い、ノードの障害後もデータの存続を確保するオープンソースでセルフホスト可能な関係型データベースです。初出以来、rqlite は「書き込み操作は指定されたリーダーノードを経由し、多数派からの承認が必要である」という核心的な設計決定を採用しており、2014 年以降変更されていません。この特性により、rqlite はパーティション発生時を書き込みを拒否する CP システムとなっています。このリーダーベースのアーキテクチャは、CRDT ベースのシステム(例:cr-sqlite)や単一ノード回復ツール(例:Litestream で、合意なしに S3 に SQLite WAL をストリーミングして障害復旧を行うもの)など、新しいトレンドとは明確に区別されます。関連プロジェクトとして Canonical の dqlite(コンテナ向けの埋め込み式複製ストアであり、当初は Go で実装されその後 C に移行しカスタム Raft ライブラリを採用)や Fly.io の LiteFS(Consul レーシスを活用してファイルシステムレベルで SQLite を複製する)などが登場しましたが、ベンダーロックインのない堅牢で故障許容性の高い複製を求めつつあるユーザーにとって、rqlite は依然として重要な選択肢です。開発が 8 年以上経過し、rqlite の基盤となるインフラストラクチャの概念は大きく成熟しており、Cloudflare の D1 や Turso(SQLite をフォークしたか、ホストされたエッジレプリカサービスを提供した)といった商用エコシステムに対する透明性の高い代替手段として機能しています。業界が「自分で動作させるもの」(オープンソースプロジェクト)から「購入するもの」(マネージドサービス)へと移行しつつある一方で、rqlite はベンダー依存なしで完全に理解可能であるセルフホスト可能な故障許容型の関係型データベースとして引き続き機能しています。

本文

分散型 SQLite の 12 年:rqlite の誕生と進化

記事の背景と主旨

  • 著者は 2014 年に rqlite の紹介記事を公開し、これが Raft と SQLite を組み合わせた最初のオープンソース・システムであることを明かした。
  • 当時、この分野には誰も関心を示さず、数年間は追随するプロジェクトもなかったが、現在は「分散型 SQLite」カテゴリに十数件のプロジェクトが存在する。
  • いくつかのプロジェクトはベンチャーキャピタルによる資金調達を受け、2 つは買収されている。
  • 記事は現在の流れではなく、2014 年からの歴史的経緯から物語を開始することを意図している。

2014: rqlite の誕生と設計思想

開発の動機

  • 当時勤務する
    jut.io
    で運用していたクラスター化システムにおいて、少量の関係性データベース(RDB)ストレージが必要だった。
  • しかし、どのノードにデータを保持すべきかという問いに対する明確な答えはなく、この課題を解決する必要があった。
  • コンセンサス・プロトコルを用いて SQLite を複製することで、ノード喪失によるデータ損失を防ぐ解決策を見出た。

技術的進化と設計決定

  • 初期バージョンでは
    goraft
    ライブラリを使用していた(InfluxDB や etcd でも採用)。
  • 2016 年初頭には、HashiCorp の Raft 実装へ移行し、現在もこの実装が使用されている。
  • 最も重要な設計決定として、rqlite は CP システムであることが確立された。
    • 書き込みはリーダーを経由する。
    • 多数派による承認が必要であり、少数派は書き込みを拒否する。
    • HTTP API、読み込みの整合性レベル、スナップショットなどの全ての要素がこの原則から派生している。

rqlite の果たした役割

  • 類似のアイデア(Expensify の Bedrock、ActorDB)も存在したが、組織外での広範な採用はなかった。
  • rqlite が果たしたのは、誰でも実行可能な独立した汎用的なオープンソース・プロジェクトとしてこの実現を成し遂げた点にある。

2017: dqlite の登場と対比

Canonical との協力

  • Canonical は LXD および後の MicroK8s で、etcd を使用せず埋め込み型の複製ストレージを実現するために dqlite を構築した。
  • Mark Shuttleworth から直接連絡を受け、rqlite の実用性について話し合ったが、完全な適合はなかった。
  • dqlite は Go で始まり、後に独自の Raft ライブラリを持つ C 言語への再実装に進んだ。

rqlite と dqlite の違い

  • 意図としては最も類似したプロジェクトだが、主な違いはパッケージングにある。
    • dqlite: 埋め込み可能なライブラリ(製品内組み込み向け)。
    • rqlite: 実行するサーバー(任意の製品の外側へ配置)。

2021: Litestream とアプローチの変化

Litestream の概要

  • InfluxDB で共働した Ben Johnson が 2021 年初頭に公開。
  • コンセンサス機構を使用せず、SQLite の WAL を監視して S3 にストリーム送信することで災害復旧を実現。
  • 単一ノードに対するバックアップ手段として「ほぼコストゼロ」な解決策を提供。

異なる問いへの答え

両者は異なる問題意識に基づいている:

  • Litestream: マシンが故障した後の復旧(災害対策)。
  • rqlite: マシンが故障し、かつ即時復旧が必要な場合の可用性確保。

前者が一般的だが、後者のニーズを持つ人々には rqlite が適している。

影響と展開

  • Fly.io は Ben を招致し、Consul のリースを用いたファイルシステムレベル複製の LiteFS をリリース。
  • Litestream のアプローチは、rqlite バージョン 8.0 で採用された SQLite WAL 処理に多大な影響を与えた。

2022:フォーク、拡張、プラットフォーム化

新しいアプローチの出現

2022 年以降、rqlite や Litestream が採らなかった以下の二つの方向性が生まれた:

  1. cr-sqlite
    • SQLite への拡張として CRDT を追加。
    • リーダーなしで複数の書き込み主体が分岐・再統合可能(AP 領域)。
    • ローカスファーストなアプリケーションに適している。
  2. libSQL (ChiselStrike / Turso)
    • SQLite そのものをフォーク。
    • ホスト型サービスとしてエッジにレプリカを持つアーキテクチャを採用。
    • ヴェンチャー・フィナンシングを受け、2026 年に Supabase に買収された(Turso)。

クラウドネイティブ化とプラットフォームへの進化

  • SQLite Cloud: Raft による複製された SQLite を提供したホスト型サービス(rqlite の初期設計に近いアプローチ)。
  • Cloudflare D1 / Durable Objects: エッジネットワーク内のサーバーレスデータベース、および管理型製品としての複製 SQLite。
  • この流れは、「自分で実行するもの」から**「購入するもの」**へと市場を進化したことを示す。

12 年間が示す結論

3 つの核心的な発見

著者は以下の 3 点を強調している:

  • コアのアイデアは正しかった

    • 「ストレージエンジンとしての SQLite に外部から複製機能を追加する」というアプローチは、少なくとも 8 つの異なるチームによって再発明された。
    • これを止めるべきだとの理由は見つかっていない。
  • 設計空間には 3 つの領域があり、それらは順次出現した

    1. コンセンサス (rqlite, dqlite): 単一リーダー、強い整合性、クラスター構造。
    2. ストリーミング (Litestream): 単一書き込み主体、低コストの復旧、クラスターなし。
    3. マージ (cr-sqlite など): 複数書き込み主体、漸進的整合性。
    • 各領域はそれぞれの問いに対して正しい答えを提供しており、議論の焦点は「どの問いが提起されているか」にある。
  • 資金はプラットフォームへ流れ込んだ

    • rqlite、dqlite、Litestream はオープンソースで無料だが、複製 SQLite をサービス化し請求書発行の対象としたプロジェクトらは資金調達や買収を受けた。
    • これはインフラストラクチャー関連のアイデアにとって usual な運命であり、著者はそれを否定するものではないが、8 年間オープンソースとして存在した後、初めて商品化された点に記録の価値がある。

最後に:rqlite の現在

  • rqlite は今も健在である。
  • 2014 年以来変わらずに同じ役割を果たしつつ、はるかに良く機能している。
  • オープンソースで耐障害性のある RDB を必要とする場合に、支払いをせず、自分で実行して完全に理解できる唯一の選択肢として有効だ。
  • 12 年経過後、著者はこの物語における自らの位置づけに満足している。

同じ日のほかのニュース

一覧に戻る →

2026/10/25 8:11

米国のメディア・映画・芸術分野で20万人の雇用が失われた。その内訳はいくらなのか?AIの影響はどれくらいか?

## Japanese Translation: ## サマリー: 米国のクリエイティブ産業は歴史的な縮小に直面しており、雇用喪失の規模は 2001 年および 2008 年の不況と匹敵する深刻さです。この減少の主因は、映画制作、サウンド録音、出版セクターにおける大規模なリストラにあります。ハリウッドだけで 4 年で 10 万超の雇用を失い、同セクター全体の雇用の約3分の1となり、総雇用数は 2008 年以来の水準に後退し、30 年ぶりの低水準に近づいています。同様の期間中に記述出版物は約 7 万の雇用を喪失し、デジタルアートの各サブセクターも減少を続けており、特に新聞社のスタッフ数は 90 年代以降に 85% も減少し、雑誌出版業者は同期間でスタッフの 66% を失っています。ツアーや物理メディア販売によって支えられていた過去の時代とは異なり、現在のストリーミング収益では以前ほどの水準には達せず、音楽業界もそのビジネスモデルをシフトさせています。この経済的後退に拍車をかけているのは人工知能技術の戦略的な転換です。これらの労働者の約 32% がすでに生成型 AI を利用しているにもかかわらず、画像、映像、音楽生成などの高コスト分野では数学や科学への投資と比較して経済的リターンが低いため、テックセクターはそうした分野から撤退しており(アンソルピックなどで見られるように)、AI ツールによる迅速な回復は短期間で望むことはできず、伝統的なアートの労働力にとって長引く課題を示唆しています。さらに状況は複雑化しており、2022 年のテック雇用の増加が約 30 万でしたが、それ以降毎年雇用を喪失し続けており、これらのデジタルの逆風にもかかわらず対面エンターテインメントは引き続き成長しているという事実が加わっています。

2026/10/25 6:47

構築するソフトウェアに対し、より雄大であるべきです

## 日本語訳: 本件の核心メッセージは、高度な AI ツールを利用する個人が、大規模資金調達なしに高パフォーマンスで影響力のあるソフトウェアを構築できる可能性を示しており、「vibeslop」や低品質な AI 出力に対する懐疑論に挑戦している点です。具体的な証拠としては、Michael Malis の pgrust プロジェクトがあり、これは PostgreSQL に重大なバグ(SP-GiST、JSONPath、pgcrypto、メモリ安全性)を発見しており、メインプロジェクトが成功しない場合でもその最適化は Clickhouse などの主要システムを採用される可能性があります。パフォーマンスは重要な推進力であり、AI モデルは今や数年を要する論文やコードベースからの複雑な技術(例:カスタムレギュラー表現式エンジン、ボードゲーム AI、IMAP RFC 処理)を数時間以内に実装しており、Ripgrep 検索、Rust コンパイル、ファイルシステムオーバーヘッドなどのタスクにおけるボトルネックを大幅に減少させています。大規模な研究所が SOTA モデルのために高価なハードウェアを使用する一方、独立した取り組みは AI が検証および実装可能な能力の差が広がっていることを証明しており、これによりエンジニアリング課題への挑戦が最小限のオーバーヘッドで行えるようになり、データベースおよびツールエコシステムにおける漸進的な進展を促進しています。

2026/10/25 4:06

Goose プログラミング言語

## 日本語訳: Goose は、動的値をコンパイラ管理のスタック上にインライン保持することで、ヒープ割当とガベージコレクションを排除し、メモリ安全性を実現するシステム言語です。リソースの解放は手動のデアロケーションではなくスコープ終了経由で行われ、単一スタックメモリモデルによって再割当なしでの成長がサポートされ、参照がポインタが進むにつれて拡大する配列内を維持します。コンパイラはすべての参照に対する静的ルートを自動的に推論し、所有者よりも長生きする可能性があるものは却下し、ライフタイムアノテーションやアンセーフブロックの必要はありません。 パフォーマンスベンチマークでは、Goose が標準的な C++、手動最適化された C++、そして安全な Rust に比べて速度とメモリ使用量でともに優れています:標準的な C++ の場合最高 3.3 倍高速に動作し、メモリ使用量は約半分(1.9 倍削減)です。アーキテクチャ上の革新であるバリアントモード enums(各バリアントの正確なサイズを格納)、ナローリンク(位置非依存参照のために 1/2/4 バイトのオフセットを使用)、およびインプレース構築は、オーバーヘッドが著しく低い連続したネスト型データ構造を可能にします。エラーは関数フレーム間を静的に返すことができ、アンワインダーや Result タイプを必要とせず、スレッドは分離されたメモリ空間で動作し、memcpy によってフラットな値が転送されることでデータ競合とロックを回避します。全体として、Goose は組み込みシステムや高频度取引といったクリティカルドメインにおいて高いパフォーマンスと安全性を提供するとともに、開発ライフサイクルを簡素化します。

分散型の SQLite が 12 年 | そっか~ニュース