Netflixのキー・バリュー・データ・アブストラクション・... ノート

Netflixのキー・バリュー・データ・アブストラクション・レイヤーの導入

NetflixのKey-Value (KV) データ抽象化レイヤー (DAL) は、データアクセスを簡単化し、インフラストラクチャーの信頼性を高める基礎的な抽象化サービスです。このレイヤーは、基礎となるデータベースにかかわらず、開発者に対して一貫したインターフェースを提供します。KV抽象化は、2レベルのマップアーキテクチャーを採用し、単純なデータモデルと複雑なデータモデル両方をサポートします。このレイヤーは、基本的なCRUD API (PutItems、GetItems、DeleteItems) と、多様なユースケースに対応するMutateItemsとScanItems APIを提供します。名前空間は、データがどこで、どのように保存されるかを定義し、論理的なおよび物理的な分離を提供します。これにより、特定のパフォーマンス、耐久性、整合性のニーズに基づいて、異なるユースケースが最適なストレージシステムにルーティングされます。PutItemsとDeleteItems APIは、idempotency tokensを使用してデータの整合性を保証し、操作の正しい順序を確保します。クライアントが生成する単調的なトークンが信頼性のために好まれます。大きなブロブを処理するために、KV抽象化はチャンク分割を使用します。この技術は、大きなデータを小さなチャンクに分割し、適切なメタデータとともにステージングおよびコミットします。ページネーションは、大きなデータセットを管理するために重要な機能です。GetItems APIは、next_page_tokenを使用したページネーションをサポートし、複数のリクエストでの効率的なデータ取得を確保します。墓石(削除されたデータを示すもの)は、パフォーマンスに影響を与える可能性があります。KVは、レコードと範囲の削除を最適化し、単一の墓石を生成し、読み込みページネーションのパフォーマンスを維持します。アイテムレベルの削除は、TTLベースの削除とジッターを使用して処理します。この技術は、ストレージエンジンの複雑さを隠し、削除が読み込みページネーションに与える影響を最小限度に抑えます。idempotencyとチャンク分割は、テールレイテンシーの処理と予測可能な低レイテンシーパフォーマンスの確保にとって不可欠です。これらのデザイン哲学は、Netflixのグローバルオペレーションに必要とされる信頼性とパフォーマンスに貢献します。