オープンソース版ClickHouseの10年

2026/06/16 5:51

オープンソース版ClickHouseの10年

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

要約

Japanese Translation:

ClickHouse は、世界で最も人気のあるオープンソース分析データベースとして確立されており、初期のプロトタイプから市場リーダーへと進化を遂げてきました。Postgres などの既存システムの上に構築されるのではなく、すべてゼロから独自に設計されたアーキテクチャにより、毎日数百十億件のレコードを高パフォーマンスで保存・処理することが可能となっています。本システムは 2008 年にウェブ分析タスク向けの MySQL と同時に開始され、OLAPServer および Metrage というプロトタイプを経て、2012 年 3 月 9 日付でのサーバーリリースといった主要なマイルストーンを順に達成し発展しました。その成長を支える技術革新には、インメモリ列、進化した LZ4 圧縮(QuickLZ から発展したものであり)、そして増分ソートおよびバックグラウンドマージを導入した MergeTree エンジンが含まれます。分散コンセンサスは、2012 年に加入した社員第 2 号であるマイケル・コロパエフが導入しました。2014 年から始まった内部利用を経て数年が経過した後、リーダーシップは 2016 年 6 月 15 日にソースコードを正式に公開する決断を行いました。これは潜在的なリスクと利点を慎重に評価し、かつ成功したプライベート利用実績を確認した上でなされた戦略的選択であり、業界全体での採用拡大を促進しながらも、そのカスタムエンジニアリングによって特徴づけられていた専門的なパフォーマンス最適化を維持することを可能にしました。

本文

ClickHouse 開発史:オープンソース化とプロジェクトの進化

ClickHouse は 2016 年 6 月 15 日に公開され、すでに歴史のあるプロジェクトです。現在では 2,000 名を超えるコントリビューターによって支えられ、最も人気のあるオープンソース分析データベースとして成長しています。

オープンソースの「レベル」と ClickHouse の目標

オープンソースプロジェクトには、貢献の受け入れ方や透明性の面で異なる成熟段階(レベル)が存在します。ClickHouse は以下の「最大のレベル」を目指して開発されています:

  • レベル 0: コード公開のみ。アーカイブや博物館的な状態(例:Doom、MS-DOS)。
  • レベル 1: リポジトリへのコミットはあるが、コントリビューターの提案を受け入れない場合がある(例:SQLite、Ladybird)。
  • レベル 2: 貢献は受け付けるが、開発プロセスの透明性が低い状態。現在活発なプロジェクトの多くがここにある。
  • レベル 3(目指すべき最上級):
    • 公開されたコントリビューションガイドライン
    • タスク追跡システムとコードレビュー体制
    • 開発ロードマップ、テスト・CI システム、リリースサイクル
    • ユーザーサポートおよび包括的なドキュメント

ClickHouse は以下の点において、この「最高のモデル」を示すことを目指しています:

  • 素晴らしいデータベースの構築方法:
    • モジュール化され、正交性が高く、丁寧なドキュメントが付けられたコードを心がけています。
    • 複雑な概念もコメントで丁寧に説明し、外部リソース(教科書や AI など)に頼らず理解できるようにします。
  • C++ 開発を学ぶのに適した場所:
    • C++23 などの最先端技術だけでなく、ビルドシステムや CI テストなど「地味だが重要な部分」も学べます。
  • データ構造やパフォーマンス最適化のための実験の場:
    • プルリクエストを通じた実験的な提案(新しいメモリ管理、圧縮ライブラリ、アルゴリズム等)を受け付けています。
    • ロードマップにも実験的なアイデアや荒唐無稽な案を含めるなど、創造性をサポートしています。
  • あなたの成果に誇りを抱ける場所:
    • 変更ログや
      system.contributors
      テーブルで全てのコントリビューターにクレジットを与えます。
    • コントリビュータの初期実装を共同で完成させ、必要であれば前向きに再設計も支援します。
    • 最初の著者へのクレジットは必ず付与し、あなたのユースケースと意図を大切にしています。

プロトタイプから ClickHouse への進化

