Facebook の NoSQL データベースの使用
公開: 2022-11-22Facebook は、多数の NoSQL データベースを実装して、巨大なソーシャル グラフのスケーリングを支援しています。 これらのデータベースには、Apache HBase、Apache Cassandra、および Apache Thrift が含まれます。 これらの NoSQL データベースを使用することで、Facebook は大量のデータを維持しながら、高速で応答性の高いエクスペリエンスをユーザーに提供できます。
Facebook のデータベースには、20 億人以上のプロフィールが保存されています。 今日、マルチテナント SaaS などのビジネスに不可欠なエンタープライズ アプリの多くは、Facebook のインターネット規模のグローバル分散型アーキテクチャに依存しており、Facebook のデータベースの進化を理解することから学ぶべき教訓があります。 人気のあるオープン ソース データベースである Mystria は、FB の NoSQL グラフ API である TAO の基盤です。 その結果、TAO は FB の既存の 1000 の手動で強化された MySQL マスター スレーブをシャード スレーブに変換しました。 その結果、アプリケーションはクロスシャード トランザクションと共同操作を実行するためにデータベースを使用しなくなりました。 これに加えて、失敗したオーバーランが実行された場合、最近コミットされたデータが失われます。 オブジェクトと関連付けは同じサーバー クラスターに格納され、シャードは変更されません。
データ コロケーションの程度は、低レイテンシ データ アクセスを促進するための重要な最適化手法であると判断されました。 FB がクエリ API として SQL を放棄し、TAO のカスタム NoSQL API を採用することを決定したとき、その開発者は SQL を完全に放棄しました。 Google は、Facebook とは対照的に、Spanner と呼ばれる、グローバルに一貫したまったく新しいデータベースを作成していました。 Spanner のデータ モデルは、ソーシャル グラフではなく、従来のランダム アクセス OLTP に基づいていました。 第 2 世代の分散データベースのデータベース層には、大規模なスケーラビリティとグローバルなデータ分散が組み込まれています。 Spanner はシャードごとの分散コンセンサスを採用して、障害発生時に各シャード (1 つのインスタンスだけでなく) の可用性を高めます。 この構成変更はアプリケーションのコンテキストで行われ、引き続き正常に機能します。
テーブル レベルおよび行レベルのジオ パーティショニングなどの地理空間機能が有効になっている場合は、ローカル リージョンに関連するデータを同じリージョンに配置できます。 マルチシャード トランザクションでは 2 フェーズ コミットが使用され、分散トランザクション マネージャーがノード全体のクロック スキューを追跡します。 シャード化された MySQL への既存の投資を維持するために、FB で TAO を構築しました。 Google は、水平方向にスケーリングし、ジオレプリケーションをレプリケートし、インフラストラクチャの障害をあたかも発生しているかのように処理できる、まったく新しいデータベースである Spanner を作成することで、伝統を打ち破ることにしました。
さまざまな理由から、Facebook で MySQL を使用しています。 MySQL を使用すると、少人数のチームで何千ものサーバーを管理しながら、可能な限り低コストで高品質のサービスを提供できます。
2009 年初頭に FB によって作成された NoSQL グラフ API である TAO は、MySQL ベースの Apache Cassandra で実行することを目的としていました。 このセクションの主な目的は、前のセクションで強調された問題を排除することでした。 Associations and Objects の頭字語である TAO は、関連付けとオブジェクトを指します。
Facebook の初期のデータ ストレージは、リレーショナル MySQL データベースに大きく依存していました。 Facebook のエンジニアは、Google BigTable NoSQL データベースに関する Google の論文に触発されましたが、Facebook のNoSQL データベースに基づく列ファミリー ストアである Cassandra を作成しました。
Facebook には、プライマリ データを保持するためのリレーショナル データベース システムがあります。 MySql 5.6 の fork を使用して、10 億人を超えるユーザーのソーシャル グラフと Facebook メッセンジャー データ (10 億人を超えるユーザー) を保持します。
Facebook は Nosql を使用していますか?
NoSQL データベースの使用は、個々のアプリケーションの特定のニーズによって異なるため、この質問に対する万能の答えはありません。 ただし、Facebook が大量のデータを保存および管理するために、SQL データベースと NoSQL データベースの両方を使用していることは一般的に認められています。
Cloud Datastoreと Cloud Firestore はどちらも、リアルタイムのデータ分析に使用できるドキュメント指向のデータベースを探している企業にとって優れた選択肢です。 Cloud Firestore は、最適化されたアーキテクチャとモバイル デバイスでの使いやすさから、小さなドキュメントに最適です。 Cloud Datastore は、非常に高いワークロードを処理し、自動的にスケーリングするように設計されています。 使い道もたくさんあります。
Facebook はどのようにデータをデータベースに保存しますか?
Facebook は、テーブルに編成されたリレーショナル データベースにデータを格納します。 その後、データはテーブル内の列と行に格納されます。 データは、テキスト、数値、および日付の形式で保存されます。
オレゴン州プラインビルにある Facebook のデータ ストレージ施設。 出席したイベントからステータス (または愛、ハハ、うわー、悲しい、または怒っている顔) まで、タイムラインまですべてを追跡します。 推定によると、Facebook のオレゴン州の施設には、最大 300 ペタバイトのストレージ容量がある可能性があります。 この量のデータを使用すると、約 1,000 億枚の平均サイズの写真を保存できます。 Facebook に、投稿、写真、ビデオ、ステータスの更新などをすべて安全に保管する方法がなかった場合。 そうしないと、Facebook はあなたが誰であるかを記憶できなくなります。 あなたが本当に望む方法で自分自身を表現するために、わずかなスペース (または数百万) が予約されています。
広告をパーソナライズし、Facebook とやり取りする頻度を増やすために使用されます。 Facebookがあなたについて知っている特定のWebサイト、あなたが見る広告、あなたが好きな投稿があります.
Facebook は、このデータをサードパーティの企業にも販売しています。 ドナルド・トランプ大統領の選挙運動に携わったデータ会社ケンブリッジ・アナリティカは、8,700 万人の Facebook ユーザーから個人情報を入手しました。
安全のためには、Facebook がどのようにデータを収集および使用するかを認識し、プライバシーを保護するための措置を講じる必要があります。 Facebook プライバシー ツールを使用して Facebook アカウントを削除したり、Facebook ピクセルや Facebook の「いいね」ボタンなどを無効にしたりできます。
最近のデータ スキャンダルの結果として、Facebook とサードパーティ企業に対する懸念が高まっています。
ケンブリッジ・アナリティカのスキャンダルの過程で、フェイスブックは透明性が低く、迅速に行動しなかったとして批判されてきました. フェイスブックのマーク・ザッカーバーグ最高経営責任者(CEO)は火曜日、スキャンダルに対処するために休職すると発表した。
Facebook と WhatsApp での大規模なデータ侵害が明らかにされて以来、Mark Zuckerberg は、説明責任の欠如とプライバシーに関する懸念への対処の失敗について精査されてきました。
告発によると、Facebook はユーザー データを使用して政治的意見を操作してきました。
提起されたプライバシー問題の結果として、Facebook は透明性の欠如とそれらへの対処の失敗で非難されました。
Facebook は、ユーザー データを収集することにより、ユーザーの政治的意見を操作したと主張されています。
ユーザーには、一連の手順を実行するオプションが与えられます。
Facebook は Cassandra をどのように使用していますか?
Cassandra は、スケーリングと可用性のためによく知られた手法を組み合わせて採用しています。 Cassandra の目標は、受信トレイ検索の問題のストレージ要件に対処することでした。 インボックス検索は、Facebook ユーザーが受信トレイからメッセージを検索できるようにする新機能です。
Facebook は Cassandra を電子メールの検索エンジンとして使用し、25 TB と 1 億を超えるメールボックスを備えています。 Facebook は、2017 年 7 月 1 日に Apache のライセンスに基づいて Cassandra をオープン ソースとしてリリースしました。このビデオでは、Cassandra のアーキテクチャと設計について詳しく説明します。 Cassandra は当初、受信トレイで電子メール アドレスを見つける問題を解決することを目的としていました。 memtable に書き込むときは、常にコミット ログ (シーケンシャル) に書き込みます。これは、クラスター内の各ノードに対してシーケンシャルです。 セットアップ中に、次の手順を読んでディスクからテーブルをクリアします。 Staged Event-Driven Architecture (SEDA) およびゴシップ プロトコルによる障害検出に準拠しています。 1 億人のユーザー、40 億のスレッド、25 TB のデータがあり、Hadoop を 1 時間あたり 1.5 TB で実行できます。
The Sheen is Off: Facebook が Cassandra を Mysql に切り替える
Cassandra の代わりに、Facebook はメッセージング システムの構築に Hbase を選択しました。 分散アーキテクチャのため、Netflix が Cassandra を使用することは当然の選択でした。2013 年までに、ほとんどのデータがそこに格納され、現在も使用され続けています。 Facebook は、データ ストレージに関しては、Cassandra ではなく MySQL を使用しています。 Facebook がすべてのソーシャル メディア データを格納するために使用する主要なデータベースは MySQL です。 彼らは最初のデータベース エンジンMyRocksDB を作成し、次に MySQL データベース エンジン InnoDB を作成しました。 MySQL と Memcache を組み合わせてキャッシュを作成します。
Facebookが使用するNosqlデータベース
Facebook は、すべてのソーシャル メディア データを、同社が依存する主要なデータベースである MySQL に保存します。
データベースからデータを収集するプロセスは、コレクションとして知られています。 データを保存および分析するために、さまざまな方法で使用できます。 DBMS は、特定のデータベースで動作するデータベース管理システムです。 世界中の人々が互いに共有しているさまざまな種類の情報を追跡するために、Facebook は多数のデータベースを採用しています。 Cassandra ストレージ システムは、大量のデータ構造を管理することを目的としています。 このアプリは、ストレージ容量の不足が原因で発生した、最適な受信トレイの検索結果を見つけるという問題を解決するために作成されました。 このキャッシュ方法では、インメモリ ソリューションのみが使用されます。 この場合、ストレージ共有プールへのアクセスが手頃な価格で提供されます。
カサンドラ対。 Cloud Bigtable 対。 アマゾンダイナモッド
Cassandra は、Facebook の最も人気のあるバックエンド ストレージ オプションの 1 つであり、Google と Amazon に次ぐものです。 Cloud Bigtable を使用すると、パフォーマンスの高い NoSQL データベース サービスで分析ワークロードと運用ワークロードを実行できます。 Amazon DynamoDB は、サーバーレスのキー値 NoSQL データベースであり、あらゆる規模でデプロイでき、高性能アプリケーションに最適です。
Facebookが使用するデータベース
Facebook は、リレーショナル データベース管理システム (RDBMS) を使用してデータを保存および整理します。 RDBMS は、データをテーブルに格納するデータベースの一種であり、各テーブルは関係によって他のテーブルにリンクされています。 Facebook は、Facebook ユーザーが生成する大量のデータを処理するように設計されたカスタムビルドの RDBMS を使用しています。
Facebookを使用している人は10億人を超えています。 ユーザーは、ウォール ポストを使用して自分自身を表現し、仲間や友人と交流しています。 何億人ものユーザーを処理しているにもかかわらず、Facebook のエンジニアはサイトをスムーズに運営し続けることを余儀なくされています。 この記事では、目標を達成するために使用するツールと方法のいくつかを読者に紹介します。 Facebook は、5 億人を超えるユーザーを抱える Web サイトを可能な限り動的に保つために、さまざまなシステムを採用しています。 パフォーマンスを高いレベルに保ちながら、スケーラビリティと高可用性が必要な場合は、Apache Cassandra が最適です。 Scribe ログ システムにより、Facebook はさまざまな理由で内部的にログインできます。 Varnish を HTTP アクセラレータとして使用して、超高速のロード バランシングとキャッシュ コンテンツを提供できます。
フェイスブックとは?
この Facebook のデータ センター インフラストラクチャの暴露は、多くの理由で重要な意味を持ちます。 第一に、継続的なサービス品質に対する Facebook のコミットメントを示しています。 さらに、このデータセンターには、Facebook の業務への前例のないレベルのアクセスがあります。 最後に、Facebook がトラフィックを管理し、パフォーマンスを最適化するために採用している Autoscale の重要性を強調しています。
Facebook が Mysql を使用する理由
Facebook が成長し、SQL と MySQL がユビキタスになると、MySQL を永続データベースとして使用し、memcache を「ルックアサイド」キャッシュとして使用する PHP アプリケーションに進化しました。 Facebook は今日、ユニバーサル (マルチテナント) データベースと呼ばれるデータを格納するために 1000 を超える MySql サーバーを採用しています。 データベースは大きく分割され、複製されています。 データの検索に必要なシャードの数を減らすために、関連するすべてのデータがシャードに保持されます。 Netflixが使用するデータベースとは? Oracle は、Netflix のデータ センターで最も一般的なデータ永続化システムです。 MySQL は、一部の地域の映画レコメンデーション インフラストラクチャで使用されています。 どちらのデータベースもリレーショナル データベースです。
フェイスブック データベース
Facebook データベースは、ソーシャル ネットワーキング サイト Facebook によって編成および保存されるデータのコレクションです。 このデータには、ユーザー、その友人、およびサイトでの活動に関する情報が含まれる場合があります。 Facebook データベースは、サイトの機能を強化するために使用されます。
Cassandra が Facebook のデータ ストアになった経緯
SQL のデータ モデリングの柔軟性と、FB が最初に開始されたときに MySQL が広く使用されたため、最初は MySQL が永続データベースとして使用され、memcache がソーシャル グラフの「ルックアサイド」キャッシュとして使用されました。
ペタバイトのデータは、毎日 Facebook で約 100 万ギガバイトの重さになります。 1 ペタバイトは約 300 ペタバイトのデータに相当し、すべてが Hive 施設内に存在します。
Facebook は Cassandra を完全に放棄しましたが、Twitter、Netflix、Apple などの大手企業ではまだ使用されています。 一方、DataStaxには、他のさまざまなビジネスで利用できるツールのバージョンがあります.
その結果、Facebook は自社のデータを Cassandra に保存しなくなりましたが、他の企業は保存しています。
新しい Nosql データベース
SQL ベースではない NoSQL データベースは、リレーショナル データベースとは異なる方法でデータを収集するデータベースとして定義されます。 テーブル データベースは、テーブル内の固定セット列を必要とせず、水平スケーリングと互換性があり、リレーショナル データベースのような JOIN を必要としません。 NoSQL データベースの種類は、使用するデータ モデルによって異なります。
これは、さまざまな目的で業界で最も一般的に使用されているタイプのデータベースの 1 つです。 従来のデータベースよりもクラウド コンピューティングを使用すると、使いやすさ、クラウド ストレージ容量の増加、データ セキュリティの向上など、いくつかの利点があります。 NoSQL データベースは、医療記録、財務記録、その他のデータベースなど、幅広い目的で使用されます。 RavenDB NoSQL ドキュメント データベースは、ACID トランザクション (原子性、一貫性、分離、耐久性) をサポートし、ドキュメント タイプの機能を備えた堅牢な NoSQL データベースです。 Couchbase を使用すると、モバイルおよびモノのインターネット (IoT) アプリケーションを作成できます。 ArangoDB を使用して、グラフ、ドキュメント、およびその他のデータを検索して表示することもできます。 OrientDB は、グラフとドキュメントのマルチモデル サポートを含む最初の NoSQL データベースの 1 つです。
データへの洞察を得るためにデータベースに関するより多くのコンテキストが必要な場合は、Neo4j が実行可能なオプションであることがわかります。 MongoDB は Realm と呼ばれる別のプラットフォームを提供し、モバイル アプリケーションをすばやく構築、テスト、およびリリースできます。 MarkLogic データベースは、マルチモデル データベースと NoSQL 機能を必要とするワークロードを処理するように構築されています。 MarkLogic データベースは、リレーションシップ データの保存と分析作業の実行に適した NoSQLデータベース プラットフォームです。 妥協したくない場合は、フル マネージド ソリューションが最適なオプションです。
Fb データベースのアーキテクチャ
fb データベース アーキテクチャは、データの整理と管理に役立つ強力なツールです。 お客様のニーズに合わせてカスタマイズできるフレキシブルなシステムです。 fb を使用すると、さまざまなソースからデータを簡単に保存および取得できます。
Facebook は、MySQL のボトムエンドより上にあるすべてのグラフをキャッシュするスタック アーキテクチャを採用しています。 つまり、リレーショナル データベースはグラフ データベースよりも優れたパフォーマンスを発揮しないということです。 友達の友達に加えて、複雑なクエリを実行することは、「特定の座標の周りのすべての場所」のような単純なクエリを実行するよりも困難です。 この場合、グラフが最適なソリューションです。 100 万人をわずかに超えるユーザーの場合、1.8 秒が費やされますが、10 万人をわずかに超えるユーザーでは、18 秒が費やされます。 複数のユーザーが同じクエリを実行している場合は、これが唯一のクエリではないことに注意してください。 Facebook が友人関係をどのように設計したかという質問に対する答えは、非常によく設計されているということです。 実施のお手伝いができず、誠に申し訳ございません。