InstagramにSQLおよびNoSQLデータベースを使用する利点

公開: 2022-11-21

Instagram は、ユーザーが写真を撮り、フィルターを適用し、Facebook、Twitter、Tumblr などのさまざまなソーシャル ネットワーキング プラットフォームで共有できるようにする写真共有およびソーシャル ネットワーキング サービスです。 ユーザーによって生成された大量のデータを保存および管理するために、Instagram は SQL データベースと NoSQL データベースの両方を利用しています。 SQL (Structured Query Language) は、リレーショナル データベースからデータを操作および取得するために使用される標準のデータベース クエリ言語です。 一方、NoSQL (Not Only SQL) は、リレーショナル データベースの従来のテーブル ベースのスキーマに従わない非リレーショナルデータベースです。 Instagram は SQL データベースを使用して、ユーザー アカウント、写真、コメントなどの情報を保存します。 この情報は取得され、構造化された形式でユーザーに表示されます。 ただし、ユーザーによって大量のデータが生成されるため、Instagram は NoSQL データベースを使用してこのデータを保存しています。 NoSQL データベースは、SQL データベースよりも柔軟でスケーラブルであり、大量のデータの処理に適しています。 Instagram は、SQL データベースと NoSQL データベースの両方を使用して、ユーザーによって生成された大量のデータを保存および管理します。 SQL データベースはユーザー アカウントやコメントなどの構造化データの保存に使用され、NoSQL データベースは写真やビデオなどの非構造化データの保存に使用されます。 両方のタイプのデータベースを使用することで、Instagram はユーザーにリッチで魅力的なエクスペリエンスを提供できます。

PostgreSQL は、Instagram のデータが格納されているデータベースです。 最近では、テクノロジー部門で世界第 1 位にランクされ、最高の栄誉を獲得しました。 Instagram は、ほとんどのソーシャル メディア プラットフォームと同様に、Cassandra と呼ばれる分散キー値ストアを使用します。 このビデオでは、Instagram が運用環境で Cassandra をどのように使用しているかを説明します。 ドキュメントベースの NoSQL データベースは無料で利用でき、分散型で RESTful になる可能性があります。 障害が発生した場合は、40 秒以内に取得できますが、MongoDB は最大 40 分かかる場合があります。 Redis を使用して、Instagram の作成者識別問題を解決するには、永続的な記憶を保持する必要があります。 その結果、サーバーの再起動後に予熱する必要がなくなります。

PostgreSQL と Cassandra は、Instagram で使用される主要なデータベースです。 PostgreSQL と Cassandra はどちらも、データの保存にグローバルに使用できる成熟したレプリケーション フレームワークを使用しています。 これらのサーバーに保存されているデータには、世界中のデータがきちんとプロットされています。

Twitter は、プライマリ データ ストアとして MySQL を使用して設立され、永続化レイヤーはサイト全体の多数のクラスターに成長しました。 Twitter の MySQL の初期展開は、最も広範囲にわたるものの 1 つです。 1 秒あたり数百万のクエリを処理する数千のノードがあり、MySQL クラスターがあります。

Facebook が最初に立ち上げられたとき、このソーシャル グラフは当初、MySQL を永続データベースとして実行し、memcache を「ルックアサイド」キャッシュとして実行する PHP アプリケーションとして構築されました。 SQL と MySQL のデータ モデリング機能により、SQL と MySQL を使用してこのソーシャル グラフを構築できました。

Instagram はどのようなデータ構造を使用していますか?

画像提供 – medium.com

Instagram は有向非巡回グラフに基づくデータ構造を使用します。 このデータ構造により、データを効率的に格納および取得できます。