起点:パフォーマンス課題からの出発

  • 最初のコミット(2009 年 5 月 29 日):
    • localtime
      mktime
      gmtime
      などの低速なライブラリ関数を代替する最適化のために行われました。
  • 背景:
    • Google Analytics に似たウェブ分析システムのデータ処理を担当していました。
    • MySQL で事前集計レポートを格納し、C++ カスタムデータ構造でリアルタイム計算を行っていました。
    • 「ログが増え続ける中での遅延防止」が最大の課題でした。

技術的探索とプロトタイプの開発

データの増加に対応するため、数多くの解決策を検討しました:

  • TokuDB や LMDB などの既存ストレージの検討
  • Hadoop やデータ圧縮アルゴリズム(LZO, QuickLZ)の研究
  • HyperLogLog の MySQL BLOB 内での利用実験

さらに、ユーザーアクションの詳細な追跡機能も追加:

  • クリックヒートマップやクリックマップの実装(Flash アネオグリフカラー使用)。
  • 任意のレポート構築が可能にする自由さを提供。

カラム指向データベースへの転換

未集計だが構造化されたログデータを即時に処理する必要性から、カラム指向データベースの調査を開始:

  • 複数の MySQL エンハンメント(Infobright, InfiniDB)や独立系分析 DBMS(Vertica, MonetDB など)を試験。
  • 課題: 1 日間に 1000 億レコード以上、500 コラムを持つデータのロードにおいて既存システムは失敗したため、カスタムデータ構造のプロトタイプを実装。
    • データを単一のバイナリファイルに格納(XFS ファイルシステム使用)。
    • XML で記述されたクエリによる集計・フィルタ・ソート機能の実現。
    • 非集計化された履歴データからの整合性確保(同僚の Evgenii Gatov が解決)。

プロトタイプ 1: OLAPServer (2008.12)

  • フロントエンドとデザインも自らが担当。
  • グローバルなインターネットデータ分析への対応に成功。
  • 既存システム(MapReduce など)より瞬時回答を提供し、統計部門から採用されるに至る。

プロトタイプ 2: Metrage (2009.01)

  • 事前集計レポートの置換とリアルタイム更新を目指し開発。
  • 課題: MySQL の非圧縮データと順序不一致により読み込みが遅かったため、LevelDB / TokuDB 調査
  • 解決: 増分集計のためのカスタムデータ構造を実装。
    • レコード定義には独自の C++ Struct(CRDT 表現)を使用。
    • add
      update
      merge
      serialize
      /
      deserialize
      メソッドを持つ。
    • 読込時におけるマージによる最終データの生成。

ClickHouse の誕生:

  • カラム指向による集計高速化と、リアルタイム更新のためのマージツリーを結合。
  • より一般化された真のクエリ言語とデータ型を受け入れることで、ゼロから完全に実装された新しい DBMS が生まれました。

ClickHouse コードベースの初期実装詳細

最初のコミットはモノリポジトリ内での最適化でしたが、オープンソース化時に分割されながら歴史が保存されています。主要な実装ステップは以下の通りです:

  1. メモリへの列の実装:
    • IColumn
      Field
      クラスの導入。
    • 当時 Apache Arrow が無かったため、独自のメモリアン表現を実装。
  2. 集計関数の導入:
    • ClickHouse の最重要部分の一つとして現在も機能しています。
  3. テーブルエンジンの導入:
    • 初期名は「primary key」(数日ほど)。
    • ディスクへの列読み書きを可能にし、TinyLog に似たエンジンを実装。
  4. 圧縮機能の追加:
    • QuickLZ から LZ4 へ迅速に切り替え(Yann Collet のブログの影響)。
  5. ブロックストリームの導入:
    • 現在「Processors」へ置き換えられていますが、列チャンクのストリーミング処理を可能にしました。
  6. テスト用テーブルの作成:
    • StorageSystemNumbers
      が現在の
      system.numbers
      テーブルとして存続しています。

言語と演算子の進化

  • 最初の関係演算子:
    LIMIT
    からスタート。
  • SQL パーサーの実装:
    • 最初は Boost.Spirit の使用を試みましたが失敗し、後ほど再帰降下パースャを実装しました。
  • 初期アイデアの変遷:
    • 可変長符号化は性能低下のため廃止されました。
    • 独自の列独立圧縮コーデックスや
      Variant
      型(後のバージョンで改良し復活)、固定サイズ配列なども一度削除され、現在は「不要なコードの削除(Trash Remove)」こそが最も重要であると位置づけられています。

