Netflix TimeSeriesデータ抽象化レイヤーの紹介
Netflixは効率的に大量の時間的イベントデータを格納し、わずかミリ秒の遅延でクエリを実行するためのTimeSeries Abstractionを開発しました。このシステムは、大規模データセットでの効率的なクエリ、グローバルな読み取りと書き込み、調整可能な設定、コスト効率など、高スループットの書き込みに対応するように設計されています。TimeSeries Abstractionは、パーティションされたデータ、柔軟なストレージ、構成可能性、スケーラビリティ、シャーディングされたインフラストラクチャなどの基本設計原則に基づいています。データモデルは、イベントアイテム、イベント、時系列ID、名前空間で構成されています。イベントアイテムは特定のイベントのデータを格納するキーと値のペアであり、イベントは1つ以上のイベントアイテムの構造化されたコレクションです。時系列IDはデータセットの保持期間を超えるイベントのコレクションであり、名前空間は時系列IDとイベントデータのコレクションです。TimeSeries Abstractionは、WriteEventRecordsSync、WriteEventRecords、ReadEventRecords、SearchEventRecords、AggregateEventRecordsなどのイベントデータと対話するためのAPIを提供します。ストレージ層はプライマリデータストアとオプションのインデックスデータストアで構成されており、Apache CassandraとElasticsearchが、それぞれ永続的なデータの格納とインデックス作成の優先的な選択肢となっています。プライマリデータストアは時間パーティションスキームを使用して、データを時間間隔に基づいて管理可能なチャンクに分割することで、特定の時間範囲の効率的なクエリを実行し、ストレージとクエリのパフォーマンスを最適化します。データはさらに、効果的なレンジスキャンを容易にし、高スループットの書き込み操作を管理するために、タイムバケットとイベントバケットにパーティション化されます。TimeSeries Abstractionは、大規模な時間的イベントデータのストレージとクエリの課題に対応するように設計されており、高スループット、効率的なクエリ、グローバルな読み取りと書き込み、調整可能な設定、コスト効率が含まれます。独自のイベントデータモデルとスケーラブルなストレージ層を使用することで、TimeSeries AbstractionはNetflixで時間データ管理のための汎用的でコスト効率の高いソリューションを提供します。