それにもかかわらず、アルゴリズムはあまり正確ではなく、フォロワーが少ないアカウントよりもフォロワーが多いアカウントからの投稿が頻繁に表示されました。 Instagram は 2016 年 8 月に新しいアルゴリズムを実装し、いいね、コメント、共有などのエンゲージメント指標を使用して投稿が表示される順序を決定することで、エクスペリエンスを向上させました。
リレーションシップ アルゴリズムは、リレーションシップの方程式です。
特定のアカウントに精通していることに基づいて、ユーザーはリレーションシップ アルゴリズムでそれらのアカウントのコンテンツとやり取りする可能性が高くなります。 その結果、より頻繁にやり取りしたアカウントからの投稿が最初に表示され、その後にそうでないアカウントからの投稿が続きます。
利息アルゴリズムは、利息を決定するためのメカニズムです。
インタレスト アルゴリズムの結果として、ユーザーは自分に関連するコンテンツに参加する可能性が高くなります。 その結果、最もエンゲージメントが高いアカウントからの投稿がより頻繁に表示されます。
タイムライン アルゴリズムの簡単な説明を次に示します。
適時性アルゴリズムによると、ユーザーは現在人気のあるコンテンツに関与する可能性が高くなります。 その結果、最近のアカウントからの投稿が表示される可能性が高くなります。


ソーシャル メディアには Sql または Nosql を使用する必要がありますか?

ソーシャル ネットワーク アプリを開発するときに NoSQL を使用するのは理にかなっています。 最初に MySQL を使用してソーシャル ネットワークを構築する場合、最初は簡単かもしれませんが、アプリが成長し、ユーザーがより定期的になると、MySQL クラスターの管理方法、マスター スレーブの構成方法などを考える必要があります。の上。

NoSQL 対 SQL の議論は激しさを増しています。 SQL データベースは歴史的に市場を支配してきました。 議論せずに最適な NoSQL データベースを選択することは不可能です。 クラウド コンピューティングは、今後 4 年以内にすべてのデータベースを 100% 置き換えます。 NoSQL の基本原則は、柔軟性とスケーラビリティです。 その速度とストレージにより、NoSQL はドキュメント システムのようなデータベースを提供します。 2020 年には、MongoDB が最も人気のある NoSQL データベースになるでしょう。

Redis は、ダウンロードの点で 2 番目に人気のあるプラットフォームです。 このコンピュータは、そのメモリと保存されたメモリ機能により、非常に高速です。 NoSQL データベースは常に変化しており、データは非リレーショナルな方法で保存する必要があります。 データの整合性が 100% 正確ではない場合もありますが、そうなることは間違いありません。 アプリのプロトタイプをすばやく作成して、特定の時間に最も効果的なものを顧客に提示できます。 アーキテクチャに応じて、動的 NoSQL アーキテクチャに沿ってデータベース スキーマを増やす必要があります。 「スケーラビリティ」という用語は、データが超高層ビルのように構築されるのではなく、サーバーの側面全体に広がるという事実を指します。

この場合、NoSQL データベースは明らかにリレーショナル データベースよりも優れています。 サポートとアシスタンスとはどのようなものですか? SQL サーバーは、多数のデータベースを備えた単一のコンピューターです。 すべてのユーザーが同じコンピューターにアクセスする場合、ACID の原則で示されているように、データの整合性は常に一貫している必要があります。 NoSQL データベース内のデータは、時間の経過とともに再表示される可能性があります。 数秒かかる場合がありますが、最終的には完了します。 NoSQL は、現代においてアプリの見栄えを良くするための鍵です。 これにより、クラウドベースのサービスとして使用し、要件に応じて拡張できます。 アプリのバックエンドを構造化するには、データの整合性を確保するために SQL データベースに格納する必要がある高トランザクション データと、NoSQL データベースに格納する必要がある非構造化データの 2 つのタイプに分けます。

上位の SNS データベースの分析によると、上位の SNS データベースは、各ユーザーの特定のニーズを満たすためにリレーショナル データベースと NoSQL データベースの両方を使用していました。 場合によっては、SNS はリレーショナル データベースを使用してユーザー データを保存し、NoSQL データベースはログ ファイルを保存するために使用されます。 これは、NoSQL とリレーショナル データベースの両方を使用して複雑な問題を解決できることを示しています。

Nosql データベースは、ソーシャル メディア プラットフォームの実行可能なオプションです