最初のデータ構造とクエリ処理

  • hits テーブル: ClickBench で現在も参照される初の実際のテーブル構造。
  • IO 最適化: C++ iostreams の遅さを改善し、
    WriteBuffer
    ReadBuffer
    を導入(今日まで使用)。
  • SELECT クエリインタプリタの実装:
    • 算術演算子および初期 SQL 関数。
    • 集計関数や標準関数の迅速な実装を促しました。

プロダクション環境への展開と高可用性の実装

サーバーとエンジンの追加(2012 年)

  • ClickHouse サーバー:2012 年 3 月 9 日導入。
  • クライアントツール:同年 3 月 25 日追加。
  • 初期プロダクション用途: 「SQL クエリが載った永続的なログキュー」としての定位(Log, TinyLog, Merge, Distributed エンジン利用)。

MergeTree とデータの増分ソート

  • 背景でのデータ部分のマージと時間順ソートを実現。
  • OLAPServer と Metrage の両方を置き換え、プロダクションへのデプロイを可能にしました。

高可用性(HA)と分散合意の実装

チーム拡大に伴い(Michael Kolupaev 社員採用)、地域データセンター間での DRILLS(ダウンタイム演習)を実施:

  • 課題: バックフィルによる単純な二重書き込みでは 100% の一貫性や自動修復が達成困難。
  • 解決策: Java エンジニアとの協力により、ZooKeeper を協調システムとして導入。
  • 実装: Michael が ZooKeeper メタデータ層を利用する
    ReplicatedMergeTree
    を実装。
  • 2014 年、ユーザー向けクエリ用のプロダクション展開が可能に。

クリックハウスのオープンソース化と広まり

プロダクションでの成功(2014 年)

  • 毎日数百十億レコードの格納とリアルタイムクエリ回答。
  • データサイエンティストによるトレンド計算への活用。
  • 部門間移行: MapReduce や MySQL、Postgres から ClickHouse へ移行が進む(広告、EC、インフラなど)。
  • CERN の LHCb 実験でも採用。

オープンソース化の決断

  • コミュニティからの関心の高まりに対し、「空白のニッチを満たすために公開するべき」と判断。
  • 社内承認プロセス: 利益とリスクの評価リストを作成し、説得力を持って承認獲得。
  • リリース活動(2016 年):
    • ロゴ制作、ウェブサイト作成、ブログ投稿準備。
    • Debian リポジトリの作成。
    • 2016 年 6 月 15 日:グローバル公開。

エンジニアへのメッセージと今後の展望

  • オープンソース化への勧め:
    • 最悪の場合でも成果は出ず、世代に影響を与える可能性があります。
    • 過去のコードを見ても恥じる必要はありません(15 年前のコードにも価値があります)。
  • 現在の地位:
    • ClickHouse は現在、世界中の主要企業で最も人気のある分析データベースとして採用されています。

クリックハウスクラウドへの招待

クリックハウスクラウドを開始して $300 のクレジットを獲得してください。

  • 30 日間のトライアル期間を終了後、pay-as-you-go プランへ移行するか、ボリュームベースの割引についてさらに詳しく知るにはお問い合わせください。
  • 詳細については料金ページをご覧ください。

同じ日のほかのニュース

一覧に戻る →

2026/06/20 0:10

ATProto のインスタンスはありません

## Japanese Translation: 以下は、不足していた特定の詳細を統合しつつ流れを保つ改訂版です。 # 改善されたサマリー 記事は、「Bluesky インスタンス」について尋ねることがカテゴリエラーであることを明確にし、atproto がデータのホスティングとアプリケーションを根本的に分離することにより、Mastodon のような孤立した「インスタンス」という概念を排除していることを説明します。従来のモデルでは、これらの結合されたシステムが「領邦」を生み出し、インスタンス所有者がユーザーを追放できる一方、atproto においてはアイデンティティはサーバーではなくユーザーのデータに属しています。この構造により、ユーザーはソーシャルグラフへのアクセスを失うことなくホスティングプロバイダーを即座に切り替えるか、自動的にデータを移行することが可能になります。エコシステムはまたアプリの独立性を育みます; ユーザーは特定のクライアントに依存するのではなく、「Tangled」や「Semble」などのさまざまなアプリケーション間で切り替えたり、著者が言及したプロジェクトのようなカスタムオープンソースアプリを構築して任意のホストからのデータを集約したりすることができるようになります。リレーや Cloudflare などの特定のインフラストラクチャツールがこのモデルを可能にしており、データベースは孤立したアイデンティティサイロとして機能するのではなく、モデレーションの多様性またはキャッシュのために複数のコピーを実行します。したがって、業界は「インスタンス数」のような誤解を招く指標から離れ、ユーザー主体性、多様なアプリ開発、そして真のデータポータビリティによって定義されるより健全なエコシステムへと移行します。

