[フレーム]
BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

InfoQのすべての体験をアンロックして、そのメリットを最大限に活用しましょう

ログインして、InfoQのすべての体験をアンロックしましょう!お気に入りの著者やトピックの最新情報を入手し、コンテンツと交流し、限定リソースをダウンロードできます。

ログイン
または

アカウントをお持ちでない方

登録
  • あなたにとって重要なトピックや同僚の最新情報を入手しましょう最新の洞察とトレンドに関する最新情報を即座に受け取りましょう。
  • 継続的な学習のために、無料のリソースに手軽にアクセスしましょうミニブック、トランスクリプト付き動画、およびトレーニング教材。
  • 記事を保存して、いつでも読むことができます記事をブックマークして、準備ができたらいつでも読めます。

Topics

地域を選ぶ

AIオールスターズ2025

"AI活用"をキーワードに「AIを使い倒し/使いこなす」企業の最前線をお届けします。

QCon San Francisco - image
QCon San Francisco 2025

Get production-proven patterns from the leaders who scaled a GenAI search platform to millions, migrated a core ML system without downtime, and architected a global streaming service from the ground up.

Early Bird ends Nov 11.

QCon AI New York - image
QCon AI New York 2025

Move beyond AI demos to real engineering impact. Discover how teams embed LLMs, govern models, and scale inference pipelines to accelerate development securely.

Early Bird ends Nov 11.

QCon London - image
QCon London 2026

Benchmark your systems against leading engineering teams. See what really works in FinOps, modern Java, and distributed data architectures to balance cost, scale, and reliability.

Early Bird ends Nov 11.

InfoQ ホームページ ニュース Reddit、"AWS S3"やその他のシステムからメディアメタデータを"AWS Aurora Postgres"に移行

Reddit、"AWS S3"やその他のシステムからメディアメタデータを"AWS Aurora Postgres"に移行

2024年4月26日 読了時間 3 分

作者:

翻訳者

原文リンク(2024年03月31日)

Redditは、メディアメタデータのストレージをAWS Aurora Postgresを使った新しいアーキテクチャに統合した。以前は、AWS S3から直接取得を行うなど、様々なシステムからメディアメタデータを取得していた。新しいソリューションにより、メディアメタデータの検索が簡素化し、5ms以下のレイテンシで毎秒100k以上のリクエストを処理できるようになる(p90)。

Redditは、画像、動画、埋め込みサードパーティメディアなど、さまざまなタイプのメディアコンテンツを含む何十億もの投稿をホストしている。また、Redditはユーザーの行動傾向を観察しており、今後数年でより多くのメディアコンテンツがアップロードされると予想している。

Redditのシニア・ソフトウェア・エンジニアであるJianyi Yi氏は、メディア・メタデータがRedditにとってどのような意味を持つかを述べる。

メディア・メタデータは、メディア・コンテンツに追加のコンテキスト、整理、検索性を提供します。Redditのメディアメタデータには、主に2つのタイプがあります。最初のタイプは、投稿モデル上のメディアデータです。たとえば、動画投稿をレンダリングする場合、動画のサムネイル、再生URL、ビットレート、さまざまな解像度が必要になります。2つ目のタイプは、メディアアセット自体のライフサイクルに直接関連するメタデータです。

Redditのプラットフォームが有機的に進化したため、メディアメタデータは多くのシステムに保存されることになったが、保存形式が一貫しておらず、メディアタイプによってクエリパターンが異なり、監査やコンテンツの分類も不十分であった。さらに悪いことに、対応するメタデータをフェッチするために、S3バケットオブジェクトをクエリしたり、ダウンロードしたりする必要がある場合もある。

メディアメタデータの例(出典:Reddit Engineering Blog

同社は、メディアメタデータを管理するための統一されたシステムを構築することを決定し、Apache Cassandraよりも AWS Aurora Postgresの方をデータストレージに使用することを選んだ。どちらのデータベースもRedditの要件を満たしていたが、Postgresが選択された理由は、アドホックなデバッグとより柔軟なクエリパターンを提供してくれるからだ。

将来の成長(2030年までに50TBのメディアメタデータ)を見越して、エンジニアはPostgresベースのソリューションでスケーラビリティをサポートするためにテーブル・パーティショニングを採用した。彼らはパーティション管理のためにpg_partmanpg_cron拡張機能を活用し、パーティショニングキーとしてポストIDを使用した。単調に増加するポストIDでパーティショニングを行うことで、Postgresは最新のパーティションのインデックスをキャッシュし、ディスクI/Oを最小限に抑えることができるため、パフォーマンスが向上する。さらに、同じ期間の複数の投稿を取得するバッチクエリは、単一のパーティションからすべてのデータを取得するため、クエリの実行時間がさらに短縮される。

チームはまた、すべてのメディアメタデータフィールドをシリアライズされたJSONBフォーマットで保存することを決定し、効果的にテーブルをキーバリューストアに変換した。これにより、クエリ・ロジックが簡素化し、結合が回避され、読み取りパフォーマンスがさらに向上した。すべてのスケーラビリティとパフォーマンスの最適化により、メタデータ・ストアは100k RPS(リクエスト/秒)で2.6ms(p50)、4.7ms(p90)、17ms(p99)という低い読み取りレイテンシを実現している。

移行を含むメディア・メタデータ・ストアのアーキテクチャ(出典:Reddit Engineering Blog)

このプロジェクトの最大の課題はデータ移行であり、エンジニアは多段階のアプローチを採用した。まず、デュアルライトを有効にし、古いデータソースからデータを埋め戻した。次に、デュアルリードを有効にして出力を比較し、問題を検出して対処した。最後に、パフォーマンスとスケーラビリティの問題を監視しながら、徐々に新しいデータストアの使用に切り替えていった。移行プロセス中、チームはApache Kafkaコンシューマを使ってソースデータベースからデータ変更イベントをストリーミングし、データの不整合を報告して、エンジニアがデータの問題を分析できるようにした。

作者について

Rafal Gancarz

もっと見るより少なく

この記事に星をつける

おすすめ度
スタイル
  • 関連記事

    • 関連スポンサーコンテンツ

特集コンテンツ一覧

InfoQ ニュースレター

毎週火曜日に前週のまとめコンテンツをお送りいたします。(日本語版は不定期リリース)25万人のシニアな開発者コミュニティーにぜひご参加ください。 サンプルを見る

We protect your privacy.

BT

AltStyle によって変換されたページ (->オリジナル) /