読者の皆様へ: 皆様のご要望にお応えするべく、ノイズを削減する機能セットを開発しました。皆様が関心をお持ちのトピックを、EメールとWeb通知で受け取ることができます。新機能をぜひお試しください。
Appleは、2015年に同名の企業から買収した分散データベースコアのFoundationDBを、オープンソースとして公開した。FoundationDBは、低価格サーバによるクラスタに格納された大容量のデータを対象として、完全にグローバルかつ行を越えたACIDトランザクションをサポートすることで、データの一貫性を確保するように設計されている。
FoundationDBは、その名が示すように、一貫性の維持と拡張可能性を備えたデータストアを必要とするシステムに対して、低レベルのインターフェースを提供する。基本的な考え方は、さまざまなデータモデルやクエリ言語を備えた複数のデータベースフロントエンドをその上に構築可能な“コア”を提供する、というものだ。対象の中には、SQLデータベースやドキュメントデータベース、グラフデータベースの他、Lucene/ElasticSearch、Zookeeoerなどの特化したAPIも含まれる。これらはすべて基盤となるデータストアのコア機能を用いて、拡張性とオペレーションの一貫性を確保する。
AppleによるとFoundationDBでは、クラスタにマシンを追加することによって、スケールアップと同時にハードウェア障害からの自動回復も可能となる。
FoundationDBデータストアを最初に開発したFoundationDBの創業者のひとりが、その設計内容の詳細についてHacker Newsで説明している。FoundationDBは楽観的並行性(optimistic concurrency)を採用しており、ロックではなく、辞書編纂型競合範囲を介して競合可能性を処理する。それぞれの範囲にはトランザクションによって読み書きされる1つ以上のキーの間隔があり、単一キー単位の最小粒度を持つ。競合範囲の交差は、データストレージのパーティショニングとは独立した方法でキー空間を分割する、一連の内部的なマイクロサービスによって解決される。
さらに、スケーラビリティ向上のためにFoundationDBでは、インデックスをキー/バリューストア内に直接配置し、トランザクションを通じたデータ一貫性を維持している。このアプローチのメリットは、すべてのノードにインデックスをブロードキャストする必要のないことだ。もうひとつの興味深い機能は、すべてのトランザクションが外部整合性を備えた直列化可能分離(serializable isolation)である。
開発者はCやGo、Java、Python、Rubyなど、さまざまな言語で使用可能なAPIバインディングを使って、FoundationDBを操作することができる。macOS、Windows、Linuxにはバイナリインストーラが用意されている。開発用としてはmacOSプラットフォームも完全にサポートされているが、運用環境としてのサポートはLinuxバージョンに限定されている点に注意が必要だ。
この記事を評価
- 編集者評
- 編集長アクション