Skip to main content
QUICK REVIEW

[論文レビュー] FoundationDB Record Layer: A Multi-Tenant Structured Datastore

C. Chrysafis, Ben Collins|arXiv (Cornell University)|Jan 14, 2019
Advanced Database Systems and Queries参考文献 23被引用数 5
ひとこと要約

FoundationDB Record Layer は、FoundationDB 上に構築されたオープンソースで状態なしのマルチテナント構造化データストアであり、スキーマ管理、リッチインデックス(バージョン管理およびクロスタイプインデックスを含む)、宣言的クエリなど、リレーショナルに似たセマンティクスを提供しながら、ACIDトランザクションとスケーラビリティを引き継いでいます。各テナントのデータとインデックスを論理的なデータベースに隔離することで、大規模マルチテナントを実現し、CloudKit が数十億のユーザーデータベースを高いパフォーマンスと低メンテナンスオーバーヘッドで管理できるようにしています。

ABSTRACT

The FoundationDB Record Layer is an open source library that provides a record-oriented data store with semantics similar to a relational database implemented on top of FoundationDB, an ordered, transactional key-value store. The Record Layer provides a lightweight, highly extensible way to store structured data. It offers schema management and a rich set of query and indexing facilities, some of which are not usually found in traditional relational databases, such as nested record types, indexes on commit versions, and indexes that span multiple record types. The Record Layer is stateless and built for massive multi-tenancy, encapsulating and isolating all of a tenant's state, including indexes, into a separate logical database. We demonstrate how the Record Layer is used by CloudKit, Apple's cloud backend service, to provide powerful abstractions to applications serving hundreds of millions of users. CloudKit uses the Record Layer to host billions of independent databases, many with a common schema. Features provided by the Record Layer enable CloudKit to provide richer APIs and stronger semantics with reduced maintenance overhead and improved scalability.

研究の動機と目的

  • 状態を持つサービス向けにスケーラブルで、高可用性かつ一貫性のあるバックエンドを構築する課題に対処すること。
  • FoundationDB の上に、構造化データ、スキーマの進化、複雑なクエリ機能をサポートする、軽量で拡張可能で状態なしのレイヤーを提供すること。
  • トランザクションの整合性を損なわせることなく、各テナントのデータとインデックスを論理データベースにカプセル化することで、効率的で隔離され、スケーラブルなマルチテナントを実現すること。
  • ネストされたレコード、バージョン管理インデックス、物化集計などのリッチなデータベース抽象化を提供することで、アプリケーション開発の複雑さとメンテナンスオーバーヘッドを低減すること。
  • 階層的で拡張可能なデータベースアーキテクチャが、CloudKit のような大規模な生産ワークロードを工業的規模でサポートできることを示すこと。

提案手法

  • Protocol Buffer メッセージを用いて、レコード指向のデータモデルを構築し、構造的で型付きでネストされたデータレコードを表現する。
  • アプリケーションのデータモデルが時間経過とともに変更されるのをサポートするためのスキーマ管理および進化ツールを提供する。
  • FoundationDB のアトミックミューテーションを用いて、競合を避ける並列更新を実現する。二次インデックス、バージョン管理インデックス(コミットタイムスタンプ上)、クロスタイプインデックスを含む、多様なインデックスタイプをサポートする。
  • 状態なしの設計により、ステート同期の必要なしにインスタンスを追加することで計算リソースを水平スケーリング可能である。
  • インデックスを活用して宣言的クエリを効率的に実行するクエリプランナを備えたストリーミングクエリ実行モデルを採用する。
  • カスタムインデックスタイプ、シリアルライゼーション(暗号化、圧縮など)、クエリオペレータの拡張が可能で、深いカスタマイズを可能にする多数の拡張ポイントを提供する。

実験結果

リサーチクエスチョン

  • RQ1階層的で状態なしのデータベースシステムは、大規模なマルチテナントを実現しながら、強力なACIDセマンティクスとリッチなクエリ機能をどのように提供できるか?
  • RQ2分散キー値ストアにおいて、効率的で競合のない、並列でのインデックスメンテナンスを可能にするアーキテクチャパターンは何か?
  • RQ3共有インfraストラクチャ上で数十億の隔離された論理データベースを効率的に管理しながら、パフォーマンスを維持し、運用オーバーヘッドを低く保てるか?
  • RQ4整合性やパフォーマンスを損なわせることなく、データベースレイヤーにおける拡張性を実現するメカニズムは何か?
  • RQ5低レベルのトランザクショナルキー値ストア上に構築された高レベルのデータ抽象化は、実世界の生産システムにおいて、従来のリレーショナルデータベースの機能を満たすか、それ以上に達成できるか?

主な発見

  • FoundationDB Record Layer は、Apple の CloudKit が数百万人のユーザーを対象にサービスを提供する中で、数十億の隔離されたマルチテナントデータベースを生産環境で効果的にサポートしている。
  • トランザクション可能なフルテキストインデックスや高並列処理ゾーンといった強力な機能を提供し、アプリケーション開発とシステムパフォーマンスの両方を向上させている。
  • インデックス更新にアトミックミューテーションを用いることで、高負荷下でも競合のない並列インデックスメンテナンスを実現している。
  • 状態なしの設計により、計算リソースのスムーズな水平スケーリングが可能となり、データ配置とは分離され、ロードバランシングが簡素化されている。
  • 拡張性モデルにより、クライアントはカスタムインデックスタイプやシリアルライゼーションロジックを統合可能であり、暗号化ストレージや特殊集計処理などのユースケースをサポートできる。
  • 分散キー値ストア上に階層アーキテクチャを構築することで、強力な一貫性と高いスケーラビリティを備えたリレーショナルに似た機能を実現できることを示している。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。