さらに、NoSQL データベースは、Write Once, Read Many の理念に基づいて構築されており、スケーリングのために複製する必要があるデータの量を減らします。 これは、ソーシャル メディア プラットフォームで特に役立ちます。これは、多数の更新や投稿によって大量のデータが重複する可能性があるためです。
PostgreSQL は、そのスケーラビリティとパフォーマンスにより、Instagram のバックエンド データベースとして最終的に選択されました。 一方、MongoDB のような NoSQL データベースは、大量のデータを格納するための最適なプラットフォームを提供するため、依然としてソーシャル メディア プラットフォームの実行可能なオプションです。

Instagramが使用するデータベースの種類

画像提供 – medium.com

Instagram はリレーショナル データベースを使用して、ユーザーとコンテンツのすべてのデータを保存および管理します。 このタイプのデータベースは、データの整理とアクセスが非常に効率的であるため、ユーザー生成コンテンツに大きく依存する Instagram などのソーシャル メディア プラットフォームに最適です。

Instagram は、スケーラビリティ、使いやすさ、および大量のデータを処理できる機能を備えているため、NoSQL データベースとして MongoDB を使用しています。 MongoDB は、ドキュメント指向の NoSQL データベースです。 MongoDB プラットフォームは、Facebook のデータ センターに格納されているため、Instagram に最適です。 MongoDB が他の NoSQL データベースよりも安価であるという事実は、もう 1 つの利点です。

はい、InstagramはCassandraを使用しています

Cassandra とは何ですか? また、どのように機能しますか?
Cassandra は、いつものように Instagram で使用されます。 ソーシャル メディアは、2010 年に設立されたデータベースを使用して成長し、成長戦略の一環として 2 番目のデータ センターを含むように拡張されました。

Nosqlテクノロジー

NoSQL テクノロジは、高いパフォーマンス、スケーラビリティ、および柔軟性を提供するように設計された新しい種類のデータベース管理システムです。 NoSQL システムは、大量のデータを処理する必要があるアプリケーションのパフォーマンスとスケーラビリティを向上させることができるため、従来のリレーショナル データベースの代わりによく使用されます。 また、NoSQL データベースはリレーショナル データベースよりも柔軟性が高いことが多いため、リレーショナル データベースの表形式の構造にはあまり適していない形式でデータを格納する必要があるアプリケーションに適しています。

Instagram のアーキテクチャ

Instagram のアーキテクチャは、水平方向にスケーリングし、高レベルのトラフィックを処理するように設計されています。 これはマイクロサービス アーキテクチャに基づいており、Python、Django、Cassandra、PostgreSQL など、さまざまなテクノロジを使用しています。

私たちが推奨する 8 つのアカウントは次のとおりです。 ハッシュタグ #shesthearchitect は、建築分野における女性の貢献を称えます。 マリオ・ロマーノの多次元壁のラインは、3D プリントをまったく新しいレベルに引き上げます。 Christine Williamson は科学者でありエンジニアであり、科学と建設を構築することに情熱を燃やしています。 お気に入りの建築の Instagram アカウントは? 私たちの新しいショーについてどう思いますか?

Instagramでアーキテクトとしてより多くのフォロワーを獲得する方法

Instagram には、世界中で 13 億 8000 万人以上のユーザーがいます。 ユーザーの約 90% が少なくとも 1 つの企業をフォローしており、ユーザーの 4 分の 1 は 25 歳以上です。 これは、建築家やインテリア デザイナーにとって絶好の機会となるでしょう。
ハッシュタグは、フォロワーを獲得し、建築家の作品を見る人の数を増やすのに役立ちます。 #アート, #インテリアデザイン, #建​​築, #建物, #デザイン, #建​​築写真, #インテリア, #建築愛好家, #建設, #建築-
バックエンド コードは Django Python で記述されているため、すべての Web サーバーと非同期サーバーは分散環境で動作します。 また、必要に応じてスケールアップまたはスケールダウンすることも簡単です。
ユーザーは、Cassandra、PostgreSQL、Memcache、Redis などのテクノロジーを使用して、バックエンドでパーソナライズされたコンテンツにアクセスできます。 その結果、厳密な意味で Instagram のニーズを満たすようにアーキテクチャを調整できます。
Instagram で成長志向のアーキテクチャを作成するには、関連するハッシュタグを追加するだけでなく、質の高いコンテンツがユーザーに確実に配信されるようにする必要があります。