JP6483092B2 - 更新レイヤを伴うデータベース・シャーディング - Google Patents

更新レイヤを伴うデータベース・シャーディング Download PDF

Info

Publication number
JP6483092B2
JP6483092B2 JP2016515050A JP2016515050A JP6483092B2 JP 6483092 B2 JP6483092 B2 JP 6483092B2 JP 2016515050 A JP2016515050 A JP 2016515050A JP 2016515050 A JP2016515050 A JP 2016515050A JP 6483092 B2 JP6483092 B2 JP 6483092B2
Authority
JP
Japan
Prior art keywords
identifier information
update
content
content object
content objects
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016515050A
Other languages
English (en)
Other versions
JP2016526218A (ja
Inventor
クナター、サンディヤ
ボフ ラッセン、セーレン
ボフ ラッセン、セーレン
カーティス、マイケル
プローニン、ピリップ
Original Assignee
フェイスブック,インク.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by フェイスブック,インク. filed Critical フェイスブック,インク.
Publication of JP2016526218A publication Critical patent/JP2016526218A/ja
Application granted granted Critical
Publication of JP6483092B2 publication Critical patent/JP6483092B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Business, Economics & Management (AREA)
  • Tourism & Hospitality (AREA)
  • Operations Research (AREA)
  • Health & Medical Sciences (AREA)
  • Economics (AREA)
  • General Health & Medical Sciences (AREA)
  • Human Resources & Organizations (AREA)
  • Marketing (AREA)
  • Primary Health Care (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Computing Systems (AREA)

Description

本開示は一般に、検索アルゴリズムに関する。
ソーシャルネットワーキング・システム(ソーシャルネットワーキング・ウェブサイトを含むことができる)は、そのソーシャルネットワーキング・システムのユーザ(人または組織など)がそのソーシャルネットワーキング・システムと、およびそのソーシャルネットワーキング・システムを通じて互いに対話することを可能にすることができる。ソーシャルネットワーキング・システムは、ユーザからの入力を用いて、そのユーザに関連付けられているユーザ・プロフィールを作成して、ソーシャルネットワーキング・システム内に格納することができる。ユーザ・プロフィールは、人口統計学的情報、通信チャネル情報、およびユーザの個人的な関心に関する情報を含むことができる。ソーシャルネットワーキング・システムは、ユーザからの入力を用いて、そのユーザと、ソーシャルネットワーキング・システムのその他のユーザとの関係のレコードを作成および格納すること、ならびにサービス(たとえば、ウォール・ポスト、写真共有、イベント編成、メッセージング、ゲーム、または広告)を提供して、ユーザ同士の間における社会的な交流を容易にすることも可能である。
ソーシャルネットワーキング・システムは、そのサービスに関連したコンテンツまたはメッセージを、1つまたは複数のネットワークを介して、ユーザのモバイルまたはその他のコンピューティング・デバイスへ送信することができる。ユーザは、自分のユーザ・プロフィールおよびソーシャルネットワーキング・システム内のその他のデータにアクセスするためにソフトウェア・アプリケーションを自分のモバイルまたはその他のコンピューティング・デバイス上にインストールすることもできる。ソーシャルネットワーキング・システムは、ユーザにつながっているその他のユーザの集約されたストーリのニュースフィードなど、ユーザに表示するためのコンテンツ・オブジェクトのパーソナライズされたセットを生成することができる。
特定の実施形態においては、データベース負荷を低減するためのインデックス・サーバの2本柱のアーキテクチャが、データベースに対してクエリーを行うために提供されることが可能である。このアーキテクチャの第1の柱(「用語シャードされた」(TS : term-sharded)インデックス)は、N個以下の検索結果(すなわち、短いポスティング・リスト)を有する検索語を含むことができ、サーバは、すべてのタイプの(タイプごとに編成された)ドキュメントに関する識別子を含むことができる。このアーキテクチャの第2の柱は、N個を上回る検索結果(すなわち、長いポスティング・リスト)を有する検索語に関する複数の「ドキュメントシャードされた」(DS : doc-sharded)インデックスを提供することができ、それぞれのDSインデックスは、1つまたは複数の特定のタイプ(たとえば、写真、ユーザ、コメント、「いいね!」、チェックイン)のドキュメントに関する識別子を含むだけである。複雑なクエリーが受け取られた場合には、トップ・アグリゲータは、そのクエリー内のそれぞれの検索語を調べて、それぞれの用語が長いポスティング・リストを有しているかどうか、または短いポスティング・リストを有しているかどうかを特定することができる。次いでトップ・アグリゲータは、短いポスティング・リストを伴う用語を探してTSインデックスにアクセスし、長いポスティング・リストを伴う用語を探してDSインデックスにアクセスすることができる。たとえば、「カンナム・スタイル」を探す検索は、2つの検索語(「カンナム」および「スタイル」)から構成され、「カンナム」は、短いポスティング・リストを有しており、「スタイル」は、非常に長いポスティング・リストを有している。このケースにおいては、「カンナム」に関する第1のポスティング・リストが、TSインデックスから引き出されることが可能であり、「スタイル」に関する第2のポスティング・リストが、(すべての関連しているドキュメント・タイプにわたって)DSインデックスから引き出されることが可能であり、次いでドキュメント識別子のそれらの2つのセットの重なる部分が算出されて、検索結果の実際のセットを特定することが可能である。
新たな用語に関連付けられているドキュメントがソーシャルグラフ内に最初に登場し始めたときには、その新たな用語に関するポスティング・リストが、そのポスティング・リストの長さがN未満である限り、TSインデックスにおいて生成されることが可能である。そのポスティング・リスト内のエントリーは、ドキュメント・タイプでマークされることが可能である。ポスティング・リストの長さがNを超えると、ポスティング・リストのチャンクは、そのポスティング・リスト内のアイテムのドキュメント・タイプに従ってDSインデックスへと分散される。プロモート中にフェイルオーバが発生した場合には、新たに活動中となったサーバは、プロモートされている用語を探してTSインデックスにクエリーを行うことができる。それらの断片のすべてが、関連のあるDSインデックスにおいて成功裏に作成されたとして確認されると、その用語およびそのポスティング・リストは、TSインデックスから削除されることが可能である。
それぞれのインデックスは、不変のレイヤを保持すること、およびリアル・タイムの更新を可変のレイヤに付加することが可能である。不変のレイヤからインデックス・データが取り出される場合は常に、インデックス・データは、対応する可変のレイヤから取り出されることも可能である。定期的に、可変のレイヤ内のデータが、不変のレイヤへと組み込まれることが可能であり、このタスク中も、プロモートが実行されることが可能である。
ソーシャルネットワーキング・システムに関連付けられている例示的なネットワーク環境を示す図。 ソーシャルネットワーキング・システムの例示的な検索インデックスの例示的なパーティション分割を示す図。 更新レイヤを伴う例示的な検索のための例示的な方法を示す図。 組み込まれた更新を伴う例示的な検索のための例示的な方法を示す図。 例示的なソーシャルグラフを示す図。 例示的なコンピューティング・システムを示す図。
図1は、ソーシャルネットワーキング・システムに関連付けられている例示的なネットワーク環境100を示している。ネットワーク環境100は、ネットワーク110によって互いにつながっているクライアント・システム130、ソーシャルネットワーキング・システム160、およびサードパーティ・システム170を含む。図1は、クライアント・システム130、ソーシャルネットワーキング・システム160、サードパーティ・システム170、およびネットワーク110の特定の構成を示しているが、本開示は、クライアント・システム130、ソーシャルネットワーキング・システム160、サードパーティ・システム170、およびネットワーク110の任意の適切な構成を想定している。限定ではなく、例として、クライアント・システム130、ソーシャルネットワーキング・システム160、およびサードパーティ・システム170のうちの複数は、ネットワーク110を迂回して、互いに直接つながることが可能である。別の例として、クライアント・システム130、ソーシャルネットワーキング・システム160、およびサードパーティ・システム170のうちの複数は、物理的にまたは論理的に、全体としてまたは部分的に互いに同一場所に配置されることが可能である。その上、図1は、特定の数のクライアント・システム130、ソーシャルネットワーキング・システム160、サードパーティ・システム170、およびネットワーク110を示しているが、本開示は、任意の適切な数のクライアント・システム130、ソーシャルネットワーキング・システム160、サードパーティ・システム170、およびネットワーク110を想定している。限定ではなく、例として、ネットワーク環境100は、複数のクライアント・システム130、ソーシャルネットワーキング・システム160、サードパーティ・システム170、およびネットワーク110を含むことができる。
本開示は、任意の適切なネットワーク110を想定している。限定ではなく、例として、ネットワーク110の1つまたは複数の部分は、アド・ホック・ネットワーク、イントラネット、エクストラネット、仮想プライベート・ネットワーク(VPN)、ローカル・エリア・ネットワーク(LAN)、ワイヤレスLAN(WLAN)、ワイド・エリア・ネットワーク(WAN)、ワイヤレスWAN(WWAN)、メトロポリタン・エリア・ネットワーク(MAN)、インターネットの一部分、公衆交換電話網(PSTN)の一部分、セルラー電話ネットワーク、またはこれらのうちの複数の組合せを含むことができる。ネットワーク110は、1つまたは複数のネットワーク110を含むことができる。
リンク150は、クライアント・システム130、ソーシャルネットワーキング・システム160、およびサードパーティ・システム170を通信ネットワーク110に、または互いに接続することができる。本開示は、任意の適切なリンク150を想定している。特定の実施形態においては、1つまたは複数のリンク150は、1つもしくは複数の有線リンク(たとえば、デジタル・サブスクライバ・ライン(DSL)もしくはデータ・オーバ・ケーブル・サービス・インタフェース仕様(DOCSIS)など)、ワイヤレス・リンク(たとえば、Wi−Fiもしくはワールドワイド・インターオペラビリティー・フォー・マイクロウェーブ・アクセス(WiMAX)など)、または光リンク(たとえば、同期光ネットワーク(SONET)もしくは同期デジタル階層(SDH)など)を含む。特定の実施形態においては、1つまたは複数のリンク150はそれぞれ、アド・ホック・ネットワーク、イントラネット、エクストラネット、VPN、LAN、WLAN、WAN、WWAN、MAN、インターネットの一部分、PSTNの一部分、セルラー・テクノロジーベースのネットワーク、衛星通信テクノロジーベースのネットワーク、別のリンク150、または複数のそのようなリンク150の組合せを含む。リンク150は、ネットワーク環境100の全体を通じて必ずしも同じである必要はない。1つまたは複数の第1のリンク150は、1つまたは複数の点において1つまたは複数の第2のリンク150とは異なることが可能である。
特定の実施形態においては、クライアント・システム130は、クライアント・システム130によって実装またはサポートされる適切な機能を実行することができる、ハードウェア、ソフトウェア、もしくは組み込みロジック・コンポーネント、または複数のそのようなコンポーネントの組合せを含む電子デバイスであることが可能である。限定ではなく、例として、クライアント・システム130は、デスクトップ・コンピュータ、ノートブック・コンピュータもしくはラップトップ・コンピュータ、ネットブック、タブレット・コンピュータなどのコンピュータ・システム、eブック・リーダ、GPSデバイス、カメラ、携帯情報端末(PDA)、ハンドヘルド電子デバイス、セルラー電話、スマートフォン、その他の適切な電子デバイス、またはそれらの任意の適切な組合せを含むことができる。本開示は、任意の適切なクライアント・システム130を想定している。クライアント・システム130は、クライアント・システム130のネットワーク・ユーザがネットワーク110にアクセスすることを可能にすることができる。クライアント・システム130は、自分のユーザがその他のクライアント・システム130のその他のユーザと通信することを可能にすることができる。
特定の実施形態においては、クライアント130は、MICROSOFT INTERNET EXPLORER、GOOGLE CHROME、またはMOZILLA FIREFOXなどのウェブ・ブラウザ132を含むことができ、1つまたは複数のアドオン、プラグイン、またはTOOLBARもしくはYAHOO TOOLBARなどのその他の拡張を有することができる。クライアント・システム130のユーザは、ウェブ・ブラウザ132を特定のサーバ(サーバ162、またはサードパーティ・システム170に関連付けられているサーバなど)へ導くユニフォーム・リソース・ロケータ(URL)またはその他のアドレスを入力することができ、ウェブ・ブラウザ132は、ハイパー・テキスト転送プロトコル(HTTP)要求を生成して、そのHTTP要求をサーバに通信することができる。サーバは、そのHTTP要求を受け入れて、そのHTTP要求に応答して1つまたは複数のハイパー・テキスト・マークアップ言語(HTML)ファイルをクライアント・システム130に通信することができる。クライアント・システム130は、ユーザに提示するためにサーバからのHTMLファイルに基づいてウェブページをレンダリングすることができる。本開示は、任意の適切なウェブページ・ファイルを想定している。限定ではなく、例として、ウェブページは、特定のニーズに従って、HTMLファイル、拡張可能ハイパー・テキスト・マークアップ言語(XHTML)ファイル、または拡張可能マークアップ言語(XML)ファイルからレンダリングすることができる。そのようなページは、限定ではなく、例として、JAVASCRIPT(登録商標)、JAVA(登録商標)、MICROSOFT SILVERLIGHTで書かれたスクリプトなどのスクリプト、AJAX(Asynchronous JAVASCRIPT(登録商標) and XML)などのマークアップ言語とスクリプトの組合せなどを実行することもできる。本明細書においては、ウェブページへの参照は、適切な場合には、(そのウェブページをレンダリングするためにブラウザが使用することができる)1つまたは複数の対応するウェブページ・ファイルを含み、その逆もまた同様である。
特定の実施形態においては、ソーシャルネットワーキング・システム160は、オンライン・ソーシャル・ネットワークをホストすることができるネットワークアドレス可能なコンピューティング・システムであることが可能である。ソーシャルネットワーキング・システム160は、たとえば、ユーザプロフィール・データ、コンセプトプロフィール・データ、ソーシャルグラフ情報、またはオンライン・ソーシャル・ネットワークに関連したその他の適切なデータなどのソーシャルネットワーキング・データを生成すること、格納すること、受け取ること、および送信することが可能である。ソーシャルネットワーキング・システム160は、ネットワーク環境100のその他のコンポーネントによって直接、またはネットワーク110を介してアクセスされることが可能である。特定の実施形態においては、ソーシャルネットワーキング・システム160は、1つまたは複数のサーバ162を含むことができる。それぞれのサーバ162は、単一のサーバ、または複数のコンピュータもしくは複数のデータセンターにわたる分散サーバであることが可能である。サーバ162は、限定ではなく、例として、ウェブ・サーバ、ニュース・サーバ、メール・サーバ、メッセージ・サーバ、広告サーバ、ファイル・サーバ、アプリケーション・サーバ、Exchangeサーバ、データベース・サーバ、プロキシ・サーバ、本明細書において記述されている機能もしくはプロセスを実行するのに適している別のサーバ、またはそれらの任意の組合せなど、さまざまなタイプのものであることが可能である。特定の実施形態においては、それぞれのサーバ162は、サーバ162によって実装またはサポートされる適切な機能を実行するためのハードウェア、ソフトウェア、もしくは組み込みロジック・コンポーネント、または複数のそのようなコンポーネントの組合せを含むことができる。特定の実施形態においては、ソーシャルネットワーキング・システム164は、1つまたは複数のデータ・ストア164を含むことができる。データ・ストア164は、さまざまなタイプの情報を格納するために使用されることが可能である。特定の実施形態においては、データ・ストア164内に格納されている情報は、特定のデータ構造に従って編成されることが可能である。特定の実施形態においては、それぞれのデータ・ストア164は、リレーショナル・データベース、カラムナ(columnar)・データベース、相関(correlation)データベース、または好適なデータベースであることが可能である。本開示は、複数の特定のタイプのデータベースを記載するかまたは例示するが、本開示は、好適なタイプのデータベースのうちのいずれかを考慮する。特定の実施形態は、クライアント・システム130、ソーシャルネットワーキング・システム160、またはサードパーティ・システム170が、データ・ストア164内に格納されている情報を管理すること、取り出すこと、修正すること、追加すること、または削除することを可能にするインタフェースを提供することができる。
特定の実施形態においては、ソーシャルネットワーキング・システム160は、1つまたは複数のソーシャルグラフを1つまたは複数のデータ・ストア164内に格納することができる。特定の実施形態においては、ソーシャルグラフは、複数のノード(複数のユーザ・ノード(それぞれが、特定のユーザに対応している)、または複数のコンセプト・ノード(それぞれが、特定のコンセプトに対応している)を含むことができる)と、ノード同士をつなげる複数のエッジとを含むことができる。ソーシャルネットワーキング・システム160は、オンライン・ソーシャル・ネットワークのユーザに、その他のユーザと通信および対話する能力を提供することができる。特定の実施形態においては、ユーザたちは、ソーシャルネットワーキング・システム160を介してオンライン・ソーシャル・ネットワークに参加し、次いで、自分たちがつながりたいと望むソーシャルネットワーキング・システム160のその他の複数のユーザにつながり(すなわち、関係)を付加することができる。本明細書においては、「友達」という用語は、ユーザがソーシャルネットワーキング・システム160を介して、つながり、関連付け、または関係を形成しているソーシャルネットワーキング・システム160のその他の任意のユーザを指すことができる。
特定の実施形態においては、ソーシャルネットワーキング・システム160は、ソーシャルネットワーキング・システム160によってサポートされるさまざまなタイプのアイテムまたはオブジェクトに関してアクションを取る能力をユーザに提供することができる。限定ではなく、例として、それらのアイテムおよびオブジェクトは、ソーシャルネットワーキング・システム160のユーザが属することが可能であるグループもしくはソーシャル・ネットワーク、ユーザが関心を抱く可能性があるイベントもしくはカレンダー・エントリー、ユーザが使用することができるコンピュータベースのアプリケーション、ユーザがサービスを介してアイテムを購入もしくは販売することを可能にするトランザクション、ユーザが実行することができる広告との対話、またはその他の適切なアイテムもしくはオブジェクトを含むことができる。ユーザは、ソーシャルネットワーキング・システム160において、またはサードパーティ・システム170の外部システム(ソーシャルネットワーキング・システム160とは別個のものであって、ネットワーク110を介してソーシャルネットワーキング・システム160に結合されている)によって表されることが可能である任意のものと対話することができる。
特定の実施形態においては、ソーシャルネットワーキング・システム160は、さまざまなエンティティ同士をリンクできることが可能である。限定ではなく、例として、ソーシャルネットワーキング・システム160は、ユーザたちが互いに対話すること、ならびにサードパーティ・システム170もしくはその他のエンティティからのコンテンツを受け取ることを可能にすることができ、またはユーザたちがアプリケーション・プログラミング・インタフェース(API)もしくはその他の通信チャネルを通じてこれらのエンティティと対話することを可能にすることができる。
特定の実施形態においては、サードパーティ・システム170は、1つもしくは複数のタイプのサーバ、1つもしくは複数のデータ・ストア、1つもしくは複数のインタフェース(APIを含むが、それには限定されない)、1つもしくは複数のウェブ・サービス、1つもしくは複数のコンテンツ・ソース、1つもしくは複数のネットワーク、または(たとえば、サーバが通信することができる)その他の任意の適切なコンポーネントを含むことができる。サードパーティ・システム170は、ソーシャルネットワーキング・システム160を運営しているエンティティとは異なるエンティティによって運営されることが可能である。しかしながら、特定の実施形態においては、ソーシャルネットワーキング・システム160およびサードパーティ・システム170は、ソーシャルネットワーキング・システム160またはサードパーティ・システム170のユーザにソーシャルネットワーキング・サービスを提供するために互いに連携して機能することができる。この意味において、ソーシャルネットワーキング・システム160は、サードパーティ・システム170などのその他のシステムがインターネットを介してソーシャルネットワーキング・サービスおよび機能をユーザに提供するために使用することができるプラットフォーム、またはバックボーンを提供することができる。
特定の実施形態においては、サードパーティ・システム170は、サードパーティ・コンテンツ・オブジェクト・プロバイダを含むことができる。サードパーティ・コンテンツ・オブジェクト・プロバイダは、コンテンツ・オブジェクトの1つまたは複数のソースを含むことができ、それらのソースは、クライアント・システム130に通信されることが可能である。限定ではなく、例として、コンテンツ・オブジェクトは、ユーザにとって関心がある物またはアクティビティーに関する情報、たとえば、映画の開始時刻、映画のレビュー、レストランのレビュー、レストランのメニュー、製品の情報およびレビュー、またはその他の適切な情報などを含むことができる。限定ではなく、別の例として、コンテンツ・オブジェクトは、インセンティブ・コンテンツ・オブジェクト、たとえば、クーポン、ディスカウント・チケット、ギフト券、またはその他の適切なインセンティブ・オブジェクトを含むことができる。
特定の実施形態においては、ソーシャルネットワーキング・システム160は、さまざまなサーバ、サブシステム、プログラム、モジュール、ログ、およびデータ・ストアを含むことができる。特定の実施形態においては、ソーシャルネットワーキング・システム160は、ウェブ・サーバ、アクション・ロガー、API要求サーバ、関連性およびランキング・エンジン、コンテンツ・オブジェクト分類子、通知コントローラ、アクション・ログ、サードパーティ・コンテンツ・オブジェクト露出ログ、推測モジュール、承認/プライバシー・サーバ、検索モジュール、広告ターゲティング・モジュール、ユーザインターフェース・モジュール、ユーザプロフィール・ストア、つながりストア、サードパーティ・コンテンツ・ストア、またはロケーション・ストアのうちの1つまたは複数を含むことができる。ソーシャルネットワーキング・システム160は、適切なコンポーネント、たとえば、ネットワーク・インターフェース、セキュリティー・メカニズム、ロード・バランサ、フェイルオーバ・サーバ、管理およびネットワークオペレーション・コンソール、その他の適切なコンポーネント、またはそれらの任意の適切な組合せを含むこともできる。特定の実施形態においては、ソーシャルネットワーキング・システム160は、ユーザ・プロフィールを格納するための1つまたは複数のユーザプロフィール・ストアを含むことができる。ユーザ・プロフィールは、たとえば、経歴情報、人口統計学的情報、挙動情報、ソーシャルな情報、またはその他のタイプの記述的情報、たとえば、職業経験、学歴、趣味もしくは好み、関心、親近感、またはロケーションを含むことができる。関心情報は、1つまたは複数のカテゴリーに関連した関心を含むことができる。カテゴリーは、一般的または具体的であることが可能である。限定ではなく、例として、ユーザが、あるブランドの靴に関する記事に対して「いいね!」を表明した場合には、カテゴリーは、そのブランド、または「靴」もしくは「衣類」という一般的なカテゴリーであることが可能である。ユーザに関するつながり情報を格納するために、つながりストアが使用されることが可能である。つながり情報は、類似のもしくは共通の職業経験、グループ・メンバーシップ、趣味、学歴を有しているか、または何らかの形で関連しているか、もしくは共通の属性を共有しているユーザどうしを示すことができる。つながり情報は、さまざまなユーザおよびコンテンツ(内部および外部の両方)の間におけるユーザ定義のつながりを含むこともできる。ネットワーク110を介してソーシャルネットワーキング・システム160を1つもしくは複数のクライアント・システム130または1つもしくは複数のサードパーティ・システム170にリンクさせるために、ウェブ・サーバが使用されることが可能である。ウェブ・サーバは、ソーシャルネットワーキング・システム160と、1つまたは複数のクライアント・システム130との間においてメッセージを受け取って回送するためにメール・サーバまたはその他のメッセージング機能を含むことができる。API要求サーバは、サードパーティ・システム170が、1つまたは複数のAPIを呼び出すことによってソーシャルネットワーキング・システム160からの情報にアクセスすることを可能にすることができる。ソーシャルネットワーキング・システム160内のユーザまたはソーシャルネットワーキング・システム160の外部のユーザのアクションに関してウェブ・サーバから通信を受け取るために、アクション・ロガーが使用されることが可能である。アクション・ログとともに、サードパーティコンテンツ・オブジェクトへのユーザの露出についてのサードパーティコンテンツオブジェクト・ログが保持されることが可能である。通知コントローラは、コンテンツ・オブジェクトに関する情報をクライアント・システム130に提供することができる。情報は、通知としてクライアント・システム130へ出力されることが可能であり、または情報は、クライアント・システム130から受け取られた要求に応答してクライアント・システム130から引き出されることが可能である。サードパーティ・システム170などのサードパーティから受け取られたコンテンツ・オブジェクトを格納するために、サードパーティコンテンツオブジェクト・ストアが使用されることが可能である。ユーザに関連付けられているクライアント・システム130から受け取られたロケーション情報を格納するために、ロケーション・ストアが使用されることが可能である。広告価格設定モジュールが、ソーシャルな情報、現在時刻、ロケーション情報、またはその他の適切な情報を組み合わせて、関連がある広告を、通知の形式でユーザに提供することができる。
ソーシャルネットワーキング・システム160は、たとえば、ユーザプロフィール・データ、コンセプトプロフィール・データ、ソーシャルグラフ情報、またはオンライン・ソーシャル・ネットワークに関連したその他の適切なデータなどのソーシャルネットワーキング・データを生成すること、格納すること、受け取ること、および送信することが可能である。特定の実施形態においては、ソーシャルネットワーキング・システム160はまた、ユーザによって生成されたコンテンツ・オブジェクトを含み、それらのコンテンツ・オブジェクトは、ソーシャルネットワーキング・システム160とのユーザの対話を向上させることができる。ユーザによって生成されたコンテンツは、ユーザがソーシャルネットワーキング・システム160に付加、アップロード、送信、または「ポスト(post)」することができる任意のものを含むことができる。限定ではなく、例として、ユーザは、クライアント・システム130からソーシャルネットワーキング・システム160へポスト(post)を通信する。ポストは、ステータス更新もしくはその他のテキスト・データ、ロケーション情報、写真、ビデオ、リンク、音楽、またはその他の類似したデータもしくはメディアなどのデータを含むことができる。コンテンツは、ニュースフィードまたはストリームなどの「通信チャネル」を通じてサードパーティによってソーシャルネットワーキング・システム160に付加されることも可能である。データ(たとえばコンテンツ・オブジェクト)の集合がデータベースとして格納されることが可能であり、そのデータベースは、複数のパーティションへと分割される。それぞれのパーティションは、別々のサーバ162上に、または別々の物理的なロケーションにおいて格納されることが可能である。パーティションどうしは、複数のサーバ162にわたって分散されることが可能であり(その一方で、それぞれのパーティションは、地理的に多様なロケーションにおいて複製されることが可能であり)、パーティション分割は、データベースにアクセスする際のパフォーマンスおよび信頼性を改善することもできる。データベースは、そのデータベースの行(または列)を別々に格納すること(すなわち「シャーディング(sharding)」)によってパーティション分割されることが可能である。データベースは、ハッシング・アルゴリズムを使用することによってパーティション分割されることも可能である。データベースは、そのデータベースによって保持されているデータの何らかの現実世界の(real-world)セグメント化(たとえば、米国のそれぞれのタイム・ゾーンにいるユーザどうし)によってパーティション分割されることも可能である。特定の実施形態においては、データまたはコンテンツ・オブジェクトは、複数のパーティション内に格納されることが可能であり、それぞれのパーティションは、単一のコンテンツ・オブジェクト・タイプのコンテンツ・オブジェクトを保持する。
特定の実施形態においては、ソーシャルネットワーキング・システム160にアップロードされたコンテンツ・オブジェクトは、データ・ストア164内に格納されることが可能である。アップロードされたまたは共有されたコンテンツ・オブジェクトに関連付けられているデータ・ストア情報(たとえば、受け取られたコンテンツ・オブジェクトに対してユーザが「いいね!」を表明していること)は、ソーシャルネットワーキング・システム160の検索インデックスによって格納されることが可能である。以降で記述されているように、ソーシャルネットワーキング・システム160のサーバプロセスは、ソーシャルネットワーキング・システム160上のアクティビティーに応答して1つまたは複数のデータ・ストア164の検索インデックスを更新することができる。特定の実施形態においては、ユーザによって生成されたコンテンツ・オブジェクト(たとえば、アップロードされたイメージ)は、ソーシャルネットワーキング・システム160の、以降で記述されているソーシャルグラフの特定のノードに対応することが可能である。その特定のノードと別のノードとをつなげるエッジは、受け取られたオブジェクトと、その他のノードに対応するユーザ(またはコンセプト)との間における関係を示すことができる。限定ではなく、例として、コンテンツ・オブジェクトに関連付けられている情報、またはソーシャルグラフにおけるコンテンツ・オブジェクトに対応するノードにつながっている1つまたは複数のエッジの情報は、1つまたは複数のデータ・ストア164内に格納されることが可能である。
特定の実施形態においては、ソーシャルネットワーキング・システム160は、承認サーバを含むことができ、承認サーバは、ユーザが、たとえば、適切なプライバシー設定を設定することなどによって、自分のアクションをソーシャルネットワーキング・システム160によって記録されること、またはその他のシステム(たとえば、サードパーティ・システム170)と共有されることのオプトインまたはオプトアウトを行うことを可能にする。ソーシャルネットワーキング・システム160のユーザの1つまたは複数のプライバシー設定を実施するために、ソーシャルネットワーキング・システム160の承認サーバが使用されることが可能である。ユーザのプライバシー設定は、ユーザに関連付けられている特定の情報またはコンテンツ・オブジェクトがどのように共有されることが可能であるかを判定する。特定の実施形態においては、以降で記述されている、ユーザによって生成または共有される、および検索結果としての提示のためにソーシャルネットワーキング・システム160によって提供されるコンテンツ・オブジェクトは、ソーシャルネットワーキング・システム160のユーザのプライバシー設定によって制限されることが可能である。
図2は、ソーシャルネットワーキング・システムの例示的な検索インデックスの例示的なパーティション分割を示している。本開示は、特定のタイプのコンピューティング・システム上に格納されている特定のタイプのコンテンツ・オブジェクトを伴って検索インデックス上で検索クエリーを実行することについて示し、記述しているが、本開示は、任意の適切なタイプのコンピューティング・システム上に格納されている任意の適切なタイプのコンテンツを伴って検索インデックスを検索することを想定している。特定の実施形態においては、ユーザは、ソーシャルネットワーキング・システムのユーザ・インターフェース(UI)のクエリー・フィールド内にテキストを入力することによって、クエリーをソーシャルネットワーク・システムに送信することができる。限定ではなく、例として、ユーザは、特定の主題(たとえば、ユーザ、コンセプト、外部コンテンツ、またはリソース)について記述するフレーズ(しばしば「検索クエリー」と呼ばれる)を提供することによって、その主題に関連している情報を検索することができる。次いでソーシャルネットワーキング・システムは、検索クエリーにマッチするコンテンツを識別するために、1つまたは複数のパーティション42を検索することができる。検索は、さまざまな検索アルゴリズムを使用してクエリー・フレーズに基づいて行われることが可能であり、検索クエリーに関連している可能性が最も高いリソースまたはコンテンツ(たとえば、ユーザプロフィール・ページ、コンテンツプロフィール・ページ、または外部リソース)を識別する検索結果を生成することができる。それに応答して、検索は、その検索クエリーに関連している可能性が高いコンテンツまたはコンテンツ・オブジェクトを識別することができ、それらのコンテンツまたはコンテンツ・オブジェクトのそれぞれは、個別に「検索結果」と呼ばれること、または総称して、その検索クエリーに対応する「検索結果」と呼ばれることが可能である。識別されたコンテンツまたはコンテンツ・オブジェクトは、たとえば、ソーシャルグラフ要素(すなわち、ユーザ・ノード、コンセプト・ノード、またはエッジ)、プロフィール・ページ、外部ウェブページ、またはそれらの任意の組合せを含む場合がある。本開示は、ソーシャルネットワーキング・システムに関する任意の適切なオブジェクト・タイプを想定している。
図2の例においては、パーティション42のうちの1つまたは複数は、ソーシャルネットワーキング・システムのコンテンツ・オブジェクトをインデックス付けする(index)ことができる。限定ではなく、例として、ソーシャルネットワーキング・システムのそれぞれのコンテンツ・オブジェクトまたはユーザは、識別子情報、たとえば一意の識別番号などに少なくとも部分的に基づいてインデックス付けされることが可能である。特定の実施形態においては、それぞれのパーティション42は、それぞれのデータ・ストレージ・デバイス内に格納されているコンテンツ・オブジェクトに関する識別子情報にアクセスするように構成されることが可能である。それぞれのパーティション42内に格納されているコンテンツ・オブジェクトは、ソーシャルネットワーキング・システムの検索インデックスによってインデックス付けされることが可能である。特定の実施形態においては、検索インデックスのうちで、それぞれのパーティション42に関連付けられている部分は、1つもしくは複数のインデックス・サーバ(index server)48または1つもしくは複数の用語サーバ(term server)46によってアクセスされることが可能である。本明細書において記述されている用語サーバ46は、適切な場合には、用語データベース・サーバを指し、インデックス・サーバ48は、インデックス・データベース・サーバを指す。データベース・サーバは、ソーシャルネットワーキング・システムにアクセスするクライアント・システムのためにデータベース・サービスを提供することができる。さらに、それぞれのインデックス・サーバ48または用語サーバ46は、1つまたは複数のコンピューティング・デバイス(たとえば、上述のサーバ・デバイス162)上で実行される工程を含むことができ、同じコンピューティング・デバイス上で実行されることが可能である。
特定の実施形態においては、用語サーバ46およびインデックス・サーバ48は、上述の1つまたは複数のコンテンツ・オブジェクト・タイプに関連付けられている識別子情報を含むことができる。特定の実施形態においては、用語サーバ46は、検索インデックスのそれぞれの部分を、特定の検索語または「用語シャーディング(term sharding)」に関連付けられているソーシャルネットワーキング・システム上に「ポストされた」実質的にすべてのコンテンツ・オブジェクト・タイプ(たとえば、イメージ、ビデオ、ステータス更新、または「いいね!」)を包含するコンテンツ・オブジェクトに関する識別子情報に関連付けられているポスティング・リスト(posting list)へと編成することができる。さらに、用語サーバ46のポスティング・リストによって包含される検索語は、所定のヒットしきい値数を下回るそれぞれの検索語または「ヒット(hit)」に関連付けられている複数のコンテンツ・オブジェクトを伴うものに限定されることが可能である。特定の実施形態においては、インデックス・サーバ48は、検索インデックスのそれぞれの部分を、特定の検索語または「ドキュメント・シャーディング(doc sharding)」に関連付けられているソーシャルネットワーキング・システム上に「ポストされた」特定のコンテンツ・オブジェクト・タイプ(たとえばイメージ)のコンテンツ・オブジェクトに対応する識別子情報を伴うポスティング・リストへと編成することができる。さらに、それぞれのインデックス・サーバ48のポスティング・リストは、所定のヒットしきい値数を上回る特定の検索語に関連付けられている複数のコンテンツ・オブジェクトに対応する識別子情報を含むことができる。
特定の実施形態においては、所定のヒットしきい値数は、コンテンツ・オブジェクト・タイプ、たとえば人々、写真、もしくはイベントなど、または特定の検索語に少なくとも部分的に基づいて変わることが可能である。限定ではなく、例として、所定のヒットしきい値数は、それぞれの検索語の所定のパーセンテージ(たとえば99%)内に含まれている「ヒット」の数によって特定されることが可能である。特定の実施形態においては、所定のヒットしきい値数は、コンピューティング・デバイス(たとえばサーバ)のインデックスから用語へのサーバ割り当て率、所定のヒットしきい値数を変えることの待ち時間もしくはスループット分析、パーティション・アグリゲータ(partition aggregator)44へ、もしくはパーティション・アグリゲータ44から用語サーバ46のポスティング・リストを送信するための総ネットワーク利用度、特定の検索語を含む検索クエリーの頻度、特定の検索語に関するライブ・アップデートの頻度、検索語の特定の群に固有の制約、またはそれらの任意の組合せに少なくとも部分的に基づいて特定されることが可能である。限定ではなく、例として、検索語の特定の群に固有の制約としてありうるのは、ユーザが、5000人までの友達を有することを許可されているならば、すべての「友達」ポスティング・リストが用語サーバ46内に含まれるように、「友達」という検索語に関する所定のヒットしきい値数が5000に設定されることが可能であるということである。
特定の実施形態においては、トップ・アグリゲータ(top aggregator)40が、それぞれのパーティション42のパーティション・アグリゲータ44に配信されている検索クエリーを受け取るように構成されることが可能である。限定ではなく、例として、検索クエリーは、ソーシャルネットワーキング・システムの1つまたは複数のコンピューティング・デバイス(たとえば、上述のサーバ162)によってホストされているサーバプロセスとして実施されることが可能である。限定ではなく、例として、トップ・アグリゲータ40は、「カンナム・スタイル」という検索クエリーを、たとえば(<カンナム><スタイル>)などの検索語へと解析することができ、その検索クエリーにマッチすることができるあらゆるコンテンツ・オブジェクト・タイプの検索結果を生成することができる。
特定の実施形態においては、トップ・アグリゲータ40は、所定のヒットしきい値数を上回る複数のコンテンツ・オブジェクトを伴う検索語のリスト(たとえば、ハッシュ・セット)に基づいてそれぞれの検索語を分類することができる。本明細書において記述されている「短い」検索語とは、適切な場合には、ハッシュ・セット内に含まれていない検索語を指すことが可能であり、「長い」検索語とは、ハッシュ・セット内に含まれている検索語を指すことが可能である。特定の実施形態においては、それぞれのパーティション42のパーティション・アグリゲータ44は、トップ・アグリゲータ40からの検索クエリーを解析して、その検索クエリーから、パーティション42に関連している特定の「短い」検索語を抽出することができる。特定の実施形態においては、パーティション42に関連している検索語に対応するハッシュ・セット内に含まれている1つまたは複数の「長い」検索語の抽出は、それぞれのパーティション42のパーティション・アグリゲータ44によって実行されることが可能である。限定ではなく、例として、「カンナム・スタイル」という検索クエリーは、トップ・アグリゲータ40によって、<カンナム>および<スタイル>という検索語へと解析されることが可能である。さらに、<カンナム>という検索語は、ハッシュ・セット内に含まれていない場合があり、「短い」検索語とみなされる場合があり、その一方で<スタイル>は、ハッシュ・セット内に含まれている場合があり、「長い」検索語とみなされる場合がある。特定の実施形態においては、トップ・アグリゲータ40から検索語を受け取るパーティション・アグリゲータ44が、特定の「短い」検索語(たとえば<カンナム>)を、用語サーバ46のうちの1つまたは複数へのクエリーにマップさせるための特定の機能を実行することができる。特定の実施形態においては、パーティション・アグリゲータ44は、特定の「短い」検索語に対応するソーシャルネットワーキング・システム上に「ポストされた」特定のコンテンツ・オブジェクトを識別する情報を含む1つまたは複数のポスティング・リストを1つまたは複数の用語サーバ46から取り出すことができる。
特定の実施形態においては、パーティション42に関連している検索語に対応するハッシュ・セット内に含まれている1つまたは複数の「長い」検索語の抽出は、それぞれのパーティション42のパーティション・アグリゲータ44によって実行されることが可能である。限定ではなく、例として、「カンナム・スタイル」という検索クエリーは、トップ・アグリゲータ40によって、<カンナム>および<スタイル>という検索語へと解析されることが可能である。特定の実施形態においては、トップ・アグリゲータ40から検索語を受け取るパーティション・アグリゲータ44が、送信される特定の「短い」検索語を、用語サーバ46のうちの1つまたは複数へのクエリーにマップさせる(map)ための特定の機能を実行することができる。特定の実施形態においては、パーティション・アグリゲータ44は、特定の「短い」検索語に対応するソーシャルネットワーキング・システム上に「ポストされた」特定のコンテンツ・オブジェクトを識別する情報を含む1つまたは複数のポスティング・リストを1つまたは複数の用語サーバ46から取り出すことができる。用語サーバ46は、特定の「短い」検索語に対応する取り出されたポスティング・リストをパーティション・アグリゲータ44へ送信することができる。
特定の実施形態においては、トップ・アグリゲータ40からの検索クエリーは、それぞれのパーティション・アグリゲータ44によって、1つまたは複数の「短い」検索語を、それらの「短い」検索語に対応する用語サーバ46からのポスティング・リストのうちの1つまたは複数と置き換えるように修正されることが可能である。限定ではなく、例として、修正された検索クエリーは、たとえば<スタイル>:<5,7,10>など、用語サーバ46からのポスティング・リストに基づいて生成されることが可能である。特定の実施形態においては、パーティション・アグリゲータ44は、修正された検索クエリーを、対応するインデックス・サーバ48へ送信することができる。パーティション・アグリゲータ44は、特定の「長い」検索語および用語サーバ46からの検索結果に対応するソーシャルネットワーキング・システム上に「ポストされた」特定のコンテンツ・オブジェクトを識別する情報を含む1つまたは複数のポスティング・リストを1つまたは複数のインデックス・サーバ48から受け取ることができる。限定ではなく、例として、<スタイル>という検索語に対応するインデックス・サーバ48上のポスティング・リストは、コンテンツ・アイテムに対応する識別子情報<3,4,7,10>を含むことができ、修正された検索クエリーの結果は、<7,10>であることが可能である。
別の実施形態においては、それぞれのパーティション42のパーティション・アグリゲータ44は、「長い」検索語または「短い」検索語に関連付けられている情報を格納することができない。その代わりに、パーティション・アグリゲータ44は、解析された検索語のうちのすべてを、関連付けられている用語サーバ46へ送信することができる。特定の実施形態においては、用語サーバ46は、「短い」検索語および「長い」検索語のリストを含むことができる。限定ではなく、例として、用語サーバ46へ送信されたそれぞれの検索語によって、特定の「短い」検索語に対応するソーシャルネットワーキング・システム上に「ポストされた」特定のコンテンツ・オブジェクトを識別する情報を含む1つまたは複数のポスティング・リストが選出される(return)ことができる。さらに、用語サーバ46は、解析された検索語のうちの1つまたは複数が「長い」検索語であるということ、および「長い」検索語に関するクエリーはインデックス・サーバ48へ回送されるべきであるということを示すフラグを生成することができる。特定の実施形態においては、「長い」検索語に関するクエリーは、パーティション・アグリゲータ44を通じてインデックス・サーバ48へ回送されることが可能である。特定の実施形態においては、「長い」検索語に関するクエリーは、用語サーバ46によってインデックス・サーバ48へ直接回送されることが可能である。上述されているように、インデックス・サーバ48は、特定の「長い」検索語に対応するソーシャルネットワーキング・システム上に「ポストされた」特定のコンテンツ・オブジェクトを識別する情報を含む1つまたは複数のポスティング・リストを1つまたは複数のインデックス・サーバ48から取り出すことができる。
特定の実施形態においては、トップ・アグリゲータ40は、パーティション・アグリゲータ40から受け取られた検索結果上で1つまたは複数のオペレーションを実行することができる。限定ではなく、例として、トップ・アグリゲータ40は、用語46サーバおよびインデックス48サーバからのすべての検索語の検索結果どうしの重なる部分(intersection)である検索結果をユーザに返すことができる。たとえば、<カンナム>という検索語に対応する検索結果に関する用語サーバ46のクエリーは、ソーシャルネットワーキング・システム上にポストされた特定のコンテンツ・オブジェクトに対応する識別子情報<5,7,10>を生成することができる。別の例として、インデックス・サーバ48は、<スタイル>という検索語に関するコンテンツ・アイテム<3,4,7,10>に対応する識別子情報を生成することができる。パーティション42の用語サーバ46およびインデックス・サーバ48からパーティション・アグリゲータ44へ送信された検索結果どうしの重なる部分に基づいて、ユーザに返される検索結果は、<7,10>であることが可能である。
特定の実施形態においては、ソーシャルネットワーキング・システムは、ソーシャルネットワーキング・システム上でのユーザによるアクティビティー、たとえば、コンテンツ・オブジェクト(たとえばイメージ)がアップロードもしくは生成されること、またはコンテンツ・オブジェクトに関連付けられているアクティビティー(たとえば、「いいね!」を表明すること、もしくはコメントすること)などに少なくとも部分的に基づいて検索インデックスの1つまたは複数のパーティション42を更新することができる。さらに、検索インデックスの1つまたは複数のパーティション42は、たとえば1週間に1回など、所定のインターバルで更新されることが可能である。特定の実施形態においては、それぞれのインデックス・サーバ48のポスティング・リストは、所定のインターバルで更新されることが可能である識別子情報を伴う基本レイヤと、新たなコンテンツ・オブジェクトがソーシャルネットワーキング・システムにアップロードされることなど、ソーシャルネットワーキング・システム上でのアクティビティーに応答して更新されることが可能である識別子情報を伴う更新レイヤとを含むことができる。限定ではなく、例として、インデックス・サーバ48へ送信される「長い」検索語を伴うクエリーは、基本レイヤの識別子情報、ならびに上述のソーシャルネットワーキング・システム上での最近のアクティビティーに対応する更新レイヤの識別子情報を含むポスティング・リストにアクセスすることができる。特定の実施形態においては、基本レイヤの識別子情報は、所定のインターバル中の更新レイヤの識別子情報を含むように更新されることが可能である。さらに、更新レイヤは、その更新レイヤの識別子情報で基本レイヤの識別子情報を更新した後に、初期状態に戻されることが可能である。特定の実施形態においては、用語サーバ44のポスティング・リストの識別子情報は、所定のインターバル中に発生した最近のアクティビティーを含むように定期的に更新されることが可能である。
特定の実施形態においては、更新レイヤの識別子情報は、対応するコンテンツ・オブジェクトの状態の変化、たとえば、そのコンテンツ・オブジェクトの削除または「いいね!」を取り消すことなどに応答して、特定の検索語に関連付けられている検索結果としてコンテンツ・オブジェクトの削除を示すことができる。特定の実施形態においては、インデックス・サーバ48は、基本レイヤから提供される識別子情報と、更新レイヤによって提供される識別子情報とを区別する情報を提供することができる。特定の実施形態においては、パーティション・アグリゲータ42は、「短い」用語クエリーに関して用語サーバ46によって提供された識別子情報と、「長い」検索語クエリーに関してインデックス・サーバ48によって提供された識別子情報との重なる部分を特定することができる。さらに、パーティション・アグリゲータ42は、用語サーバ46の更新レイヤからの識別子情報を、用語サーバ46によって提供された識別子情報とインデックス・サーバ48によって提供された識別子情報との重なる部分と統合することができる。限定ではなく、例として、それぞれの用語サーバ46に対する<カンナム>という検索語のクエリーは、識別子情報<5,7,10>を生成することができ、それぞれのインデックス・サーバ48の基本レイヤに対する<スタイル>という検索語のクエリーは、識別子情報<3,4,7,10>を生成することができ、それらのクエリーどうしの重なる部分は、<7,10>ということになる。さらに、識別子情報<20>に関連付けられているコンテンツ・オブジェクトが、<スタイル>という検索語に関連付けられているインデックス・サーバ48の更新レイヤに付加される場合には、<スタイル>という検索語のクエリーも、検索結果として<20>を生成することができる。別の例として、インデックス・サーバ48の基本レイヤの更新後のソーシャルネットワーキング・システム上でのアクティビティー(たとえば、コンテンツ・オブジェクトを削除すること)は、識別子情報<10>に関連付けられているコンテンツ・オブジェクトを除去することができ、識別子情報<10>が除去されているということを更新レイヤ上で示すことができる。<カンナム><スタイル>という検索語のクエリーからの検索結果は、削除されたコンテンツ・オブジェクト<10>がそれらの検索結果から除去された後に、<7>を生成することができる。
特定の実施形態においては、それぞれの用語サーバ46およびインデックス・サーバ48のポスティング・リストは、所定のインターバルで更新されることが可能である識別子情報を伴う基本レイヤと、新たなコンテンツ・オブジェクトがソーシャルネットワーキング・システムにアップロードされることなど、ソーシャルネットワーキング・システム上でのアクティビティーに応答して更新されることが可能である識別子情報を伴う更新レイヤとを含むことができる。特定の実施形態においては、最近アップロードされたコンテンツ・オブジェクトに関連付けられている1つまたは複数の検索語が、上述のハッシュ・リストと比較されて、その識別子情報が用語サーバ46、インデックス・サーバ48、またはその両方のポスティング・リストに関連しているかどうかを判定することが可能である。限定ではなく、例として、最近のアクティビティーが「短い」検索語に関連しているという判定に基づいて、それぞれの用語サーバ46の更新レイヤは、最近アップロードされたコンテンツ・オブジェクトに対応する識別子情報で更新されることが可能である。別の例として、最近のアクティビティーが「長い」検索語に関連しているという判定に基づいて、それぞれのインデックス・サーバ48の更新レイヤは、最近アップロードされたコンテンツ・オブジェクトに対応する識別子情報で更新されることが可能である。特定の実施形態においては、削除されたコンテンツ・オブジェクトに対応する識別子情報は、すべてのパーティション42へブロードキャストされることが可能であり、その対応する識別子情報は、その特定の識別子情報を含む用語サーバ46およびインデックス・サーバ48の両方のすべてのポスティング・リストから除去されることが可能である。
特定の実施形態においては、特定の検索語に関連付けられている特定の用語サーバ46の識別子情報は、1つまたは複数のインデックス・サーバ48のポスティング・リストへ「プロモートされる(promoted)」ことが可能であり、その識別子情報は、特定の検索語に関するヒットの数が所定のヒットしきい値数を超えていることに応答して、その特定の用語サーバ46のポスティング・リストから除去されることが可能である。限定ではなく、例として、1つまたは複数の用語サーバ46における1つまたは複数のポスティング・リストの生成は、ソーシャルネットワーキング・システムへの1つまたは複数の検索語の最初の付加に対応するように実行されることが可能である。検索語は、所定のヒットしきい値数に少なくとも部分的に基づいて用語サーバ46からインデックス・サーバ48へ「プロモートされる」ことが可能である。限定ではなく、例として、ポスティング・リストのコンテンツ・オブジェクトの数が所定のヒットしきい値数よりも少ない限り、用語サーバ46のポスティング・リスト内の新たな用語に関してポスティング・リストが生成されることが可能である。新たに付加された検索語に関連付けられているポスティング・リストのコンテンツ・オブジェクトに対応する識別子情報は、上述のコンテンツ・オブジェクト・タイプ(たとえば、イメージまたはステータス更新)でマークされることが可能である。ポスティング・リストのコンテンツ・オブジェクトの数が所定のヒットしきい値数を超えているという判定に基づいて、ポスティング・リストのうちで、その検索語に関連付けられている部分は、その検索語に関連付けられている用語サーバ46のポスティング・リスト内のコンテンツ・オブジェクトのコンテンツ・オブジェクト・タイプに従って、その検索語に関連付けられている1つまたは複数のインデックス・サーバ48のポスティング・リストに分散される。
検索語の「プロモート(promotion)」中に失敗が発生した場合には、新たにアクティブになったサーバが、「プロモートされている」検索語に関して1つまたは複数の用語サーバ46にクエリーを行うことができる。「プロモートされている」検索語に関連付けられているすべての識別子情報が、インデックス・サーバ48の関連のあるポスティング・リストにおいて成功裏に作成されたとして確認されると、その検索語およびその関連付けられているポスティング・リストは、それぞれの用語サーバ46から削除されることが可能である。限定ではなく、例として、識別子情報は、検索語に関連付けられているインデックス・サーバ48のポスティング・リストに挿入するために用語サーバ46からインデックス・サーバ48へ出力されることが可能である。
特定の実施形態においては、用語サーバ46およびインデックス・サーバ48の新たな基本レイヤは、アイドルのコンピューティング・デバイス(たとえばサーバ)のローテーションを通じて実行されることが可能である。プライマリー・アーキテクチャ(primary architecture)のコンピューティング・デバイスがダウンした場合には、その特定のコンピューティング・デバイスへ送信されたあらゆる要求が、バックアップ・アーキテクチャ内の対応するコンピューティング・デバイスへリダイレクトされる(re-directed)ことが可能である。あるいは、あらゆる要求が、バックアップ・アーキテクチャ内のトップ・アグリゲータ40へリダイレクトされることが可能であり、トップ・アグリゲータ40は、それらの要求を適切なコンピューティング・デバイスへ導くことができる。特定の実施形態は、複数の用語サーバ46、複数のインデックス・サーバ48、またはそれらの任意の組合せを単一のコンピューティング・デバイス上でホストすることを容易にすることができる。コンピューティング・デバイスは、バックアップ・アーキテクチャ上で再び分散されることが可能であり、それによって、プライマリー・アーキテクチャ内の単一のコンピューティング・デバイスが失敗した場合に、その特定のコンピューティング・デバイスへの要求は、バックアップ・アーキテクチャ内の複数のコンピューティング・デバイスの間で分散される。コンピューティング・デバイスどうしは、複製のためにコンピューティング・デバイスの予備の論理的なグループを1つ含む、コンピューティング・デバイスの論理的なグルーピング(たとえば、フル・ラック、ハーフラック、クォーターラック)へと編成されることが可能である。複製または更新中に、論理的なグルーピングは、ラウンドロビン様式(round-robin fashion)で更新されることが可能であり、その場合、動作中の論理的なグルーピングに関する新しいデータが、予備の論理的なグルーピングにコピーされることが可能である。動作中の論理的なグルーピングへの要求は、予備の論理的なグルーピングへリダイレクトされることが可能であり、次いで、動作中の論理的なグルーピングは、予備の論理的なグルーピングになる。
特定の実施形態においては、トップ・アグリゲータ40は、特定のコンテンツ・オブジェクトに対応する識別子情報を、ユーザへの提示のためにそれぞれのパーティション・アグリゲータ44によって提供される1つまたは複数の検索結果へとアグリゲートすることができる。特定の実施形態においては、トップ・アグリゲータ40は、それぞれのパーティション42へ送信されたそれぞれの検索クエリーの検索結果をアグリゲートすることができる。限定ではなく、例として、トップ・アグリゲータ40は、それらの検索クエリー結果上でOR演算を実行して、最終的な検索結果のセットを生み出すことができる。ソーシャルネットワーキング・システムは、それらの検索結果を形成するコンテンツ・オブジェクトを、たとえば、ソーシャルグラフ内の特定のオブジェクトに対応するノードにつなげるエッジの数(すなわち、知られている関係の数)などによってランク付けすることができる。限定ではなく、例として、ソーシャルネットワーキング・システムは、イメージを、そのイメージに関連付けられている「いいね!」の数によってランク付けすることができる。別の例として、ソーシャルネットワーキング・システムは、イメージを、そのイメージ上でタグ付けされているユーザの数によってランク付けすることもできる。
図3は、更新レイヤを伴う例示的な検索のための例示的な方法を示している。この方法は、工程300において開始することができ、工程300では、1つまたは複数のコンピューティング・デバイスが、ある検索語に関連付けられている1つまたは複数のコンテンツ・オブジェクトに関連付けられているアクティビティーの更新を受け取る。特定の実施形態においては、その検索語は、所定のしきい値数を超える複数のコンテンツ・オブジェクトに関連付けられている。特定の実施形態においては、その検索語に関連付けられているコンテンツ・オブジェクトは、1つまたは複数のインデックス・サーバのリスト上でインデックス付けされている。そのリストは、それらのコンテンツ・オブジェクトに対応する識別子情報を含む。工程302において、1つまたは複数のコンピューティング・デバイスが、更新に応答してインデックス・サーバのうちの1つまたは複数のリストを修正し、その時点で、この方法は終了することができる。本開示は、図3の方法の特定の工程どうしを、特定の順序で生じるものとして記述し、示しているが、本開示は、任意の適切な順序で生じる図3の方法の任意の適切な工程どうしを想定している。その上、本開示は、図3の方法の特定の工程を実行する特定のコンポーネントについて記述し、示しているが、本開示は、図3の方法の任意の適切な工程を実行する任意の適切なコンポーネントの任意の適切な組合せを想定している。
図4は、組み込まれた更新を伴う例示的な検索のための例示的な方法を示している。この方法は、工程350において開始することができ、工程350では、1つまたは複数のコンピューティング・デバイスが、ある検索語に関連付けられている1つまたは複数のコンテンツ・オブジェクトに関連付けられているアクティビティーの更新を受け取る。特定の実施形態においては、それらのコンテンツ・オブジェクトは、1つもしくは複数のインデックス・サーバまたは用語サーバのリスト上でインデックス付けされている検索語に関連付けられている。特定の実施形態においては、用語サーバのリストは、1つまたは複数のコンテンツ・オブジェクト・タイプの識別子情報を含むことができる。インデックス・サーバのリストは、単一のコンテンツ・オブジェクト・タイプの識別子情報を含むことができる。工程352は、1つまたは複数のコンピューティング・デバイスによって、検索語が、所定のしきい値数を超える複数の関連付けられているコンテンツ・オブジェクトを有するかどうかを判定する。工程354において、1つまたは複数のコンピューティング・デバイスは、その判定に少なくとも部分的に基づいて、および更新に応答して、用語サーバまたはインデックス・サーバのうちの1つもしくは複数の検索語に関連付けられているリストを修正し、その時点で、この方法は終了することができる。本開示は、図4の方法の特定の工程どうしを、特定の順序で生じるものとして記述し、示しているが、本開示は、任意の適切な順序で生じる図4の方法の任意の適切な工程どうしを想定している。その上、本開示は、図4の方法の特定の工程を実行する特定のコンポーネントについて記述し、示しているが、本開示は、図4の方法の任意の適切な工程を実行する任意の適切なコンポーネントの任意の適切な組合せを想定している。
図5は、例示的なソーシャルグラフを示している。特定の実施形態においては、ソーシャルネットワーキング・システム160は、1つまたは複数のソーシャルグラフ200を1つまたは複数のデータ・ストア内に格納することができる。特定の実施形態においては、ソーシャルグラフ200は、複数のノード(複数のユーザ・ノード202、または複数のコンセプト・ノード204を含むことができる)と、ノード同士をつなげる複数のエッジ206とを含むことができる。図5において示されている例示的なソーシャルグラフ200は、教示上の目的から、2次元のビジュアル・マップ表示で示されている。特定の実施形態においては、ソーシャルネットワーキング・システム160、クライアント・システム130、またはサードパーティ・システム170は、適切なアプリケーションに関してソーシャルグラフ200および関連したソーシャルグラフ情報にアクセスすることができる。ソーシャルグラフ200のノードおよびエッジは、データ・オブジェクトとして、たとえば(ソーシャルグラフ・データベースなどの)データ・ストア内に格納されることが可能である。そのようなデータ・ストアは、ソーシャルグラフ200のノードまたはエッジの1つまたは複数の検索可能なまたはクエリー可能なインデックスを含むことができる。
特定の実施形態においては、ユーザ・ノード202は、ソーシャルネットワーキング・システム160のユーザに対応することができる。限定ではなく、例として、ユーザは、ソーシャルネットワーキング・システム160と、またはソーシャルネットワーキング・システム160を介して対話または通信する個人(人間のユーザ)、エンティティ(たとえば、企業、ビジネス、もしくはサードパーティ・アプリケーション)、または(たとえば、個人もしくはエンティティの)グループであることが可能である。特定の実施形態においては、あるユーザがソーシャルネットワーキング・システム160とのアカウントに登録した場合には、ソーシャルネットワーキング・システム160は、そのユーザに対応するユーザ・ノード202を作成し、そのユーザ・ノード202を1つまたは複数のデータ・ストア内に格納することができる。本明細書において記述されているユーザおよびユーザ・ノード202は、適切な場合には、登録されているユーザ、および登録されているユーザに関連付けられているユーザ・ノード202を指すことができる。追加として、または代替として、本明細書において記述されているユーザおよびユーザ・ノード202は、適切な場合には、ソーシャルネットワーキング・システム160に登録されていないユーザを指すことができる。特定の実施形態においては、ユーザ・ノード202は、ユーザによって提供された情報、またはソーシャルネットワーキング・システム160を含むさまざまなシステムによって収集された情報に関連付けられることが可能である。限定ではなく、例として、ユーザは、自分の名前、プロフィール画像、連絡先情報、生年月日、性別、婚姻状況、家族状況、勤務先、学歴、好み、関心、またはその他の人口統計学的情報を提供することができる。特定の実施形態においては、ユーザ・ノード202は、ユーザに関連付けられている情報に対応する1つまたは複数のデータ・オブジェクトに関連付けられることが可能である。特定の実施形態においては、ユーザ・ノード202は、1つまたは複数のウェブページに対応することができる。
特定の実施形態においては、コンセプト・ノード204は、コンセプトに対応することができる。限定ではなく、例として、コンセプトは、場所(たとえば、映画館、レストラン、ランドマーク、もしくは都市など)、ウェブサイト(たとえば、ソーシャルネットワーク・システム160に関連付けられているウェブサイト、もしくはウェブアプリケーション・サーバに関連付けられているサードパーティ・ウェブサイトなど)、エンティティ(たとえば、人、企業、グループ、スポーツ・チーム、もしくは有名人など)、ソーシャルネットワーキング・システム160内に、もしくはウェブアプリケーション・サーバなどの外部サーバ上に配置されることが可能であるリソース(たとえば、オーディオ・ファイル、ビデオ・ファイル、デジタル写真、テキスト・ファイル、構造化されたドキュメント、もしくはアプリケーションなど)、物的もしくは知的財産(たとえば、彫塑、絵画、映画、ゲーム、曲、アイディア、写真、もしくは執筆作品など)、ゲーム、アクティビティー、アイディアもしくは理論、別の適切なコンセプト、または複数のそのようなコンセプトに対応することができる。コンセプト・ノード204は、ユーザによって提供されたコンセプトの情報、またはソーシャルネットワーキング・システム160を含むさまざまなシステムによって収集された情報に関連付けられることが可能である。限定ではなく、例として、コンセプトの情報は、名前もしくはタイトル、1つもしくは複数のイメージ(たとえば、本の表紙のイメージ)、ロケーション(たとえば、住所もしくは地理的ロケーション)、(URLに関連付けられることが可能である)ウェブサイト、連絡先情報(たとえば、電話番号もしくはEメール・アドレス)、その他の適切なコンセプト情報、またはそのような情報の任意の適切な組合せを含むことができる。特定の実施形態においては、コンセプト・ノード204は、コンセプト・ノード204に関連付けられている情報に対応する1つまたは複数のデータ・オブジェクトに関連付けられることが可能である。特定の実施形態においては、コンセプト・ノード204は、1つまたは複数のウェブページに対応することができる。
特定の実施形態においては、ソーシャルグラフ200内のノードは、ウェブページ(「プロフィール・ページ」と呼ばれる場合もある)を表すこと、またはウェブページによって表されることが可能である。プロフィール・ページは、ソーシャルネットワーキング・システム160によってホストされること、またはソーシャルネットワーキング・システム160にとってアクセス可能であることが可能である。プロフィール・ページは、サードパーティ・サーバ170に関連付けられているサードパーティ・ウェブサイト上にホストされることも可能である。限定ではなく、例として、特定の外部ウェブページに対応するプロフィール・ページは、その特定の外部ウェブページであることが可能であり、そのプロフィール・ページは、特定のコンセプト・ノード204に対応することができる。プロフィール・ページは、その他のユーザのうちのすべてまたは選択されたサブセットによって閲覧できることが可能である。限定ではなく、例として、ユーザ・ノード202は、対応するユーザプロフィール・ページを有することができ、そのユーザプロフィール・ページにおいては、対応するユーザが、コンテンツを付加すること、言明を行うこと、またはその他の形で自分自身を表現することが可能である。限定ではなく、別の例として、コンセプト・ノード204は、対応するコンセプトプロフィール・ページを有することができ、そのコンセプトプロフィール・ページにおいては、1人または複数のユーザが、特にコンセプト・ノード204に対応するコンセプトに関連して、コンテンツを付加すること、言明を行うこと、または自分自身を表現することが可能である。
特定の実施形態においては、コンセプト・ノード204は、サードパーティ・システム170によってホストされているサードパーティ・ウェブページまたはリソースを表すことができる。サードパーティ・ウェブページまたはリソースは、数ある要素の中でも、コンテンツ、選択可能なもしくはその他のアイコン、または、アクションもしくはアクティビティーを表す(たとえば、JAVASCRIPT(登録商標)、AJAX、もしくはPHPコードで実装されることが可能である)その他の対話可能なオブジェクトを含むことができる。限定ではなく、例として、サードパーティ・ウェブページは、「いいね!」、「チェックイン」、「食べる」、「推奨する」、または別の適切なアクションもしくはアクティビティーなどの選択可能なアイコンを含むことができる。サードパーティ・ウェブページを閲覧しているユーザは、それらのアイコンのうちの1つ(たとえば、「食べる」)を選択することによってアクションを実行して、クライアント・システム130に、そのユーザのアクションを示すメッセージをソーシャルネットワーキング・システム160へ送信させることができる。そのメッセージに応答して、ソーシャルネットワーキング・システム160は、ユーザに対応するユーザ・ノード202と、サードパーティ・ウェブページまたはリソースに対応するコンセプト・ノード204との間においてエッジ(たとえば、「食べる」エッジ)を作成して、エッジ206を1つまたは複数のデータ・ストア内に格納することができる。
特定の実施形態においては、ソーシャルグラフ200内の1対のノードが、1つまたは複数のエッジ206によって互いにつながることが可能である。1対のノードをつなげるエッジ206は、それらの1対のノードの間における関係を表すことができる。特定の実施形態においては、エッジ206は、1対のノードの間における関係に対応する1つまたは複数のデータ・オブジェクトまたは属性を含むことまたは表すことが可能である。限定ではなく、例として、第1のユーザは、第2のユーザが第1のユーザの「友達」であるということを示すことができる。この表示に応答して、ソーシャルネットワーキング・システム160は、「友達要求」を第2のユーザに送信することができる。第2のユーザがその「友達要求」を承認した場合には、ソーシャルネットワーキング・システム160は、ソーシャルグラフ200内で第1のユーザのユーザ・ノード202を第2のユーザのユーザ・ノード202につなげるエッジ206を作成して、エッジ206をソーシャルグラフ情報としてデータ・ストア24のうちの1つまたは複数の中に格納することができる。図2の例においては、ソーシャルグラフ200は、ユーザ「A」のユーザ・ノード202と、ユーザ「B」のユーザ・ノード202との間における友達関係を示すエッジ206と、ユーザ「C」のユーザ・ノード202と、ユーザ「B」のユーザ・ノード202との間における友達関係を示すエッジとを含む。本開示は、特定のユーザ・ノード202同士をつなげる特定の属性を伴う特定のエッジ206を記述している、または示しているが、本開示は、ユーザ・ノード202同士をつなげる任意の適切な属性を伴う任意の適切なエッジ206を想定している。限定ではなく、例として、エッジ206は、友達関係、家族関係、ビジネスもしくは雇用関係、ファン関係、フォロワー関係、ビジター関係、サブスクライバ関係、上下関係、互恵的関係、非互恵的関係、別の適切なタイプの関係、または複数のそのような関係を表すことができる。その上、本開示は一般に、ノード同士をつながっているものとして記述しているが、本開示はまた、ユーザ同士またはコンセプト同士をつながっているものとして記述している。本明細書においては、つながっているユーザ同士またはコンセプト同士への言及は、適切な場合には、1つまたは複数のエッジ206によってソーシャルグラフ200内でつながっているそれらのユーザ同士またはコンセプト同士に対応するノード同士を指すことができる。
特定の実施形態においては、ユーザ・ノード202とコンセプト・ノード204との間におけるエッジ206は、ユーザ・ノード202に関連付けられているユーザによって、コンセプト・ノード204に関連付けられているコンセプトに対して実行された特定のアクションまたはアクティビティーを表すことができる。限定ではなく、例として、図5において示されているように、ユーザは、コンセプトに対して「いいね!を表明すること」、「通うこと」、「プレイすること」、「聴くこと」、「料理すること」、「勤務すること」、または「観ること」を行った可能性があり、それらのそれぞれは、エッジタイプまたはサブタイプに対応することができる。コンセプト・ノード204に対応するコンセプトプロフィール・ページは、たとえば、選択可能な「チェックイン」アイコン(たとえば、クリック可能な「チェックイン」アイコンなど)、または選択可能な「いいね」アイコンを含むことができる。限定ではなく、別の例として、クライアント・システムのソーシャライズド・ダッシュ(socialized dash)は、選択可能な「チェックイン」アイコン(たとえば、クリック可能な「チェックイン」アイコンなど)、または選択可能な「いいね」アイコンを含む。同様に、ユーザがこれらのアイコンをクリックした後に、ソーシャルネットワーキング・システム160は、それぞれのアクションに対応するユーザのアクションに応答して「お気に入り」エッジまたは「チェックイン」エッジを作成することができる。限定ではなく、別の例として、あるユーザ(ユーザ「C」)が、特定のアプリケーション(オンライン音楽アプリケーションであるSPOTIFY)を使用して特定の曲(「イマジン」)を聴く場合がある。このケースにおいては、ソーシャルネットワーキング・システム160は、そのユーザに対応するユーザ・ノード202と、その曲およびアプリケーションに対応するコンセプト・ノード204との間において、(図5に示されているような)「聴いた」エッジ206および「使用した」エッジを作成して、そのユーザがその曲を聴いてそのアプリケーションを使用したということを示すことができる。その上、ソーシャルネットワーキング・システム160は、その曲に対応するコンセプト・ノード204と、そのアプリケーションに対応するコンセプト・ノード204との間において、(図5に示されているような)「再生した」エッジ206を作成して、その特定の曲がその特定のアプリケーションによって再生されたということを示すことができる。このケースにおいては、「再生した」エッジ206は、外部アプリケーション(SPOTIFY)によって外部オーディオ・ファイル(「イマジン」という曲)に関して実行されたアクションに対応する。本開示は、ユーザ・ノード202とコンセプト・ノード204とをつなげる特定の属性を伴う特定のエッジ206について記述しているが、本開示は、ユーザ・ノード202とコンセプト・ノード204とをつなげる任意の適切な属性を伴う任意の適切なエッジ206を想定している。その上、本開示は、単一の関係を表すユーザ・ノード202とコンセプト・ノード204との間におけるエッジについて記述しているが、本開示は、1つまたは複数の関係を表すユーザ・ノード202とコンセプト・ノード204との間におけるエッジを想定している。限定ではなく、例として、エッジ206は、ユーザが特定のコンセプトに対して「いいね!」を表明しているということ、およびその特定のコンセプトを使用したということの両方を表すことができる。あるいは、別のエッジ206は、(図2において、ユーザ「E」を表すユーザ・ノード202と、「SPOTIFY」を表すコンセプト・ノード204との間において示されているような)ユーザ・ノード202とコンセプト・ノード204との間におけるそれぞれのタイプの関係(または、単一の関係が複数集まったもの)を表すことができる。
特定の実施形態においては、ソーシャルネットワーキング・システム160は、ソーシャルグラフ200内でユーザ・ノード202とコンセプト・ノード204との間においてエッジ206を作成することができる。限定ではなく、例として、(たとえば、ユーザのクライアント・システム130によってホストされているウェブ・ブラウザまたは専用のアプリケーションを使用することなどによって)コンセプトプロフィール・ページを閲覧しているユーザは、「いいね!」アイコンをクリックまたは選択することにより、コンセプト・ノード204によって表されているコンセプトを自分が気に入っているということを示すことができ、その「いいね!」アイコンをクリックまたは選択することは、ユーザのクライアント・システム130に、そのコンセプトプロフィール・ページに関連付けられているそのコンセプトをそのユーザが気に入っているということを示すメッセージをソーシャルネットワーキング・システム160へ送信させることができる。そのメッセージに応答して、ソーシャルネットワーキング・システム160は、そのユーザとコンセプト・ノード204との間における「いいね!」エッジ206によって示されているように、そのユーザに関連付けられているユーザ・ノード202とコンセプト・ノード204との間においてエッジ206を作成することができる。特定の実施形態においては、ソーシャルネットワーキング・システム160は、エッジ206を1つまたは複数のデータ・ストア内に格納することができる。特定の実施形態においては、エッジ206は、特定のユーザ・アクションに応答してソーシャルネットワーキング・システム160によって自動的に形成されることが可能である。限定ではなく、例として、第1のユーザが、画像をアップロードすること、映画を観ること、または曲を聴くことを行った場合には、エッジ206は、第1のユーザに対応するユーザ・ノード202と、それらのコンセプトに対応するコンセプト・ノード204との間において形成されることが可能である。本開示は、特定の様式で特定のエッジ206を形成することについて記述しているが、本開示は、任意の適切な様式で任意の適切なエッジ206を形成することを想定している。
図6は、例示的なコンピュータ・システム60を示している。特定の実施形態においては、1つまたは複数のコンピュータ・システム60が、本明細書において記述されているまたは示されている1つまたは複数の方法の1つまたは複数の工程を実行する。特定の実施形態においては、1つまたは複数のコンピュータ・システム60が、本明細書において記述されているまたは示されている機能を提供する。特定の実施形態においては、1つまたは複数のコンピュータ・システム60上で稼働するソフトウェアが、本明細書において記述されているもしくは示されている1つもしくは複数の方法の1つもしくは複数の工程を実行し、または本明細書において記述されているもしくは示されている機能を提供する。特定の実施形態は、1つまたは複数のコンピュータ・システム60の1つまたは複数の部分を含む。本明細書においては、コンピュータ・システムへの言及は、適切な場合には、コンピューティング・デバイスを包含することができる。その上、コンピュータ・システムへの言及は、適切な場合には、1つまたは複数のコンピュータ・システムを包含することができる。
本開示は、任意の適切な数のコンピュータ・システム60を想定している。本開示は、任意の適切な物理的な形態を取るコンピュータ・システム60を想定している。限定ではなく、例として、コンピュータ・システム60は、組み込みコンピュータ・システム、システムオンチップ(SOC)、シングルボード・コンピュータ・システム(SBC)(たとえば、コンピュータオンモジュール(COM)もしくはシステムオンモジュール(SOM)など)、デスクトップ・コンピュータ・システム、ラップトップもしくはノートブック・コンピュータ・システム、インタラクティブ・キオスク、メインフレーム、コンピュータ・システムのメッシュ、モバイル電話、携帯情報端末(PDA)、サーバ、タブレット・コンピュータ・システム、またはこれらのうちの複数の組合せであることが可能である。適切な場合には、コンピュータ・システム60は、1つもしくは複数のコンピュータ・システム60を含むこと、単一型もしくは分散型であること、複数のロケーションにわたること、複数のマシンにわたること、複数のデータセンターにわたること、または、クラウド(1つもしくは複数のネットワーク内の1つもしくは複数のクラウド・コンポーネントを含むことができる)内に常駐することが可能である。適切な場合には、1つまたは複数のコンピュータ・システム60は、本明細書において記述されているまたは示されている1つまたは複数の方法の1つまたは複数の工程を、実質的な空間上のまたは時間上の制限を伴わずに実行することができる。限定ではなく、例として、1つまたは複数のコンピュータ・システム60は、本明細書において記述されているまたは示されている1つまたは複数の方法の1つまたは複数の工程をリアル・タイムで、またはバッチ・モードで実行することができる。1つまたは複数のコンピュータ・システム60は、適切な場合には、本明細書において記述されているまたは示されている1つまたは複数の方法の1つまたは複数の工程を別々の時点で、または別々のロケーションで実行することができる。
特定の実施形態においては、コンピュータ・システム60は、プロセッサ62、メモリ64、ストレージ66、入力/出力(I/O)インタフェース68、通信インタフェース70、およびバス72を含む。本開示は、特定の数の特定のコンポーネントを特定の構成で有する特定のコンピュータ・システムについて記述し、示しているが、本開示は、任意の適切な数の任意の適切なコンポーネントを任意の適切な構成で有する任意の適切なコンピュータ・システムを想定している。
特定の実施形態においては、プロセッサ62は、コンピュータ・プログラムを構成している命令などの命令を実行するためのハードウェアを含む。限定ではなく、例として、命令を実行するために、プロセッサ62は、内部レジスタ、内部キャッシュ、メモリ64、またはストレージ66から命令を取り出し(またはフェッチし)、それらの命令をデコードして実行し、次いで、1つまたは複数の結果を内部レジスタ、内部キャッシュ、メモリ64、またはストレージ66に書き込むことができる。特定の実施形態においては、プロセッサ62は、データ、命令、またはアドレスのための1つまたは複数の内部キャッシュを含むことができる。本開示は、適切な場合には、任意の適切な数の任意の適切な内部キャッシュを含むプロセッサ62を想定している。限定ではなく、例として、プロセッサ62は、1つまたは複数の命令キャッシュ、1つまたは複数のデータ・キャッシュ、および1つまたは複数の変換ルックアサイド・バッファ(TLB)を含むことができる。命令キャッシュ内の命令は、メモリ64またはストレージ66内の命令のコピーであることが可能であり、命令キャッシュは、プロセッサ62によるそれらの命令の取り出しをスピードアップすることができる。データ・キャッシュ内のデータは、プロセッサ62において実行される命令が機能する際に基づくメモリ64もしくはストレージ66内のデータのコピー、プロセッサ62において実行される後続の命令によるアクセスのための、もしくはメモリ64もしくはストレージ66への書き込みのためのプロセッサ62において実行された以前の命令の結果、またはその他の適切なデータであることが可能である。データ・キャッシュは、プロセッサ62による読み取りオペレーションまたは書き込みオペレーションをスピードアップすることができる。TLBは、プロセッサ62のための仮想アドレス変換をスピードアップすることができる。特定の実施形態においては、プロセッサ62は、データ、命令、またはアドレスのための1つまたは複数の内部レジスタを含むことができる。本開示は、適切な場合には、任意の適切な数の任意の適切な内部レジスタを含むプロセッサ62を想定している。適切な場合には、プロセッサ62は、1つまたは複数の演算ロジック・ユニット(ALU)を含むこと、マルチコア・プロセッサであること、または1つもしくは複数のプロセッサ62を含むことが可能である。本開示は、特定のプロセッサについて記述し、示しているが、本開示は、任意の適切なプロセッサを想定している。
特定の実施形態においては、メモリ64は、プロセッサ62が実行するための命令、またはプロセッサ62が機能する際に基づくデータを格納するためのメイン・メモリを含む。限定ではなく、例として、コンピュータ・システム60は、命令をストレージ66または別のソース(たとえば、別のコンピュータ・システム60など)からメモリ64にロードすることができる。次いでプロセッサ62は、命令をメモリ64から内部レジスタまたは内部キャッシュにロードすることができる。命令を実行するために、プロセッサ62は、命令を内部レジスタまたは内部キャッシュから取り出し、それらの命令をデコードすることができる。命令の実行中または実行後に、プロセッサ62は、1つまたは複数の結果(それらは、中間の結果または最終的な結果である場合がある)を内部レジスタまたは内部キャッシュに書き込むことができる。次いでプロセッサ62は、それらの結果のうちの1つまたは複数をメモリ64に書き込むことができる。特定の実施形態においては、プロセッサ62は、(ストレージ66またはその他の場所ではなく)1つもしくは複数の内部レジスタもしくは内部キャッシュ内の、またはメモリ64内の命令のみを実行し、(ストレージ66またはその他の場所ではなく)1つもしくは複数の内部レジスタもしくは内部キャッシュ内の、またはメモリ64内のデータ上でのみ機能する。1つまたは複数のメモリ・バス(それらはそれぞれ、アドレス・バスおよびデータ・バスを含むことができる)は、プロセッサ62をメモリ64に結合することができる。バス72は、以降で記述されているような1つまたは複数のメモリ・バスを含むことができる。特定の実施形態においては、1つまたは複数のメモリ管理ユニット(MMU)が、プロセッサ62とメモリ64との間に常駐し、プロセッサ62によって要求されるメモリ64へのアクセスを容易にする。特定の実施形態においては、メモリ64は、ランダム・アクセス・メモリ(RAM)を含む。このRAMは、適切な場合には、揮発性メモリであることが可能である。適切な場合には、このRAMは、ダイナミックRAM(DRAM)またはスタティックRAM(SRAM)であることが可能である。その上、適切な場合には、このRAMは、シングルポートRAMまたはマルチポートRAMであることが可能である。本開示は、任意の適切なRAMを想定している。メモリ64は、適切な場合には、1つまたは複数のメモリ64を含むことができる。本開示は、特定のメモリについて記述し、示しているが、本開示は、任意の適切なメモリを想定している。
特定の実施形態においては、ストレージ66は、データまたは命令のためのマス・ストレージを含む。限定ではなく、例として、ストレージ66は、ハード・ディスク・ドライブ(HDD)、フロッピー(登録商標)・ディスク・ドライブ、フラッシュ・メモリ、光ディスク、光磁気ディスク、磁気テープ、またはユニバーサル・シリアル・バス(USB)ドライブ、またはこれらのうちの複数の組合せを含むことができる。ストレージ66は、適切な場合には、取り外し可能なまたは取り外し不能な(すなわち、固定された)媒体を含むことができる。ストレージ66は、適切な場合には、コンピュータ・システム60の内部または外部に存在することが可能である。特定の実施形態においては、ストレージ66は、不揮発性のソリッドステート・メモリである。特定の実施形態においては、ストレージ66は、読み取り専用メモリ(ROM)を含む。適切な場合には、このROMは、マスクプログラムROM、プログラマブルROM(PROM)、消去可能PROM(EPROM)、電気的消去可能PROM(EEPROM)、電気的書替え可能ROM(EAROM)、またはフラッシュ・メモリ、またはこれらのうちの複数の組合せであることが可能である。本開示は、任意の適切な物理的な形態を取るマス・ストレージ66を想定している。ストレージ66は、適切な場合には、プロセッサ62とストレージ66との間における通信を容易にする1つまたは複数のストレージ・コントロール・ユニットを含むことができる。適切な場合には、ストレージ66は、1つまたは複数のストレージ66を含むことができる。本開示は、特定のストレージについて記述し、示しているが、本開示は、任意の適切なストレージを想定している。
特定の実施形態においては、I/Oインタフェース68は、コンピュータ・システム60と1つまたは複数のI/Oデバイスとの間における通信のための1つまたは複数のインタフェースを提供するハードウェア、ソフトウェア、またはその両方を含む。コンピュータ・システム60は、適切な場合には、これらのI/Oデバイスのうちの1つまたは複数を含むことができる。これらのI/Oデバイスのうちの1つまたは複数は、人とコンピュータ・システム60との間における通信を可能にすることができる。限定ではなく、例として、I/Oデバイスは、キーボード、キーパッド、マイクロフォン、モニタ、マウス、プリンタ、スキャナ、スピーカ、スチル・カメラ、スタイラス、タブレット、タッチ・スクリーン、トラックボール、ビデオ・カメラ、別の適切なI/Oデバイス、またはこれらのうちの複数の組合せを含むことができる。I/Oデバイスは、1つまたは複数のセンサを含むことができる。本開示は、任意の適切なI/Oデバイス、およびそれらのI/Oデバイスのための任意の適切なI/Oインタフェース68を想定している。適切な場合には、I/Oインタフェース68は、プロセッサ62がこれらのI/Oデバイスのうちの1つまたは複数を駆動することを可能にする1つまたは複数のデバイス・ドライバまたはソフトウェア・ドライバを含むことができる。I/Oインタフェース68は、適切な場合には、1つまたは複数のI/Oインタフェース68を含むことができる。本開示は、特定のI/Oインタフェースについて記述し、示しているが、本開示は、任意の適切なI/Oインタフェースを想定している。
特定の実施形態においては、通信インタフェース70は、コンピュータ・システム60と、1つもしくは複数のその他のコンピュータ・システム60または1つもしくは複数のネットワークとの間における通信(たとえば、パケットベースの通信など)のための1つまたは複数のインタフェースを提供するハードウェア、ソフトウェア、またはその両方を含む。限定ではなく、例として、通信インタフェース70は、イーサネット(登録商標)もしくはその他の有線ベースのネットワークと通信するためのネットワーク・インタフェース・コントローラ(NIC)もしくはネットワーク・アダプタ、またはWI−FIネットワークなどのワイヤレス・ネットワークと通信するためのワイヤレスNIC(WNIC)もしくはワイヤレス・アダプタを含むことができる。本開示は、任意の適切なネットワーク、およびそのネットワークのための任意の適切な通信インタフェース70を想定している。限定ではなく、例として、コンピュータ・システム60は、アド・ホック・ネットワーク、パーソナル・エリア・ネットワーク(PAN)、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、メトロポリタン・エリア・ネットワーク(MAN)、またはインターネットの1つまたは複数の部分、またはこれらのうちの複数の組合せと通信することができる。これらのネットワークのうちの1つまたは複数の1つまたは複数の部分は、有線またはワイヤレスであることが可能である。例として、コンピュータ・システム60は、ワイヤレスPAN(WPAN)(たとえば、ブルートゥースWPANなど)、WI−FIネットワーク、WI−MAXネットワーク、セルラー電話ネットワーク(たとえば、グローバル・システム・フォー・モバイル・コミュニケーションズ(GSM(登録商標))ネットワークなど)、またはその他の適切なワイヤレス・ネットワーク、またはこれらのうちの複数の組合せと通信することができる。コンピュータ・システム60は、適切な場合には、これらのネットワークのうちの任意のネットワークのための任意の適切な通信インタフェース70を含むことができる。通信インタフェース70は、適切な場合には、1つまたは複数の通信インタフェース70を含むことができる。本開示は、特定の通信インタフェースについて記述し、示しているが、本開示は、任意の適切な通信インタフェースを想定している。
特定の実施形態においては、バス72は、コンピュータ・システム60のコンポーネント同士を互いに結合するハードウェア、ソフトウェア、またはその両方を含む。限定ではなく、例として、バス72は、アクセラレイティッド・グラフィックス・ポート(AGP)もしくはその他のグラフィックス・バス、エンハンスト・インダストリー・スタンダード・アーキテクチャ(EISA)バス、フロントサイド・バス(FSB)、ハイパートランスポート(HT)インターコネクト、インダストリー・スタンダード・アーキテクチャ(ISA)バス、インフィニバンド・インターコネクト、ローピンカウント(LPC)バス、メモリ・バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、ペリフェラル・コンポーネント・インターコネクト(PCI)バス、PCIエクスプレス(PCIe)バス、シリアル・アドバンスト・テクノロジー・アタッチメント(SATA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション・ローカル(VLB)バス、または別の適切なバス、またはこれらのうちの複数の組合せを含むことができる。バス72は、適切な場合には、1つまたは複数のバス72を含むことができる。本開示は、特定のバスについて記述し、示しているが、本開示は、任意の適切なバスまたはインターコネクトを想定している。
本明細書においては、1つまたは複数の非一時的なコンピュータ可読記憶媒体は、適切な場合には、1つもしくは複数の半導体ベースのもしくはその他の集積回路(IC)(たとえば、フィールドプログラマブル・ゲート・アレイ(FPGA)もしくは特定用途向け集積回路(ASIC)など)、ハード・ディスク・ドライブ(HDD)、ハイブリッド・ハード・ドライブ(HHD)、光ディスク、光ディスク・ドライブ(ODD)、光磁気ディスク、光磁気ドライブ、フロッピー(登録商標)・ディスケット、フロッピー(登録商標)・ディスク・ドライブ(FDD)、磁気テープ、ソリッドステート・ドライブ(SSD)、RAMドライブ、セキュア・デジタル・カードもしくはドライブ、その他の任意の適切な非一時的なコンピュータ可読記憶媒体、またはこれらのうちの複数の組合せを含むことができる。非一時的なコンピュータ可読記憶媒体は、適切な場合には、揮発性、不揮発性、または揮発性と不揮発性の組合せであることが可能である。
本明細書においては、「または(もしくは)」は、包含的であり、排他的ではない(ただし、そうではないことが明示されている場合、または、そうではないことが文脈によって示されている場合は除く)。したがって、本明細書においては、「AまたはB」は、「A、B、またはその両方」を意味する(ただし、そうではないことが明示されている場合、または、そうではないことが文脈によって示されている場合は除く)。その上、「および(ならびに)」は、包括的および個別的の両方である(ただし、そうではないことが明示されている場合、または、そうではないことが文脈によって示されている場合は除く)。したがって、本明細書においては、「AおよびB」は、「まとめて、または個別に、AおよびB」を意味する(ただし、そうではないことが明示されている場合、または、そうではないことが文脈によって示されている場合は除く)。

Claims (18)

  1. データベース負荷を低減するためにコンピュータが実行する方法であって、
    1つまたは複数のコンピューティング・デバイスが、検索語に関連付けられている1つまたは複数のコンテンツ・オブジェクトに関連付けられているユーザのアクティビティーの更新を受け取ることであって、前記ユーザのアクティビティーは、1つまたは複数のコンテンツ・オブジェクトを有するオンライン・ソーシャル・ネットワークの1人または複数のユーザによる1つまたは複数の対話を含み、前記1つまたは複数のコンテンツ・オブジェクトは、異なる複数のコンテンツ・オブジェクト・タイプであり、各コンテンツ・オブジェクトが、複数のインデックス・サーバのうちの特定のインデックス・サーバ上でインデックス付けされている、前記受け取ること、
    1つまたは複数のコンピューティング・デバイスが、該アクティビティーの更新を受け取ることに応答して、複数のインデックス・サーバのうちの特定のインデックス・サーバ上の更新レイヤで前記1つまたは複数のコンテンツ・オブジェクトをインデックス付けすることであって、前記複数のインデックス・サーバの各々は、前記異なる複数のコンテンツ・オブジェクト・タイプのうちの単一のコンテンツ・オブジェクト・タイプの複数のコンテンツ・オブジェクトに対応する識別子情報のリストを格納し、前記更新レイヤは、最近のアクティビティーをインデックス付けし、前記更新と関連付けられた前記1つまたは複数のコンテンツ・オブジェクトの識別子情報を含む、前記インデックス付けすること、
    1つまたは複数のコンピューティング・デバイスが、前記検索語が、所定のしきい値数を超える、前記特定のインデックス・サーバの更新レイヤ上でインデックス付けされた関連するコンテンツ・オブジェクトの数を有するか否かを判定することであって、前記所定のしきい値数は、前記特定のインデックス・サーバに関連付けられた1つまたは複数のコンテンツ・オブジェクトのコンテンツ・オブジェクト・タイプに基づいて決定される、前記判定すること、
    1つまたは複数のコンピューティング・デバイスが、1つまたは複数の所定の時刻において、前記識別子情報を前記更新レイヤから基本レイヤにプロモートすることであって、前記基本レイヤは、前記単一のコンテンツ・オブジェクト・タイプの識別子情報を含み、前記基本レイヤは、前記更新レイヤにより以前にインデックス付けされたアクティビティーをインデックス付けして前記識別子情報を更新し、前記基本レイヤは、前記検索語に以前に関連付けられた前記単一のコンテンツ・オブジェクト・タイプの他の1つまたは複数のコンテンツ・オブジェクトの識別子情報を含む、前記プロモートすること、を備える方法。
  2. 前記プロモートすることは、
    1つまたは複数のコンピューティング・デバイスが、前記ユーザのアクティビティーの更新に応答して、前記アクティビティーに関連付けられているコンテンツ・オブジェクトの識別子情報を前記更新レイヤに付加することを含む、請求項1に記載の方法。
  3. 前記プロモートすることは、
    1つまたは複数のコンピューティング・デバイスが、前記1人または複数のユーザのうちの一人がコンテンツ・オブジェクトを削除するため、前記アクティビティーに関連付けられているコンテンツ・オブジェクトが前記検索語に関連付けられていないという指示を前記更新レイヤ内に供給することを含む、請求項1に記載の方法。
  4. 1つまたは複数のコンピューティング・デバイスによって、前記検索語と、用語サーバによってインデックス付けされている1つまたは複数のコンテンツ・オブジェクトに関連付けられている別の検索語とを含む検索クエリーの1つまたは複数の検索結果を生成することをさらに備え、
    該検索結果が、前記ユーザのアクティビティーに関連付けられているコンテンツ・オブジェクト、および、前記識別子情報のリストにおける識別子情報と、該別の検索語に関連付けられているコンテンツ・オブジェクトのリストにおける識別子情報との重なる部分を通じて特定された1つまたは複数のコンテンツ・オブジェクトに少なくとも部分的に基づいて特定される、請求項1に記載の方法。
  5. 1つまたは複数のコンピューティング・デバイスによって、1つまたは複数のインデックス・サーバ上で別の検索語に関連付けられているリストを、該別の検索語に関連付けられているコンテンツ・オブジェクトの数が前記所定のしきい値数を超えていることに応答して生成すること、
    1つまたは複数のコンピューティング・デバイスによって、該別の検索語に関連付けられているインデックス・サーバのうちの1つまたは複数の該識別子情報のリストに、用語サーバによってインデックス付けされている1つまたは複数のコンテンツ・オブジェクトの識別子情報を挿入すること、をさらに備える、請求項1に記載の方法。
  6. 1つまたは複数のコンピューティング・デバイスによって、前記検索語と、前記別の検索語に関連付けられている用語サーバのリストとを削除することをさらに備える、請求項5に記載の方法。
  7. ソフトウェアを記憶する1つまたは複数の非一時なコンピュータ可読的記録媒体であって、
    前記ソフトウェアは、実行されたときに、
    検索語に関連付けられている1つまたは複数のコンテンツ・オブジェクトに関連付けられているユーザのアクティビティーの更新を受け取ることであって、前記ユーザのアクティビティーは、1つまたは複数のコンテンツ・オブジェクトを有するオンライン・ソーシャル・ネットワークの1人または複数のユーザによる1つまたは複数の対話を含み、前記1つまたは複数のコンテンツ・オブジェクトは、異なる複数のコンテンツ・オブジェクト・タイプであり、各コンテンツ・オブジェクトが、複数のインデックス・サーバのうちの特定のインデックス・サーバ上でインデックス付けされている、前記受け取ること、
    該アクティビティーの更新を受け取ることに応答して、複数のインデックス・サーバのうちの特定のインデックス・サーバ上の更新レイヤで前記1つまたは複数のコンテンツ・オブジェクトをインデックス付けすることであって、前記複数のインデックス・サーバの各々は、前記異なる複数のコンテンツ・オブジェクト・タイプのうちの単一のコンテンツ・オブジェクト・タイプの複数のコンテンツ・オブジェクトに対応する識別子情報のリストを格納し、前記更新レイヤは、最近のアクティビティーをインデックス付けし、前記更新と関連付けられた前記1つまたは複数のコンテンツ・オブジェクトの識別子情報を含む、前記インデックス付けすること、
    前記検索語が、所定のしきい値数を超える、前記特定のインデックス・サーバの更新レイヤ上でインデックス付けされた関連するコンテンツ・オブジェクトの数を有するか否かを判定することであって、前記所定のしきい値数は、前記特定のインデックス・サーバに関連付けられた1つまたは複数のコンテンツ・オブジェクトのコンテンツ・オブジェクト・タイプに基づいて決定される、前記判定すること、
    1つまたは複数の所定の時刻において、前記識別子情報を前記更新レイヤから基本レイヤにプロモートすることであって、前記基本レイヤは、前記単一のコンテンツ・オブジェクト・タイプの識別子情報を含み、前記基本レイヤは、前記更新レイヤにより以前にインデックス付けされたアクティビティーをインデックス付けして前記識別子情報を更新し、前記基本レイヤは、前記検索語に以前に関連付けられた前記単一のコンテンツ・オブジェクト・タイプの他の1つまたは複数のコンテンツ・オブジェクトの識別子情報を含む、前記プロモートすること、を実行するように構成されている、1つまたは複数の非一時なコンピュータ可読的記録媒体。
  8. 前記プロモートすることは、
    1つまたは複数のコンピューティング・デバイスが、前記ユーザのアクティビティーの更新に応答して、前記アクティビティーに関連付けられているコンテンツ・オブジェクトの識別子情報を前記更新レイヤに付加することを含む、請求項7に記載の1つまたは複数の非一時なコンピュータ可読的記録媒体。
  9. 前記プロモートすることは、
    1つまたは複数のコンピューティング・デバイスが、前記1人または複数のユーザのうちの一人がコンテンツ・オブジェクトを削除するため、前記アクティビティーに関連付けられているコンテンツ・オブジェクトが前記検索語に関連付けられていないという指示を前記更新レイヤ内に供給することを含む、請求項7に記載の1つまたは複数の非一時なコンピュータ可読的記録媒体。
  10. 前記ソフトウェアが、
    前記検索語と、用語サーバによってインデックス付けされている1つまたは複数のコンテンツ・オブジェクトに関連付けられている別の検索語とを含む検索クエリーの1つまたは複数の検索結果を生成することを実行するようにさらに構成され、
    該検索結果が、前記アクティビティーに関連付けられているコンテンツ・オブジェクト、および、前記識別子情報のリストにおける識別子情報と、該別の検索語に関連付けられているコンテンツ・オブジェクトのリストにおける識別子情報との重なる部分を通じて特定された1つまたは複数のコンテンツ・オブジェクトに少なくとも部分的に基づいて特定される、請求項7に記載の1つまたは複数の非一時なコンピュータ可読的記録媒体。
  11. 前記ソフトウェアが、
    1つまたは複数のインデックス・サーバ上で別の検索語に関連付けられているリストを、該別の検索語に関連付けられているコンテンツ・オブジェクトの数が前記所定のしきい値数を超えていることに応答して生成すること、
    該別の検索語に関連付けられているインデックス・サーバのうちの1つまたは複数の該リストに、用語サーバによってインデックス付けされている1つまたは複数のコンテンツ・オブジェクトの識別子情報を挿入すること、を実行するようにさらに構成されている、請求項7に記載の1つまたは複数の非一時なコンピュータ可読的記録媒体。
  12. 前記ソフトウェアが、
    前記検索語と、前記別の検索語に関連付けられている用語サーバのリストとを削除することを実行するようにさらに構成されている、請求項11に記載の1つまたは複数の非一時なコンピュータ可読的記録媒体。
  13. デバイスであって、
    プロセッサと、
    該プロセッサに結合され、ソフトウェアを具体化している1つまたは複数の非一時的なコンピュータ可読記録媒体とを備えるデバイスであって、
    該ソフトウェアが、
    検索語に関連付けられている1つまたは複数のコンテンツ・オブジェクトに関連付けられているユーザのアクティビティーの更新を受け取ることであって、前記ユーザのアクティビティーは、1つまたは複数のコンテンツ・オブジェクトを有するオンライン・ソーシャル・ネットワークの1人または複数のユーザによる1つまたは複数の対話を含み、前記1つまたは複数のコンテンツ・オブジェクトは、異なる複数のコンテンツ・オブジェクト・タイプであり、各コンテンツ・オブジェクトが、複数のインデックス・サーバのうちの特定のインデックス・サーバ上でインデックス付けされている、前記受け取ること、
    該アクティビティーの更新を受け取ることに応答して、複数のインデックス・サーバのうちの特定のインデックス・サーバ上の更新レイヤで前記1つまたは複数のコンテンツ・オブジェクトをインデックス付けすることであって、前記複数のインデックス・サーバの各々は、前記異なる複数のコンテンツ・オブジェクト・タイプのうちの単一のコンテンツ・オブジェクト・タイプの複数のコンテンツ・オブジェクトに対応する識別子情報のリストを格納し、前記更新レイヤは、最近のアクティビティーをインデックス付けし、前記更新と関連付けられた前記1つまたは複数のコンテンツ・オブジェクトの識別子情報を含む、前記インデックス付けすること、
    前記検索語が、所定のしきい値数を超える、前記特定のインデックス・サーバの更新レイヤ上でインデックス付けされた関連するコンテンツ・オブジェクトの数を有するか否かを判定することであって、前記所定のしきい値数は、前記特定のインデックス・サーバに関連付けられた1つまたは複数のコンテンツ・オブジェクトのコンテンツ・オブジェクト・タイプに基づいて決定される、前記判定すること、
    1つまたは複数の所定の時刻において、前記識別子情報を前記更新レイヤから基本レイヤにプロモートすることであって、前記基本レイヤは、前記単一のコンテンツ・オブジェクト・タイプの識別子情報を含み、前記基本レイヤは、前記更新レイヤにより以前にインデックス付けされたアクティビティーをインデックス付けして前記識別子情報を更新し、前記基本レイヤは、前記検索語に以前に関連付けられた前記単一のコンテンツ・オブジェクト・タイプの他の1つまたは複数のコンテンツ・オブジェクトの識別子情報を含む、前記プロモートすること、を実行する、デバイス。
  14. 前記プロモートすることは、
    1つまたは複数のコンピューティング・デバイスが、前記ユーザのアクティビティーの更新に応答して、前記アクティビティーに関連付けられているコンテンツ・オブジェクトの識別子情報を前記更新レイヤに付加することを含む、請求項13に記載のデバイス。
  15. 前記プロモートすることは、
    1つまたは複数のコンピューティング・デバイスが、前記1人または複数のユーザのうちの一人がコンテンツ・オブジェクトを削除するため、前記アクティビティーに関連付けられているコンテンツ・オブジェクトが前記検索語に関連付けられていないという指示を前記更新レイヤ内に供給することを含む、請求項13に記載のデバイス。
  16. 前記基本レイヤは、所定の時刻に更新され、前記更新レイヤは、前記更新の時に更新される、請求項1に記載の方法。
  17. 前記複数のインデックス・サーバは、
    第1のコンテンツ・オブジェクト・タイプの複数のコンテンツ・オブジェクトに対応する識別子情報のリストを記憶する第1のインデックス・サーバと、
    第2のコンテンツ・オブジェクト・タイプの複数のコンテンツ・オブジェクトに対応する識別子情報のリストを記憶する第2のインデックス・サーバと、を含む、請求項1に記載の方法。
  18. 特定のコンテンツ・オブジェクト・タイプの各コンテンツ・オブジェクトは、前記複数のインデックス・サーバのうちの特定のインデックス・サーバにインデックス付けられ、
    各インデックス・サーバは、単一のコンテンツ・オブジェクト・タイプの複数のコンテンツ・オブジェクトに対応する識別子情報のリストを記憶する、請求項1に記載の方法。
JP2016515050A 2013-05-21 2014-05-21 更新レイヤを伴うデータベース・シャーディング Active JP6483092B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/899,305 2013-05-21
US13/899,305 US10977229B2 (en) 2013-05-21 2013-05-21 Database sharding with update layer
PCT/US2014/038952 WO2014190045A1 (en) 2013-05-21 2014-05-21 Database sharing with update layer

Publications (2)

Publication Number Publication Date
JP2016526218A JP2016526218A (ja) 2016-09-01
JP6483092B2 true JP6483092B2 (ja) 2019-03-13

Family

ID=51934091

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016515050A Active JP6483092B2 (ja) 2013-05-21 2014-05-21 更新レイヤを伴うデータベース・シャーディング

Country Status (10)

Country Link
US (1) US10977229B2 (ja)
EP (1) EP3000060B1 (ja)
JP (1) JP6483092B2 (ja)
KR (1) KR20160010873A (ja)
CN (1) CN105378726B (ja)
AU (1) AU2014268608B2 (ja)
BR (1) BR112015029306A2 (ja)
CA (1) CA2912414A1 (ja)
MX (1) MX353312B (ja)
WO (1) WO2014190045A1 (ja)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9286047B1 (en) 2013-02-13 2016-03-15 Cisco Technology, Inc. Deployment and upgrade of network devices in a network environment
US9483568B1 (en) * 2013-06-05 2016-11-01 Google Inc. Indexing system
US10374904B2 (en) 2015-05-15 2019-08-06 Cisco Technology, Inc. Diagnostic network visualization
US9800497B2 (en) 2015-05-27 2017-10-24 Cisco Technology, Inc. Operations, administration and management (OAM) in overlay data center environments
US9967158B2 (en) 2015-06-05 2018-05-08 Cisco Technology, Inc. Interactive hierarchical network chord diagram for application dependency mapping
US10536357B2 (en) 2015-06-05 2020-01-14 Cisco Technology, Inc. Late data detection in data center
US10033766B2 (en) 2015-06-05 2018-07-24 Cisco Technology, Inc. Policy-driven compliance
US10142353B2 (en) 2015-06-05 2018-11-27 Cisco Technology, Inc. System for monitoring and managing datacenters
US10089099B2 (en) 2015-06-05 2018-10-02 Cisco Technology, Inc. Automatic software upgrade
US10402385B1 (en) * 2015-08-27 2019-09-03 Palantir Technologies Inc. Database live reindex
US11392582B2 (en) * 2015-10-15 2022-07-19 Sumo Logic, Inc. Automatic partitioning
US10171357B2 (en) 2016-05-27 2019-01-01 Cisco Technology, Inc. Techniques for managing software defined networking controller in-band communications in a data center network
US10931629B2 (en) 2016-05-27 2021-02-23 Cisco Technology, Inc. Techniques for managing software defined networking controller in-band communications in a data center network
US10289438B2 (en) 2016-06-16 2019-05-14 Cisco Technology, Inc. Techniques for coordination of application components deployed on distributed virtual machines
US10708183B2 (en) 2016-07-21 2020-07-07 Cisco Technology, Inc. System and method of providing segment routing as a service
US10972388B2 (en) 2016-11-22 2021-04-06 Cisco Technology, Inc. Federated microburst detection
EP3563268B1 (en) * 2017-02-27 2022-09-14 Timescale, Inc. Scalable database system for querying time-series data
US10708152B2 (en) 2017-03-23 2020-07-07 Cisco Technology, Inc. Predicting application and network performance
US10523512B2 (en) 2017-03-24 2019-12-31 Cisco Technology, Inc. Network agent for generating platform specific network policies
US10594560B2 (en) 2017-03-27 2020-03-17 Cisco Technology, Inc. Intent driven network policy platform
US10250446B2 (en) 2017-03-27 2019-04-02 Cisco Technology, Inc. Distributed policy store
US10764141B2 (en) 2017-03-27 2020-09-01 Cisco Technology, Inc. Network agent for reporting to a network policy system
US10873794B2 (en) 2017-03-28 2020-12-22 Cisco Technology, Inc. Flowlet resolution for application performance monitoring and management
US10599726B2 (en) * 2017-04-19 2020-03-24 A9.Com, Inc. Methods and systems for real-time updating of encoded search indexes
US10680887B2 (en) 2017-07-21 2020-06-09 Cisco Technology, Inc. Remote device status audit and recovery
US10554501B2 (en) 2017-10-23 2020-02-04 Cisco Technology, Inc. Network migration assistant
US10523541B2 (en) 2017-10-25 2019-12-31 Cisco Technology, Inc. Federated network and application data analytics platform
US10594542B2 (en) 2017-10-27 2020-03-17 Cisco Technology, Inc. System and method for network root cause analysis
US11233821B2 (en) 2018-01-04 2022-01-25 Cisco Technology, Inc. Network intrusion counter-intelligence
US11765046B1 (en) 2018-01-11 2023-09-19 Cisco Technology, Inc. Endpoint cluster assignment and query generation
US10999149B2 (en) 2018-01-25 2021-05-04 Cisco Technology, Inc. Automatic configuration discovery based on traffic flow data
US10873593B2 (en) 2018-01-25 2020-12-22 Cisco Technology, Inc. Mechanism for identifying differences between network snapshots
US10826803B2 (en) 2018-01-25 2020-11-03 Cisco Technology, Inc. Mechanism for facilitating efficient policy updates
US10917438B2 (en) 2018-01-25 2021-02-09 Cisco Technology, Inc. Secure publishing for policy updates
US10574575B2 (en) 2018-01-25 2020-02-25 Cisco Technology, Inc. Network flow stitching using middle box flow stitching
US10798015B2 (en) 2018-01-25 2020-10-06 Cisco Technology, Inc. Discovery of middleboxes using traffic flow stitching
US11128700B2 (en) 2018-01-26 2021-09-21 Cisco Technology, Inc. Load balancing configuration based on traffic flow telemetry
US11921767B1 (en) * 2018-09-14 2024-03-05 Palantir Technologies Inc. Efficient access marking approach for efficient retrieval of document access data
CN111831878B (zh) * 2019-04-22 2023-09-15 百度在线网络技术(北京)有限公司 构建价值索引关系的方法、索引系统及索引装置
US11245762B1 (en) 2021-05-19 2022-02-08 Red Hat, Inc. Data request servicing using smart network interface cards
CN115374299B (zh) * 2022-10-24 2023-02-03 杭州悦数科技有限公司 分布式图数据库中可达性索引的分层构建方法和系统

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7216090B2 (en) * 2000-11-28 2007-05-08 Navic Systems, Inc. Promotion packaging for transmission groups
US20050165750A1 (en) 2004-01-20 2005-07-28 Microsoft Corporation Infrequent word index for document indexes
JP4314126B2 (ja) 2004-02-20 2009-08-12 株式会社東芝 同時実行制御方法及び装置
US7693813B1 (en) 2007-03-30 2010-04-06 Google Inc. Index server architecture using tiered and sharded phrase posting lists
US7966304B2 (en) * 2007-11-30 2011-06-21 Yahoo! Inc. Enabling searching on abbreviated search terms via messaging
CN101477486B (zh) 2009-01-22 2010-08-04 中国人民解放军国防科学技术大学 一种基于扇区重组的文件备份恢复方法
US8938467B2 (en) * 2009-03-25 2015-01-20 Eloy Technology, Llc System and method for intelligent storage of time shifted content
CN101546342B (zh) 2009-05-08 2012-07-04 阿里巴巴集团控股有限公司 实现搜索服务的方法与系统
US20110040762A1 (en) * 2009-08-12 2011-02-17 Globalspec, Inc. Segmenting postings list reader
JP2011044086A (ja) 2009-08-24 2011-03-03 Nec Corp 検索装置、検索方法、及びプログラム
US8527496B2 (en) 2010-02-11 2013-09-03 Facebook, Inc. Real time content searching in social network
US8244700B2 (en) 2010-02-12 2012-08-14 Microsoft Corporation Rapid update of index metadata
US8527497B2 (en) 2010-12-30 2013-09-03 Facebook, Inc. Composite term index for graph data
US8719257B2 (en) 2011-02-16 2014-05-06 Symantec Corporation Methods and systems for automatically generating semantic/concept searches
WO2012126180A1 (en) 2011-03-24 2012-09-27 Microsoft Corporation Multi-layer search-engine index
CN102253990A (zh) 2011-07-05 2011-11-23 广东星海数字家庭产业技术研究院有限公司 一种交互应用多媒体数据的查询方法及其装置
US20130117103A1 (en) 2011-11-08 2013-05-09 Insightexpress, Llc Universal control

Also Published As

Publication number Publication date
CN105378726B (zh) 2019-03-08
EP3000060A4 (en) 2017-01-18
EP3000060A1 (en) 2016-03-30
WO2014190045A8 (en) 2015-04-16
AU2014268608B2 (en) 2019-05-09
BR112015029306A2 (pt) 2017-07-25
AU2014268608A1 (en) 2016-01-21
CA2912414A1 (en) 2014-11-27
US20140351203A1 (en) 2014-11-27
MX353312B (es) 2018-01-08
WO2014190045A1 (en) 2014-11-27
MX2015016060A (es) 2016-08-03
KR20160010873A (ko) 2016-01-28
EP3000060B1 (en) 2021-01-13
US10977229B2 (en) 2021-04-13
CN105378726A (zh) 2016-03-02
JP2016526218A (ja) 2016-09-01

Similar Documents

Publication Publication Date Title
JP6483092B2 (ja) 更新レイヤを伴うデータベース・シャーディング
JP6615260B2 (ja) オフライン・コンテンツの生成
JP6388988B2 (ja) オンライン・ソーシャル・ネットワークにおける検索クエリのための静的ランク付け
JP6293830B2 (ja) オンライン・ソーシャル・ネットワークにおける検索クエリに対する近似的プライバシ
JP6363133B2 (ja) 抽出演算子
JP6681867B2 (ja) 関心箇所に応じた画像の切り取り
JP6377807B2 (ja) オンライン・ソーシャル・ネットワークにおける検索クエリの書き換え
JP6621914B2 (ja) オンライン・ソーシャル・ネットワーク上でのキー・トピックの検出
JP6431144B2 (ja) ソーシャル・コンテキストに基づく画像フィルタリング
JP6349331B2 (ja) ソーシャルネットワークにおける連絡先の集約
US10983973B2 (en) Database sharding with incorporated updates
KR20150121716A (ko) 데이터 세트의 샘플링

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170413

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180309

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180403

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180625

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181127

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190125

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190205

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190213

R150 Certificate of patent or registration of utility model

Ref document number: 6483092

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D02

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250