2026/06/20 1:28

现代汽车收购波士顿动力

## Japanese Translation: 現代自動車グループは、ボストン・ダイナミクスの残りの株式 9.65%(ソフトバンク保有分)を約 11 億ドルの総評価額にて 3 億 2500 万ドルで買収し、2026 年 6 月 22 日に完了させる計画を発表しました。これによりボストン・ダイナミクスは現代自動車の完全子会社となり、ソフトバンクが保有していた行使権(put option)も終了します。現代自動車は、アトラス型ヒューマノイドロボットをその製造エコシステムへ統合することを意図しており、まず 2026 年 1 月 5 日にラスベガスで開催される CES において電気式のアトラスを実演し、その後 2028 年までにジョージア州サバnahna 附近的 EV 工場において生産モデルを立ち上げる予定(当初は部品の組立順序化に適用され、2030 年頃にはより重機業務へ拡大)です。商業的な実現可能性を確保するため、ボストン・ダイナミクスの CEO ロバート・プレイターは、アトラスが導入される前に新しい工場タスクを 1〜2 日以内に学習し、稼働率を 99.9% に達することを高い基準として設定しました。現代自動車モビスは、主要なハードウェアを一貫したグループの工業基盤と整合させるために重要なアクチュエータを生産します。競合他社がテスラのフリーモントでのオプティマスや、Figure AI の BMW との共同試験、または Unitree の低価格モデルなど「展示」に注力するのと対照的に、現代自動車は CES 会場でのデモではなく持続的な稼働時間を重視し、自社の工場を利用して制御された工場内導入を追求しており、ジョージア州のメタプラントから着手します。また、この動きはソフトバンクがボストン・ダイナミクスからの戦略的転換を図り、Roze AI へシフトすることで、単なる製品会社としての緩やかな収益曲線ではなく、物理インフラ(エネルギー・建設分野)での出資を求めていることとも反映しています。完全な所有権を確保した現代自動車は、マイノリティー株式や外部パートナーに依存するのではなく、高ボリューム製造環境におけるロボティクス未来を自社で掌握することを目指しています。

2026/06/13 17:21

音波を使ってエスプレッソを抽出。コーヒーの Brewing に必要なエネルギー使用量を 3 分の 1 に削減できる

## Japanese Translation: 研究者たちは、熱ではなく音波を用いて室温で濃厚で高い抽出強度を持つコーヒーを製造する革新的な「超音波エスプレッソ」法を成功裏に開発しました。 blind な味覚検査では、この飲料が従来のホットエスプレッソと区別不能であることを示し、芳香、風味、強度のすべてにおいて同様に優れており、熱エネルギーがクラシックなエスプレッソの特徴に必要なものではないことを証明しています。特にフィルタコーヒーとの比較において、超音波版の方が、より心地よい苦味のために参加者によって好まれるという結果となりました。この技術は、抽出時間を 3 分未満に縮めるために振動子を用いて音響カビテーション(コールドミルクのように小さな泡が生じ、コーヒー粉を破砕する現象)を生み出します。水をお湯まで加熱する必要がないため、標準的な淹れ方における高い熱エネルギー需要や、アイスドリップのような長時間 steep する必要性に対応し、最大 75% も少ないエネルギーを使用します。得られる濃縮液は強力かつ滑らかであるため、ボトル入り飲料、乳成分を含む飲料、または即席飲料製品での即時消費に最適です。もし工業的な生産が効果的にスケールすれば、この手法は品質を損なうことなく運営コストを大幅に削減し、炭素排出量を減らすことができ、世界中のコーヒー業界を持続可能な道筋を提供しつつ、消費者の満足度も保つことができるでしょう。

オープンソース版ClickHouseの10年 | そっか~ニュース