JP2017211999A - グラフ・データのコンポジットタームインデックス - Google Patents

グラフ・データのコンポジットタームインデックス Download PDF

Info

Publication number
JP2017211999A
JP2017211999A JP2017132657A JP2017132657A JP2017211999A JP 2017211999 A JP2017211999 A JP 2017211999A JP 2017132657 A JP2017132657 A JP 2017132657A JP 2017132657 A JP2017132657 A JP 2017132657A JP 2017211999 A JP2017211999 A JP 2017211999A
Authority
JP
Japan
Prior art keywords
objects
node
edge
data
nodes
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.)
Granted
Application number
JP2017132657A
Other languages
English (en)
Other versions
JP6326532B2 (ja
Inventor
シン、サンジーブ
Sanjeev Singh
スティーブン テイラー、ブレット
Steven Taylor Bret
スティーブン テイラー、ブレット
ブックハイト、ポール
Buchheit Paul
ノリス、ジェイムズ
Norris James
ボスマン、チューダー
Bosman Tudor
ダーネル、ベンジャミン
Darnell Benjamin
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Meta Platforms Inc
Original Assignee
Facebook Inc
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 Facebook Inc filed Critical Facebook Inc
Publication of JP2017211999A publication Critical patent/JP2017211999A/ja
Application granted granted Critical
Publication of JP6326532B2 publication Critical patent/JP6326532B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • 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/24Querying
    • G06F16/245Query processing
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • G06F16/24575Query processing with adaptation to user needs using context
    • 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/24Querying
    • G06F16/248Presentation of query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • G06F16/316Indexing structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Measurement And Recording Of Electrical Phenomena And Electrical Characteristics Of The Living Body (AREA)

Abstract

【課題】クエリ応答時間および全体的な性能を改善する。【解決手段】方法は、第1のエッジタイプタームと第1のオブジェクト識別子とを備える検索クエリを、クライアント・サーバから受信するステップと、インデックスサーバにおいてオンライン・ソーシャル・ネットワークに関連付けられているインデックスにアクセスするステップと、第1のエッジタイプタームによって指定されたエッジタイプを有し、検索クエリの第1のオブジェクト識別子に対応している宛先ノードを有する、エッジオブジェクトの第1のセットを識別するステップと、エッジオブジェクトの第1のセットのソースノードである、ノードオブジェクトの第2のセットを識別するステップとを有する。【選択図】図4

Description

本開示は、全般的にはデータベースに関し、より詳細には、グラフ・データ構造のデータ・インデクシング・システムに関する。
コンピュータ・ユーザは、プロプライエタリ・ネットワーク(proprietary
networks)ならびにインターネットなどの公衆ネットワークを含む様々なローカル・エリア・コンピュータ・ネットワークおよび広域コンピュータ・ネットワークを介して膨大な量の情報にアクセスし、共有することができる。通常、ユーザのコンピューティング・デバイスにインストールされたウェブ・ブラウザは、たとえば関連するuniform resource locator(URL)によって識別される様々なネットワーク・サーバに配置された情報へのアクセスおよびこれとのやり取り(interaction)を容易にする。ユーザ生成コンテンツの共有を可能にする従来の手法は、ソーシャル・ネットワーキング・ウェブサイトなどの様々な情報共有技術または情報共有プラットフォームを含む。そのようなウェブサイトは、ユーザが他のユーザによって作成されまたはカスタマイズされたウェブ・ページを見ることを可能にするアプリケーションのプラットフォームを含み、これにリンクされ、またはこれを提供することができ、他のユーザによるそのようなページの可視性およびこれとのやり取りは、ある特徴的なルールのセットによって管理される(govern)。
そのようなソーシャル・ネットワーキング情報およびほとんどの情報全般は、通常、関係データベースに格納される。一般に、関係データベース(relational database)は、関係の集合(しばしばテーブルと呼ばれる)である。関係データベースは、1組の数学用語(mathematical terms)を使用し、この数学用語は、構造化照会言語(SQL)データベース用語法を使用する場合がある。たとえば、関係を、同一の属性を有するタプル(tuples)の組として定義することができる。タプルは、通常、オブジェクトと、そのオブジェクトに関する情報とを表す。関係は、通常、テーブルとして記述され、テーブルは、行および列に編成される。一般に、ある属性によって参照されるすべてのデータが、同一のドメインにあり、同一の制約(constraints)に従う。
関係モデルは、関係のタプルが特定の順序を有しないことと、タプルが属性に順序を課さないこととを指定する。アプリケーションは、クエリを指定することによってデータにアクセスし、クエリは、演算を使用して、タプルを識別し、属性を識別し、関係を組み合わせる。関係を変更することができ、新しいタプルが明示的な値を供給することができ、またはクエリから新しいタプルを導出することができる。同様に、クエリは、更新または削除のためにタプルを識別することができる。関係の各タプルが、その属性値のある組合せ(1または複数)によって一意に識別可能であることが必要である。この組合せは、主キー(primary key)と呼ばれる。関係データベースでは、すべてのデータが、関係を介して格納され、アクセスされる。データを格納する関係は、通常、テーブルを用いて実施され、またはテーブルと呼ばれる。
関係データベース管理システムによって実施される関係データベースは、たとえば金融記録、製造およびロジスティック情報、職員データ、および他のアプリケーションに使用されるデータベース内の情報の格納に関する最も主要な選択肢になっている。コンピュータ能力が高まるにつれて、関係データベースを以前に非実用的にしていた関係データベースの非効率性よりも、従来のアプリケーションに関する関係データベースの使い易さが優
るようになった。3つの主導的なオープン・ソース実装は、MySQL、PostgreSQL、およびSQLiteである。MySQLは、複数のデータベースへのマルチユーザ・アクセスを提供するサーバとして実行される関係データベース管理システム(RDBMS)である。人気のあるLAMPソフトウェア・スタックの頭字語の「M」は、MySQLを指す。ウェブ・アプリケーションと共に使用することに関するその人気は、PHP(LAMPの「P」)に密接に結び付けられている。複数の高トラフィック・ウェブサイトは、データ・ストレージおよびユーザ・データのログ記録にMySQLを使用する。
データベース・インデックスは、データベース・テーブルに対するデータ取出し動作の速度を改善するデータ構造である。データベース・インデックスを、データベース・テーブルの1または複数の列を使用して作成することができ、これは、高速ランダム・ルックアップと順序付きレコードの効率的アクセスとの両方の基礎を提供する。インデックスを格納するのに必要なディスク空間は、通常、テーブルに必要なディスク空間より少なく(インデックスは、通常、テーブルがそれに従って配置されるキーフィールドだけを含み、テーブル内の他のすべての詳細を除外するので)、そのデータがメモリ内に格納するには大きすぎるテーブルについて、インデックスをメモリ内に格納する可能性をもたらす。インデックスは、様々なデータ構造を使用して実施することができる。普及しているインデックスは、平衡木、B+ツリー、およびハッシュである。
グラフは、オブジェクトの少なくともいくつかのペアがリンクによって接続されたオブジェクトの集合の抽象表現である。相互接続されたオブジェクトは、一般にノードと呼ばれ、ノードを接続するリンクは、エッジと呼ばれる。
国際公開第2010/118162号
しかし、グラフ構造でのデータのモデル化は、スケーラビリティおよび性能に難題を課す。グラフ構造のトラバースを必要とするクエリは、多数のデータベース・ルックアップを必要とする可能性がある。非常にスケーラブルなシステムは、通常、クエリ応答時間および全体的な性能を改善するために、キャッシングおよびインデクシングに依存する。
本発明は、グラフ・データのインデクシング・システムを対象とする方法、装置、およびシステムを提供する。特定の実装形態では、インデクシング・システムは、クエリ性能を改善するために非正規化およびレプリケーション・インデックス機能性を提供する。本開示の上記および他の特徴、態様、および利点を、下の発明を実施するための形態で、次の図面に関連して詳細に説明する。
本発明の1実装形態による例示的なインデクシング・システム・アーキテクチャを示す図。 例示的なコンピュータ・システム・アーキテクチャを示す図。 例示的なネットワーク環境を提供する図。 新しいオブジェクトをグラフおよびコンポジット・インデックス(composite index)に追加する例示的な方法を示す流れ図。
これから、本発明を、添付図面に示されたその少数の実施形態を参照して詳細に説明する。次の説明では、本開示の完全な理解を提供するために、多数の具体的な詳細を示す。しかし、本開示を、これらの具体的な詳細の一部またはすべてを伴わずに実践できることは、当業者には明白である。他の場合には、周知の工程ステップおよび/または構造は、本開示を不必要に不明瞭にしないようにするために、詳細には説明しない。さらに、本開示が、特定の実施形態に関連して説明されるが、この説明が、本開示を説明される実施形態に限定することを意図されたものではないことを理解されたい。逆に、説明は、添付の特許請求の範囲によって定義される本開示の趣旨および範囲に含めることができる代替案、修正形態、および同等物を包含することを意図されたものである。
特定の実装形態では、本発明は、データ・オブジェクトおよびデータ・オブジェクトの間の関連付けに対する柔軟な検索能力を提供するデータベース・インデックス・インフラストラクチャを対象とする。特定の実施形態は、ノードと、エッジがグラフ内で接続されるノードの間の関連付けまたは関係を定義するエッジとを含むグラフとしてモデル化された情報を格納し、サービングするインデクシング・システムに関する。特定の実施形態では、グラフは、ソーシャル・グラフであるかソーシャル・グラフを含み、インデクシング・システムは、統合されたソーシャル・ネットワーク環境を可能にする、より大きいネットワーキング・システム、インフラストラクチャ、またはプラットフォームの一部である。本開示では、ソーシャル・ネットワーク環境は、ソーシャル・グラフ情報を含むソーシャル・グラフに関して説明される場合がある。実際に、本開示の特定の実施形態は、ソーシャル・ネットワーク環境によってまたはソーシャル・ネットワーク環境のために格納されるデータのほとんどまたはすべてを、ソーシャル・グラフとして表すことができるという事実に依存し、これを活用し、またはこれを利用する。特定の実施形態は、本明細書で説明されるものなどのソーシャル・ネットワーク環境のユーザの指数関数的に増加する人数に伴って効率的に、知的に、かつ成功してスケーリングすることのできるコスト効率のよいインフラストラクチャを提供する。
特定の実施形態では、本明細書で説明される分散インデクシング・システムおよびバックエンド・インフラストラクチャは、大規模での低レイテンシ、1要求あたりのより低いコスト、開発者にとって使い易いフレームワーク、本明細書で例によって説明される、ソーシャル・グラフの関連付け(エッジ)とオブジェクト(ノード)との両方を用いる組み合わされたクエリを可能にするインフラストラクチャ、格納されたオブジェクトおよび関連付けに関する柔軟で表現力のあるクエリ・モデルを提供するインフラストラクチャ、およびPHPから直接に呼び出すのが簡単なインフラストラクチャのうちの1または複数を提供する。さらに、本明細書で使用される時に、「または」は、「および」ならびに「または」を意味する場合がある、すなわち、「または」は、明示的に述べられるか暗黙のうちに暗示されない限り、「および」を必ずしも除外しない。
特定の実施形態は、インターネットなど、複数のネットワーク・アドレス可能システムを含む広域ネットワーク環境で動作することができる。図3に、様々な例示的な実施形態がその中で動作することのできる、例示的なネットワーク環境を示す。ネットワーク・クラウド60は、一般に、本明細書で説明されるシステムおよびホストがそれを介して通信できる、1または複数の相互接続されたネットワークを表す。ネットワーク・クラウド60は、パケットベースの広域ネットワーク(インターネットなど)、プライベートネットワーク、無線ネットワーク、衛星ネットワーク、セルラ・ネットワーク、ページング・ネットワーク、および類似物を含むことができる。図3に示されているように、特定の実施形態は、ソーシャル・ネットワーキング・システム20および1または複数のクライアント・デバイス30を備えるネットワーク環境内で動作することができる。クライアント・デバイス30は、ネットワーク・サービス・プロバイダ、無線搬送波、または任意の他の適切な手段を介してネットワーク環境に動作可能に接続される。
1つの例示的な実施形態では、ソーシャル・ネットワーキング・システム20は、本明細書で説明されるように、ユーザがお互いと通信するか他の形でやり取りし、ユーザ・プロファイルなどのコンテンツにアクセスすることを可能にするコンピューティングシステムを備える。ソーシャル・ネットワーキング・システム20は、様々な例示的な実施形態で、1または複数の物理サーバ22およびデータ・ストア24を備えるネットワーク・アドレス可能システムである。1または複数の物理サーバ22は、たとえばルータおよび/またはネットワーキング・スイッチ26のセットを介してコンピュータ・ネットワーク60に動作可能に接続される。例示的な実施形態では、1または複数の物理サーバ22によってホスティングされる機能性は、ウェブ・サーバまたはHTTPサーバ、FTPサーバ、ならびに、限定なしに、Common Gateway Interface(CGI)スクリプト、PHP Hyper−text Preprocessor(PHP)、Active Server Pages(ASP)、ハイパーテキスト・マークアップ言語(HTML)、Extensible Markup Language(XML)、JAVA(登録商標)、JAVASCRIPT(登録商標)、Asynchronous JAVASCRIPT(登録商標) and XML(AJAX)、および類似物を使用して実施されたウェブ・ページおよびアプリケーションを含むことができる。
物理サーバ22は、ソーシャル・ネットワーキング・システム20の動作に向けられた機能性をホスティングすることができる。たとえば、ソーシャル・ネットワーキング・システム20は、1または複数のクライアント・デバイス30の1または複数のユーザが、情報を見、ポストすると同時に、ウェブサイトを介してお互いと通信することを可能にするウェブサイトをホスティングすることができる。以下では、複数のサーバ22は、サーバ22と呼ばれる場合があるが、サーバ22は、たとえばソーシャル・ネットワーキング・システム20ならびに他のコンテンツ配布サーバ、データ・ストア、およびデータベースをホスティングする多数のサーバを含むことができる。データ・ストア24は、ソーシャル・ネットワーキング・システムの動作に関連し、動作を可能にするコンテンツおよびデータをディジタル・データ・オブジェクトとして格納することができる。データ・オブジェクトは、特定の実装形態で、通常はデータ・ファイル、データベース、またはレコードに格納されまたはその中で実施されるディジタル情報のアイテムである。コンテンツ・オブジェクトは、テキスト(たとえば、ASCII、SGML、HTML)、イメージ(たとえば、jpeg、tif、およびgif)、グラフィックス(ベクトルベースのまたはビットマップ)、オーディオ、ビデオ(たとえば、mpeg)、または他のマルチメディア、およびその組合せを含む多数の形をとることができる。コンテンツ・オブジェクト・データは、実行可能コード・オブジェクト(たとえば、ブラウザ・ウィンドウまたはフレーム内で実行可能なゲーム)、ポッドキャスト、その他を含むこともできる。論理的に、データ・ストア24は、関係データベースおよびオブジェクト指向データベースなど、1または複数の物理システムに格納された論理的に関係するレコードまたはファイルの統合されたコレクションとして情報を維持する様々な別々のデータベースおよび統合されたデータベースのうちの1または複数に対応する。構造的に、データ・ストア24は、一般に、データ・ストレージおよび管理システムの大きいクラスのうちの1または複数を含むことができる。特定の実施形態では、データ・ストア24を、1または複数のデータベース・サーバ、マス・ストレージ・メディア、メディア・ライブラリ・システム、ストレージ・エリア・ネットワーク、データ・ストレージ・クラウド、および類似物などのコンポーネントを含む任意の適切な物理システム(1または複数)によって実施することができる。1つの例示的な実施形態では、データ・ストア24は、1または複数のサーバ、データベース(たとえば、MySQL)、および/またはデータ・ウェアハウスを含む。
データ・ストア24は、異なるソーシャル・ネットワーキング・システム20のユーザおよび/またはクライアント・デバイス30に関連するデータを含むことができる。特定
の実施形態では、ソーシャル・ネットワーキング・システム20は、システム20のユーザごとにユーザ・プロファイルを維持する。ユーザ・プロファイルは、ソーシャル・ネットワークのユーザを記述するデータを含み、このデータは、たとえば、正式名称(人のファースト・ネーム、ミドル・ネーム、およびラスト・ネーム、企業の商号および/または会社名など)生物学的、人口統計的、ならびに、職歴、学歴、趣味または好み、地理的位置、および追加の記述データなどの他のタイプの記述情報を含むことができる。たとえば、ユーザ・プロファイルは、ユーザの誕生日、関係状況(relationship status)、居住都市、および類似物を含むことができる。システム20は、さらに、異なるユーザ同士の間の1または複数の関係を記述するデータを格納することができる。関係情報は、類似するまたは共通の職歴、グループ・メンバシップ、趣味、または学歴を有するユーザを示すことができる。ユーザ・プロファイルは、他のユーザによるユーザの情報へのアクセスがそれに基づいて決まるプライバシ・セッティングを含むこともできる。
クライアント・デバイス30は、一般に、コンピュータ・ネットワークを介して(たとえば、リモートに)通信する機能性を含むコンピュータまたはコンピューティング・デバイスである。クライアント・デバイス30を、他の適切なコンピューティング・デバイスの中でも、デスクトップ・コンピュータ、ラップトップ・コンピュータ、携帯情報端末(PDA)、車内もしくは車外のナビゲーション・システム、スマートホンもしくは他のセルラホンもしくは携帯電話機、またはモバイル・ゲーミング・デバイスとすることができる。クライアント・デバイス30は、ウェブ・ブラウザ(たとえば、Microsoft
Windows Internet Explorer(登録商標)、Mozilla
Firefox(登録商標)、Apple Safari(登録商標)、Google
Chrome(登録商標)、およびOpera(登録商標)など)など、コンピュータ・ネットワークを介してコンテンツにアクセスし、これを見るための、1または複数のクライアント・アプリケーションを実行することができる。特定の実装形態では、クライアント・アプリケーションは、クライアント・デバイス30のユーザが、ソーシャル・ネットワーキング・システム20によってホスティングされるリソースなど、取り出されるべき特定のネットワーク・リソースのアドレスを入力することを可能にする。これらのアドレスを、Uniform Resource LocatorすなわちURLとすることができる。さらに、ページまたは他のリソースが取り出された後に、クライアント・アプリケーションは、ユーザが他のリソースへのハイパーリンクを「クリック」する時に、他のページまたは他のリソースへのアクセスを提供することができる。たとえば、そのようなハイパーリンクは、ウェブ・ページ内に配置され得、ユーザが別のページへのURLを入力し、そのページを取り出すための自動化された形を提供することができる。
図1に、図3に示されたソーシャル・ネットワーキング・システム20のバック・エンド機能を実施することのできるネットワーキング・システム、アーキテクチャ、またはインフラストラクチャ100(以下ではネットワーキング・システム100と呼ばれる)の例示的な実施形態を示す。特定の実施形態では、ネットワーキング・システム100は、ネットワーキング・システム100のユーザが、ネットワーキング・システム100によって提供されるソーシャル・ネットワーキング・サービスを介してお互いとならびに第三者とやり取りすることを可能にする。たとえば、リモート・ユーザ・コンピューティング・デバイス(たとえば、パーソナル・コンピュータ、ネットブック、マルチメディア・デバイス、セルラ電話機(特にスマートホン)など)のユーザは、情報を見、情報を格納しもしくは更新し、情報を通信し、または他のユーザ、サード・パーティ・ウェブサイト、ウェブ・ページ、もしくはウェブ・アプリケーション、もしくはネットワーキング・システム100によって格納され、ホスティングされ、またはアクセス可能である他の情報と他の形でやり取り(相互作用)するために、少なくとも部分的にネットワーキング・システム100によってホスティングされまたはアクセス可能であるウェブサイト、ウェブ・
ページ、またはウェブ・アプリケーションにアクセスするために、ウェブ・ブラウザまたは他のユーザ・クライアント・アプリケーションを介してネットワーキング・システム100にアクセスすることができる。特定の実施形態では、ネットワーキング・システム100は、下でより詳細に説明されるように、ユーザ、コンセプト、トピック、および他の情報(データ)を表すグラフ・ノードと、グラフ・ノード同士の間を接続するかその間の関係を定義するグラフ・エッジとを含むグラフを維持する。
図1を参照すると、特定の実施形態で、ネットワーキング・システム100は、ネットワーキング・システム100のユーザへおよびこれから情報を通信する複数のクライアント・サーバまたはウェブ・サーバ104(以下ではクライアント・サーバ104)を含む。たとえば、リモート・ユーザ・コンピューティング・デバイスのユーザは、ロード・バランサまたは他の適切なシステムを介し、ネットワークおよびサービス・プロバイダの任意の適切な組合せを介して、クライアント・サーバ104と通信することができる。クライアント・サーバ104は、ユーザ要求に応答するために構造化文書を生成するためにデータを取り出すために、本明細書で説明されるインデックス・システムおよびデータベース・システムに照会することができる。ネットワーキング・システム100は、1または複数のインデックス・サーバ106を備えるインデックス・レイヤ、1または複数のキャッシュ・サーバを備えるキャッシュ・レイヤ108、ならびに1または複数のデータベース・サーバおよび関連するデータベース管理機能性110を備えるデータベース・レイヤをも備える。データベース110は、一般に、他のクエリ・タイプを処理するための他のキャッシュ・レイヤをそれ自体で含むことができるデータベース・システムを意味する。
各クライアント・サーバ104は、キャッシュ・レイヤ108と通信する。キャッシュ・レイヤ108を、1または複数の分散キャッシュ・クラスタまたは分散キャッシュ・リングとして実施することができる。1実施態様では、キャッシュ・レイヤ108は、ライトスルー/リードスルー・キャッシュ・レイヤであり、すべての読取および書込は、キャッシュ・レイヤをトラバースする、1実装形態では、キャッシュ・レイヤは、関連付け情報を維持し、したがって、そのような情報に関するクエリを処理することができる。他のクエリは、実行のためにデータベース110にパス・スルーされる。特定の実施形態では、データベース110は、関係データベースである。データベース110を、MySQL、および/またはたとえばとりわけHAYSTACK、CASSANDRAなどの任意の適切な関係データベース管理システムとして実施することができる。特定の実施形態では、キャッシュ・レイヤ108は、データベース110の任意の適切な実装形態と相互作用するように動作可能なプラグインを含むことができる。1実装形態では、プラグインは、グラフ・ノードおよびグラフ・エッジとしてキャッシュ・レイヤに格納されたデータを、1または複数のテーブルまたはフラット・ファイルを含む関係データベースに適するクエリおよびコマンドに変換することなど、様々な変換動作を実行する。
特定の実施形態では、ネットワーキング・システム100によって格納される情報は、データベース110およびキャッシュ・レイヤ108内に格納される。特定の実施形態では、各データベース110内に格納される情報は、関係的に(たとえば、MySQLを介してオブジェクトおよびテーブルとして)格納され、同一の情報が、グラフ・ノードと、ノードの間の関連付けまたは接続(以下ではグラフ・エッジと呼ばれる)とを含むグラフの形でキャッシュ・レイヤによって格納される。
特定の実施形態では、各グラフ・ノードまたはオブジェクトには、グラフ内のグラフ・ノードを一意に識別する一意識別子(ID)(以下ではノードIDと呼ばれる)が割り当てられる;すなわち、各ノードIDは、グローバルに一意である。1実装形態では、各ノードIDは、64ビット識別子である。1実装形態では、シャードには、ノードID空間の1セグメントが割り当てられる。
特定の実施形態では、グラフは、ユーザ、ページ、イベント、ウォールポスト、コメント、写真、ビデオ、背景情報、コンセプト、興味、およびノードとして表すのに有用である任意の他の要素など、様々な異なるノードタイプを維持することができる。エッジタイプは、ノード同士の間の関連付けに対応し、友達、フォロワ、サブスクライバ、ファン、いいね(または興味の他の表示)、ウォールポスト、コメント、リンク、提案、推奨、およびノード同士の間の他のタイプの関連付けを含むことができる。1実装形態では、グラフの一部を、ソーシャル・ネットワーク環境のそれぞれのユーザにそれぞれが対応するユーザ・ノードを含むソーシャル・グラフとすることができる。ソーシャル・グラフは、トピックノードだけでなく、それぞれが特定のコンセプトの専用であるかこれを対象とするコンセプト・ノードなどの他のノードをも含むことができる。トピック・ノードは、一時的(ephemeral)であってもなくてもよく、それぞれは、ソーシャル・ネットワーク環境のユーザ同士の間で現在興味を持たれている特定のトピックの専用であるかこれを対象とする。特定の実施形態では、各ノードは、ソーシャル・ネットワーク環境内でホスティングされまたはアクセス可能である対応するウェブ・ページ(「プロファイル・ページ」)を有し、表し、またはこれによって表される。たとえば、ユーザ・ノードは、対応するユーザ・プロファイル・ページを有することができる。対応するユーザ・プロファイル・ページでは、対応するユーザは、コンテンツを追加し、宣言を行い、他の形で彼自身または彼女自身を表現することができる。たとえば、下で説明するように、たとえばユーザ・プロファイル・ページ、コンセプト・プロファイル・ページ、またはトピック・プロファイル・ページなど、ソーシャル・ネットワーク環境内でホスティングされまたはアクセス可能である様々なウェブ・ページは、ユーザが、コンテンツをポストし、ステータス更新をポストし、メッセージをポストし、そのユーザまたは他のユーザによってサブミットされた他のポストに対するコメントを含むコメントをポストし、興味を宣言し、前述のポストならびにページおよび特定のコンテンツのいずれかに向かって「いいね」(下で説明する)を宣言し、あるいは、他の形で彼ら自身を表現するか様々なアクション(以下では、これらおよび他のユーザ・アクションを、集合的に「ポスト」または「ユーザ・アクション」と呼ばれる場合がある)を実行することを可能にする。或る実施形態では、ポスト(posting)は、メディア・コンテンツ(たとえば、写真、ビデオ、音楽、テキストなど)、uniform resource locator(URL)、および他のノードなどの追加コンテンツに、そのそれぞれのプロファイル・ページ、他のユーザ・プロファイル・ページ、コンセプト・プロファイル・ページ、トピック・ページ、または他のウェブ・ページもしくはウェブ・アプリケーションを介してリンクしまたは他の形で参照することを含むことができる。そのようなポスト、宣言、またはアクションを、作成するユーザならびに他のユーザによって可視とする(viewable)ことができる。特定の実施形態では、ソーシャル・グラフは、さらに、それぞれがソーシャル・グラフ内のノードの対応するペアの間(between a corresponding pair)の接続を定義しまたは表す複数のエッジを含む。上で述べたように、コンテンツの各アイテムを、他のノードにリンクされたグラフ内のノードとすることができる。
すぐ上で説明したように、様々な例示的な実施形態では、1または複数の説明されるウェブ・ページまたはウェブ・アプリケーションは、ソーシャル・ネットワーク環境またはソーシャル・ネットワーキング・サービスに関連する。本明細書で使用される時に、「ユーザ」は、そのようなソーシャル・ネットワーク環境とまたはこれを介してやり取りしまたは通信する、個人(人間のユーザ)、エンティティ(たとえば、企業、会社、またはサード・パーティ・アプリケーション)、または(たとえば、個人のまたはエンティティの)グループとすることができる。本明細書で使用される時に、「登録ユーザ」は、ソーシャル・ネットワーク環境内で公式に登録されたユーザを指す(一般に、本明細書で説明されるユーザおよびユーザ・ノードは、登録ユーザだけを指すが、これは、他の実施形態では必ずしも要件ではない;すなわち、他の実施形態では、本明細書で説明されるユーザお
よびユーザ・ノードが、本明細書で説明されるソーシャル・ネットワーク環境に登録されていないユーザを指す場合がある)。特定の実施形態では、各ユーザは、対応する「プロファイル」ページを有し、対応する「プロファイル」ページは、ソーシャル・ネットワーク環境によって格納され、ホスティングされ、またはアクセス可能であり、他のユーザのすべてまたは選択されたサブセットによって可視である。一般に、ユーザは、彼または彼女自身のそれぞれのプロファイル・ページのすべてまたは一部に対する、ならびに潜在的に、たとえば他の可能性の中でも、ホーム・ページ、ウェブ・アプリケーションをホスティングするページを含む特定のユーザによってまたはこれのために作成された他のページに対する管理権を有する。本明細書で使用される時に、「認証されたユーザ」は、そのユーザが管理権を有する対応するプロファイル・ページで主張されるユーザであるものとしてソーシャル・ネットワーク環境によって認証されたユーザを、または代替では、主張されるユーザの適切に信頼される代理人を指す。
2つのユーザ同士またはコンセプト同士の間の接続は、ソーシャル・ネットワーク環境のユーザ同士またはコンセプト同士の間の定義された関係を表すことができ、それに関して関連付けが行われたソーシャル・ネットワーク環境のユーザ、コンセプト、イベント、または他のノードに対応するノード同士の間のエッジとして、ソーシャル・ネットワーク環境の適切なデータ構造内で論理的に定義され得る。本明細書で使用される時に、「friendship」は、ソーシャル・ネットワーク環境のユーザのペアの間の、定義されたソーシャル関係などの関連付けを表す。本明細書で使用される時に、「友達」は、別のユーザが接続、friendship、関連付け、または関係を形成し、2人のユーザの間にエッジを生成させた、ソーシャル・ネットワーク環境の任意のユーザを指すことができる。たとえば、2人の登録ユーザは、たとえば、2人のユーザの一方が、他方のユーザにfriendship要求を送信するか送信させた結果としてfriendshipについて他方を選択することによるなど、明示的にお互いに友達になることができる。その要求について、他方のユーザは、受け入れまたは拒否することができる。代替案では、friendshipまたは他の接続を、自動的に確立することができる。そのようなソーシャルfriendshipを、他のユーザ、特に彼ら自身が登録ユーザの一方または両方の友達であるユーザに可視とすることができる。登録ユーザの友達は、登録ユーザのプロファイルまたは他のページ上のコンテンツ、特にユーザ生成コンテンツまたは宣言されたコンテンツに対する高められたアクセス特権(increased access privileges)を有することもできる。しかし、ソーシャル・グラフ内で彼らの間に友達接続を確立させた2人のユーザが、実生活(ソーシャル・ネットワーキング環境の外部)では必ずしも(通常の意味での)友達ではない場合があることに留意されたい。たとえば、或る実装形態で、あるユーザが、会社または他の人間以外のエンティティであり、したがって、この単語の伝統的な意味で、人間のユーザの友達になることができない場合がある。
本明細書で使用される時に、「ファン」は、特定のユーザ、ウェブ・ページ、ウェブ・アプリケーション、またはソーシャル・ネットワーク環境内でアクセス可能な他のウェブ・コンテンツのサポータまたはフォロワであるユーザを指すことができる。特定の実施形態では、あるユーザが特定のウェブ・ページのファンである(特定のウェブ・ページを「愛好する(動詞のfan)」)時に、そのユーザを、他の登録ユーザまたは一般大衆が見るために、ファンとしてそのページ上でリストすることができる。さらに、ユーザのアバタまたはプロファイル写真を、そのページに(または、下で説明されるページのいずれかの中/上に)示すことができる。本明細書で使用される時に、「いいね」は、ユーザ、特に登録ユーザまたは認証されたユーザが、限定ではなく例として、彼または彼女がそれを「いいね」と思い、そのファンであり、それを支持し、楽しみ、または他の形で肯定的に捉えていることを宣言しまたは他の形で実証した、他の可能性の中でもポスト、コメント、興味、リンク、媒体(たとえば、写真、写真アルバム、ビデオ、音楽など)コンセプト
、エンティティ、またはページなどのものを指すことができる(或る実装形態では、ユーザは、ソーシャル・ネットワーク・システムまたはソーシャル・ネットワーク環境によってホスティングされまたはアクセス可能である任意のページに対して、いいねまたは事実上何でも示しまたは宣言することができる)。1実施形態では、「いいね」を示しもしくは宣言することまたはユーザがあるものの「ファン」であることを示しもしくは宣言することを、ソーシャル・ネットワーキング環境内で同等に処理し、定義することができ、交換可能に使用することができる。同様に、自分自身がコンセプトもしくはコンセプト・プロファイル・ページなど、何かの「ファン」であると宣言することまたは自分自身が或ることを「いいね」と思うことを宣言することを、ソーシャル・ネットワーキング環境内で同等に定義し、本明細書で交換可能に使用することができる。さらに、本明細書で使用される時に、「興味」は、ユーザのプロファイル・ページ内で提示される、ユーザの宣言した興味など、ユーザが宣言した興味を指すことができる。本明細書で使用される時に、「欲しい(want)」は、ユーザが欲しがる事実上すべてのものを指すことができる。上で説明したように、「コンセプト」は、たとえば、スポーツ、スポーツ・チーム、音楽のジャンル、作曲家、趣味、会社(企業)、エンティティ、グループ、有名人、登録ユーザではない人、またはイベント、或る実施形態では別のユーザ(たとえば、認証されないユーザ)、その他などへの興味、いいねと思う気持ち、または関係をユーザが宣言しまたは他の形で実証できる事実上すべてのものを指すことができる。たとえば、複数のユーザのうちの1または複数(たとえば、ジェリー・ライス以外)によって作成され、管理される、有名なプロ・フットボール・プレイヤである「ジェリー・ライス」のコンセプト・ノードおよびコンセプト・プロファイル・ページがあると同時に、ソーシャル・グラフが、さらに、ジェリー・ライス自身(またはジェリー・ライスの信頼されもしくは認可された代理人)によって作成され、管理されるジェリー・ライスのユーザ・ノードおよびユーザ・プロファイル・ページを含む場合がある。
例示的なグラフ構造では、データ・オブジェクトは、複数の属性を含む。属性を、name−value(名前/値)ペアとすることができる。たとえば、或る人に対応するデータ・オブジェクトは、次の属性を含むことができる。

“id”:12345,# 64ビット FBid
“type”:person,# integer型または文字列名とすることができる“created”:1253665137,
“name”:”Papa Smurf”,
“username”:”papa_smurf”,
“gender”:”male”,
“emails”:[”psmurf@facebook.com”,”papasmurf@gmail.com”]

データ・オブジェクト識別子(id)は、オブジェクトが作成される時に割り当てられる64ビット値とされることができる。データ・オブジェクトの属性を、1または複数のインデックス・サーバ106によって維持される検索インデックス内で解析し、維持することができる。たとえば、新しいデータ・オブジェクトが作成される時に、タームプロデューサ・モジュールは、前述のデータ・オブジェクトから次のタームを作成することができる。
type:person
created:1253665137
name:papa
name:smurf
username:papa_smurf
gender:male|
emails:psmurf@facebook.com
emails:papasmurf@gmail.com
文書識別子(docid)は、タイム・スタンプ(32ビット・カウンタまたはクロック値など)および対応するデータ・オブジェクトのデータ・オブジェクト識別子(id)を含むことができる。これらのタームを、対応するdocidに関連して1または複数のインデックス内に格納することができる。たとえば、例示的な検索インデックス内で、docidは、オブジェクトIDおよび「created」タイム・スタンプから生成され、その結果、すべてのポスティング・リストが、逆年代順に(chronologically順序付けられる(概念的には、docidは「created(32ビット):OBid(64ビット)」である)。タイム・スタンプ(created)は、データ・オブジェクトが最初に作成された時刻に対応する。他の実装形態では、タイム・スタンプは、所与のデータ・オブジェクトが最後に変更された時刻に対応することができる。1実装形態では、インデックスのdocidは、所与の検索の結果を作成時刻によって逆年代順に順序付けることができるように構成される。たとえば、この方式に基づけば、検索、name:smurf type:personは、名前「smurf」を有するすべての人を、その人に関連するデータ・オブジェクトが作成された時刻によって逆年代順に)順序付けて返す。他の実施形態では、オブジェクトをある他の基礎で順序付けることが望まれる場合に、任意の32ビット・ソート・キーをタイム・スタンプの代わりに使用することができる。
オブジェクト同士の間の関連付け(エッジ)を、概念上、「エッジ・オブジェクト」と呼ばれるデータ・オブジェクトとしてモデル化し、格納することができる。したがって、インデックスは、人などのデータ・オブジェクト、およびソーシャル・ネットワークの検索を容易にするエッジ関係または他のグラフ関連情報に対応する他のオブジェクトに対応するエントリを格納することができ、これによって、システム性能を高める。次のデータ・オブジェクトは、上のpersonオブジェクト(id 12345)と、音楽グループ(Coldplay)に対応する別のデータ・オブジェクト(id 67890)との間のタイプ「fan(ファン)」の関連付けに対応する。

“id”:92821,
“type”:connection.fan,
“created”:1253665248,
“source”:12345,# Papa Smurf
“dest”:67890 # Coldplay

エッジは、ソース・オブジェクトおよび宛先オブジェクトに関連する、検索インデックス内の特殊なタームを生成することができる。たとえば、検索クエリconnection.fan.to(67890)は、すべてのColdplay(docid 67890)ファンに関連する文書識別子を返す。同様に、検索クエリconnection.fan.from(12345)は、人(id 12345)がそのファン関連付けを確立したすべてのデータ・オブジェクトに関する文書識別子を返す。この構文を使用して、アプリケーションは、次のクエリを用いて、ある人の友達または他の接続からのすべてのステータス更新を見つけることができる。
connection.from(12345)type:status
追加の例として、次の検索クエリは、やはりColdplayファンである、ある人(id 12345)の友達のすべてを返す。
connection.friend.from(12345)connection.fan.to(67890)
データ・オブジェクトに、属性を用いて別のオブジェクトを直接に「ポイント」させることが可能なので、あるタイプの関連付けを、別々のエッジ・オブジェクトなしで作成す
ることができる。たとえば、ステータス・メッセージとユーザとの間の「所有者」エッジ・オブジェクトを有するのではなく、ステータス・オブジェクトが、作成するユーザに対応するデータ・オブジェクトの値を有するowner(所有者)属性を含むことができる。たとえば、

“id”:5834639,
“type”:”status.message”,
“text”:”doing nothing”,
“owner”:12345,

1実装形態では、インデックス・サーバ106は、クエリ構成を介するグラフ・トラバーサル(graph traversal)に関する単純な構文をサポートする。たとえば、次の検索クエリは、ある人(id 12345)の友達の友達のすべてを返す:connection.friend.from(connection.friend.from(12345))。
この場合に、インデックス・サーバは、まず、内部クエリconnection.friend.from(12345)を実行する。次に、この内部クエリによって返される文書識別子が、外部プレフィックスに適用され、その結果、この式全体が、その人の友達のすべてに関するタームからのconnection.fromのORに展開されるようになる。
このクエリ構成構文を使用して、様々なクエリを構成することができる。たとえば、次の検索は、その人(id 12345)の友達を識別するタグを有し、スタンフォード(Stanford)ネットワーク内にある写真のすべてを返す:connection.tag.from(connection.friend.from(12345)network:stanford)type:photo。内部クエリ構文は、エッジだけではなく、すべてのプロパティに適用される。たとえば、「author(作成者)」が、ステータス・メッセージの属性であると仮定すると、次の検索は、その人(id 12345)の友達からのすべてのステータス・メッセージを返す:author(connection.friend.from(12345))type:status。さらに、次の検索クエリは、Papaという名前の人からのすべてのステータス・メッセージを返す:author(name:papa type:person)type:status。さらに、次の検索クエリは、その人(id 12345)の作成された友達接続を逆年代順で返す:source(connection.friend.from(12345))type:connection。
インデックス・サーバ106は、クエリに応答して文書識別子を返し、クライアント工程104は、この文書識別子を使用して、データベース110またはキャッシュ・レイヤ108などのデータ・ストア内に格納された対応するデータ・オブジェクトにアクセスすることができる。1実装形態では、上で述べたタームプロデューサ・モジュールが、データ・オブジェクトの属性から検索インデックスのタームを生成する。タームプロデューサは、入力としてオブジェクトをとり、どのタームをそのデータ・オブジェクトについてインデクシングしなければならないのかを示す(docid,ターム)ペアの集合(set)を出力する。1実装形態では、タームプロデューサ・モジュールのタイプまたは挙動は、挿入されるオブジェクトのタイプに基づいて選択される。たとえば、メッセージを伝える目的のために、タームプロデューサ・モジュールが、次のエッジ・オブジェクトを処理するために呼び出されたと仮定する。

“id”:92821,
“type”:”connection.fan”,
“created”:1253665248,
“source”:12345,# Papa Smurf
“dest”:67890 # Coldplay

接続タームプロデューサ・モジュールは、インデックスへの挿入のために次のタームを作ることができる。
(92821,”type:connection.fan”)# エッジ文書
(92821,”source:12345”)
(92821,”dest:67890”)
(12345,”connection.fan.to:67890”)# Papa Smurfの文書
(12345,”connection.to:67890”)
(67890,”connection.fan.from:12345”)# Coldplayの文書
(67890,”connection.from:12345”)
図4に、本発明の実装形態に従って構成されたシステム内での新しいオブジェクトの作成および格納に関連する例示的な方法を示す。図4は、新しいオブジェクトについて、オブジェクト作成工程が、新しい文書識別子(docid)を生成することを示し、この文書識別子は、作成タイム・スタンプ(created)コンポーネントおよびオブジェクト識別子コンポーネント(上を参照されたい)を含む(402)。その後、1または複数のタームプロデューサ・モジュールを呼び出して、オブジェクトのタイプに基づいてdocid/タームペア(docid−term pairs)を作成する(404)。その後、オブジェクト作成工程は、インデックス・サーバ106によって維持される1または複数のインデックスにdocid/タームペアを挿入し(406)、データベース110にオブジェクトを書き込む(408)。或る実装形態では、各docid/タームペアを、所与のインデックス内で別々のエントリとして維持することができる。他の実装形態では、或るdocid/タームペアのdocidを、同一のタームを有する既存のインデックス・エントリに追加することができる。たとえば、Coldplay(docid 67890)の新しいファンに対応するオブジェクトの文書識別子(たとえば、docid
12345)を、ターム「connection.to:67890」および/または「connection.fan.to:67890」を有する1または複数の既存のインデックス・エントリに追加することができる。
タームプロデューサ・モジュールを更新することができ、すべての新しいオブジェクトは、タームプロデューサからの新しいタームをインデクシングする。さらに、更新工程は、毎日MapReduceジョブ内でインデックス全体を再生成することもでき、その結果、すべての古いオブジェクトは、新しいタームを用いて更新されるようになる。インデックス再構築を、非正規化を介して性能を改善する機構として使用することができる。多くのストレージ・システムは、性能を改善するために、アプリケーション・レベルでデータの非正規化を必要とする。タームプロデューサは、非正規化判断をより動的にすることを可能にし、クエリ・パターンが変化する時のこれらの判断に対する変更を容易にする。さらに、非正規化構成に対する変更は、基礎になるデータがデータベース110に永続的に格納される形に対する変更を必要としない。たとえば、ページを生成するスクリプト(home.php)が、友達からのステータス・メッセージを得るために次の検索を頻繁に実行すると仮定する:author(connection.from(UID))type:status。性能が、クエリの量およびtype:statusポスティング・リストのサイズのゆえに問題になる場合には、結果が単一の、より小さいポスティング・リストまたはインデックスになるようにするために、タームプロデューサ・モジュールを、authorおよびtypeのコンポジット・タームを出力するためにステータス・
メッセージについて追加するか更新することができる。たとえば、タームプロデューサ・モジュールを、下記など、ステータス・オブジェクトについて追加のタームを追加するように構成することができる。

“id”:321224,
“type”:”status”,
“created”:1253665137,
“message”:”...”,
“author”:12345

タームプロデューサ・モジュールは、追加のターム(321224,”status:author:12345”)を出力するように、更新されることができる。ページを生成するスクリプトは、クエリがstatus:author(connection.from(UID))と表されるように、更新されることができる。さらに、下でより詳細に説明するように、レプリケーション・インデックスの集合は、さらなる性能改善のために特定のタームについて作成されることができる。この方式の1つの特定の利点は、非正規化判断を、簡単に変更でき、アプリケーション・レベルで行う必要がないことである。これは、開発者が、概念的に最も論理的な形でデータを格納できることを意味する。クエリ性能を、これらのアプリケーション・レベル判断とは相対的に独立の形でチューニングすることができ、アプリケーションを、より綺麗で理解し易く、経時的な更新がより簡単なものにする。
1実装形態では、検索インデックスは、文書識別子(docid)によってシャーディングされる。たとえば、図1に示されているように、インデックス・レイヤは、ルート・サーバ106aおよび複数のリーフ・サーバ106bを含むインデックス・サーバの階層構成によって実施されることができる。1実装形態では、各リーフ・サーバ106bには、1または複数のシャードが割り当てられる。もう1つの実装形態では、クラスタまたはリング・トポロジを使用することができる。デフォルトでは、すべてのシャードに並列にクエリを送信し、結果をミキサまたはルート・インデックス・サーバ106a内でマージすることによって検索を実行することができる。1実装形態では、シャードには、文書識別子空間の1セグメントが割り当てられる。特定の実施形態では、各文書識別子(docid)は、一意の対応するシャードIDにマッピングされる(たとえば、算術的にまたは何らかの数学関数を介して)。したがって、特定のターム(たとえば、「connection.fan.from:12345」)を、オブジェクトColdplay(docid 67890)が対応する1つのシャード内と、人(docid12345)が「ファン」接続をも確立した他のオブジェクトの対応する他のシャード内とで維持することができる。1実装形態では、インデックス・サーバ106のそれぞれには、それらが維持する責任を負うシャードIDの集合が割り当てられる。この割当を調整して、システムにインデックス・サーバ106を追加しまたは除去することができる。
すべてのシャードにすべてのクエリを送ることは、計算的に高価である可能性があり、システムの全体的なクエリ・レートを制限する可能性がある。1実装形態では、インデックス・サーバ106によって実施されるインデックス・レイヤは、インデックス・システム内のタームのサブセットをインデクシングするのみである特殊なレプリケーション・インデックスをサポートする。たとえば、主インデックスまたはマスタ・インデックスに加えて、インデックス・レイヤは、1または複数の特定のクエリ・タイプに適合される1または複数の追加のレプリケーション・インデックスを含むことができる。たとえば、クエリconnection.from(*)が、システム内で極端に一般的なクエリであると仮定する。本明細書で説明されるインデクシング・システムを、すべてのconnection.fromタームが、これらのタームだけを含む追加のレプリケーション・イン
デックス内でレプリケーションされるように構成することができる。次のコマンドは、そのようなレプリケーション・インデックスの作成を可能にする、例示的なアプリケーション・プログラミング・インターフェースを示す。
replicas = {
“connection.from:*”:[...],#専用のconnectionレプリケーション
“email:*”:[...],#電子メール検索レプリケーション
“*”:[...],#主レプリケーション

インデックス・サーバ106は、クエリを実行する時に、検索を満足できる最小のレプリケーション・インデックスを選択する。たとえば、クエリconnection.from(12345)を、connection.fromレプリケーション・インデックス専用であるインデックス・サーバに転送することができる。その一方で、connection.from(12345)type:pageなどの、より包括的なまたはより幅広い検索は、主インデックスまたは両方のタームをサポートする別のレプリケーション上で実行される。しかし、ある種のクエリの性能を改善するためのタームによるシャーディングに反対する、理論的理由はない。この設計の利点は、システムが、すべてのクエリをサポートでき、最も重要なクエリに関する最適のスループットおよび性能のためにチューニングされ得ることである。クエリが十分に一般的になった後に、管理者は、クエリのそのクラスを満足することに専用のレプリケーションのセットを作成することによって、クエリ・レートを高めるためにシステムをチューニングすることができる。これは、まず必要なすべてのクエリを実行するようにネットワーク・アプリケーションを構成することができるという点で、アプリケーション開発を単純にする。アプリケーションを起動する前に、アプリケーション開発中に作成されたクエリの構造に基づいて性能を改善するために、レプリケーション・インデックスを作成することができる。
図2に、サーバ22a、22bを実施するのに使用できる、例示的なコンピューティングシステム・アーキテクチャを示す。1実施形態では、ハードウェア・システム1000は、プロセッサ1002、キャッシュ・メモリ1004、ならびに、有形のコンピュータ可読媒体上に格納された、明細書で説明される機能を対象とする、1または複数の実行可能モジュールおよびドライバを備える。さらに、ハードウェア・システム1000は、高性能入出力(I/O)バス1006および標準I/Oバス1008を含む。ホスト・ブリッジ1010は、プロセッサ1002を高性能I/Oバス1006に結合し、I/Oバス・ブリッジ1012は、2つのバス1006および1008をお互いに結合する。システム・メモリ1014および1または複数のネットワーク/通信インターフェース1016は、バス1006に結合される。ハードウェア・システム1000は、さらに、ビデオ・メモリ(図示せず)およびビデオ・メモリに結合された表示デバイスを含むことができる。マス・ストレージ1018およびI/Oポート1020は、バス1008に結合される。ハードウェア・システム1000は、オプションで、キーボードおよびポインティング・デバイスと、バス1008に結合された表示デバイス(図示せず)とを含むことができる。集合的に、これらの要素は、米国カリフォルニア州サンタ・クララのインテル(Intel Corporation)によって製造されるx86互換プロセッサおよび米国カリフォルニア州サニーベールのアドバンスド・マイクロ・デバイセズ(Advanced Micro Devices(AMD),Inc.)によって製造されるx86互換プロセッサ、ならびに任意の他の適切なプロセッサに基づく汎用コンピュータ・システムを含むがこれに限定されないコンピュータ・ハードウェア・システムの広いカテゴリを表すことが意図されている。
ハードウェア・システム1000の要素を、下でより詳細に説明する。具体的には、ネットワーク・インターフェース1016は、ハードウェア・システム1000と、ETH
ERNET(登録商標)(たとえば、IEEE 802.3)ネットワーク、バックプレーン、その他など、広範囲のネットワークのいずれかとの間の通信を提供する。マス・ストレージ1018は、サーバ22a、22b内で実施される上で説明した機能を実行するためのデータおよびプログラミング命令の永久ストレージを提供し、システム・メモリ1014(たとえば、DRAM)は、プロセッサ1002によって実行される時にデータおよびプログラミング命令の1次ストレージを提供する。I/Oポート1020は、ハードウェア・システム1000に結合され得る追加の周辺デバイスの間の通信を提供する、1または複数のシリアル通信ポートおよび/またはパラレル通信ポートである。
ハードウェア・システム1000は、様々なシステム・アーキテクチャを含むことができ、ハードウェア・システム1000の様々なコンポーネントを、再配置することができる。たとえば、キャッシュ1004を、プロセッサ1002と共にオンチップとすることができる。その代わりに、キャッシュ1004およびプロセッサ1002を、「プロセッサ・モジュール」として一緒にパックすることができ、プロセッサ1002は、「プロセッサ・コア」と呼ばれる。さらに、本発明のある種の実施形態は、上記のコンポーネントのすべてを必要としまたは含むのではない場合がある。たとえば、標準I/Oバス1008に結合されて図示された周辺デバイスを、高性能I/Oバス1006に結合することができる。さらに、或る実施形態では、単一のバスだけが存在する場合があり、ハードウェア・システム1000のコンポーネントは、その単一のバスに結合される。さらに、ハードウェア・システム1000は、追加のプロセッサ、ストレージ・デバイス、またはメモリなど、追加のコンポーネントを含むことができる。
1実装形態では、本明細書で説明される実施形態の動作は、ハードウェア・システム1000によって実行される一連の実行可能モジュールとして、分散コンピューティング環境内で個別にまたは集合的に実施される。特定の実施形態では、1組のソフトウェア・モジュールおよび/またはドライバが、ネットワーク通信プロトコル・スタック、ブラウジング機能および他のコンピューティング機能、最適化工程、ならびに類似物を実施する。前述の機能モジュールを、ハードウェア、コンピュータ可読媒体上に格納された実行可能モジュール、またはこの両方の組合せによって実現することができる。たとえば、機能モジュールは、プロセッサ1002など、ハードウェア・システム内のプロセッサによって実行される複数のまたは一連の命令を備えることができる。当初に、一連の命令を、マス・ストレージ1018などのストレージ・デバイス上に格納することができる。しかし、一連の命令を、ディスケット、CD−ROM、ROM、EEPROM、その他などの任意の適切な記憶媒体上に有形に格納することができる。さらに、一連の命令を、ローカルに格納する必要はなく、ネットワーク/通信インターフェース1016を介して、ネットワーク上のサーバなどのリモート・ストレージ・デバイスから受信することができる。命令は、マス・ストレージ1018などのストレージ・デバイスからメモリ1014にコピーされ、その後、プロセッサ1002によってアクセスされ、実行される。
オペレーティング・システムは、ソフトウェア・アプリケーション(図示せず)へおよびソフトウェア・アプリケーションからのデータの入力および出力を含む、ハードウェア・システム1000の動作を管理し、制御する。オペレーティング・システムは、システム上で実行されつつあるソフトウェア・アプリケーションとシステムのハードウェア・コンポーネントとの間のインターフェースを提供する。LINUX(登録商標)オペレーティング・システム、米国カリフォルニア州クパティーノのアップル・コンピュータ(Apple Computer Inc.)から入手可能なApple Macintoshオペレーティング・システム、UNIX(登録商標)オペレーティング・システム、マイクロソフト(Microsoft)(登録商標)Windows(登録商標)オペレーティング・システム、BSDオペレーティング・システム、および類似物など、任意の適切なオペレーティング・システムを使用することができる。もちろん、他の実装形態が可能
である。たとえば、本明細書で説明されるニックネーム生成機能を、ファームウェア内または特定用途向け集積回路上で実施することができる。
さらに、上で説明した要素および動作は、記憶媒体上に格納される命令からなるものとすることができる。命令を、処理システムによって取り出し、実行することができる。命令の或る例は、ソフトウェア、プログラム・コード、およびファームウェアである。記憶媒体の或る例は、メモリ・デバイス、テープ、ディスク、集積回路、およびサーバである。命令は、処理システムによって実行される時に、本発明に従って動作するように処理システムに指示するように動作可能である。用語「処理システム」は、単一の処理デバイスまたは相互動作可能な処理デバイスのグループを指す。処理デバイスの或る例は、集積回路および論理回路網である。当業者は、命令、コンピュータ、および記憶媒体を熟知している。
本開示は、当業者が理解するはずの、本明細書の例示的な実施形態に対するすべての変更、置換、変形、改変、および修正を包含する。同様に、適当である場合には、添付の特許請求の範囲は、当業者が理解するはずの、本明細書の例示的な実施形態に対するすべての変更、置換、変形、改変、および修正を包含する。たとえば、本発明の実施形態は、ソーシャル・ネットワーキング・ウェブサイトに関連して動作するものとして説明されたが、本発明を、ウェブ・アプリケーションをサポートし、関連付けのグラフとしてデータをモデル化する任意の通信ファシリティに関連して使用することができる。さらに、或る実施形態では、用語「ウェブ・サービス」および「ウェブサイト」が、交換可能に使用される場合があり、さらに、サーバに直接にAPI呼出しを行う、モバイル・デバイス(たとえば、セルラ電話機、スマートホン、パーソナルGPS、携帯情報端末、パーソナル・ゲーミング・デバイスなど)などのデバイス上のカスタムAPIまたは一般化されたAPIを指すことができる。

Claims (18)

  1. オンライン・ソーシャル・ネットワークの1以上のインデックスサーバによる方法であって、前記方法は、
    第1のエッジタイプタームと第1のオブジェクト識別子とを備える検索クエリを、前記オンライン・ソーシャル・ネットワークのクライアント・サーバから受信するステップと、
    前記1以上のインデックスサーバにおいて前記オンライン・ソーシャル・ネットワークに関連付けられている1以上のインデックスにアクセスするステップであって、各インデックスは、1以上のデータオブジェクトを備え、前記データオブジェクトは、
    1以上のノードオブジェクトと、
    1以上のエッジオブジェクトと、を備える、ステップと、
    前記第1のエッジタイプタームによって指定されたエッジタイプを有し、前記検索クエリの前記第1のオブジェクト識別子に対応している宛先ノードを有する、エッジオブジェクトの第1のセットを識別するステップと、
    エッジオブジェクトの前記第1のセットのソースノードである、ノードオブジェクトの第2のセットを識別するステップと、
    前記第2のセットの前記1以上のノードオブジェクトのオブジェクト識別子を、前記クライアント・デバイスに送信するステップと、を備える方法。
  2. 前記第2のセットの前記1以上のノードオブジェクトの前記第1のオブジェクト識別子は、前記1以上のノードオブジェクトに関連付けられている、タイム・スタンプおよびデータオブジェクト識別子を備える、請求項1に記載の方法。
  3. 前記タイム・スタンプは、
    前記ノードオブジェクトが最初に作成されたときの時刻、および、
    前記ノードオブジェクトが最後に変更されたときの時刻、
    のうちの1以上を備える、請求項2に記載の方法。
  4. 前記第2のセットの前記1以上のノードオブジェクトは、前記ノードオブジェクトが作成されたときの前記時刻に基づいて、逆年代順に順序付けられる、請求項3に記載の方法。
  5. 前記第2のセットの前記1以上のノードオブジェクトは、前記ノードオブジェクトが最後に変更されたときの前記時刻に基づいて、逆年代順に順序付けられる、請求項3に記載の方法。
  6. 前記第1のエッジタイプタームは、前記1以上のデータオブジェクトのソースノードオブジェクトと宛先ノードオブジェクトとの間の関連付けのタイプを定義する、請求項1に記載の方法。
  7. 前記ソースノードオブジェクトと前記宛先ノードオブジェクトとの間の関連付けの前記タイプは、前記オンライン・ソーシャル・ネットワークのソーシャルグラフに基づいて、決定され、前記ソーシャルグラフは、複数のノードと、前記ノード同士を接続する複数のエッジとを含み、前記ノードの2つの間の前記エッジの各々は、それらの間の単一の分離度を表し、前記ノードは、複数のユーザノードと、複数のコンセプトノードとを備え、
    前記複数のノードの各々は、1以上のノードオブジェクトに対応しており、前記複数のエッジの各々は、1以上のエッジオブジェクトに対応している、請求項6に記載の方法。
  8. 各ノードオブジェクトは、ノードオブジェクト識別子とノードオブジェクトタイプとを
    有する、請求項1に記載の方法。
  9. 各エッジオブジェクトは、1つのエッジオブジェクト識別子、1つのエッジオブジェクトタイプ、1つのエッジオブジェクトソース識別子、および、1つのエッジオブジェクト宛先識別子を有する、請求項8に記載の方法。
  10. ノードオブジェクトの前記第2のセットを識別する前記ステップは、各々が、エッジオブジェクトの前記第1のセットの1つのエッジオブジェクトのエッジオブジェクトソース識別子に一致するノードオブジェクト識別子を有する、1以上のノードオブジェクトを決定するステップを備える、請求項9に記載の方法。
  11. 前記検索クエリは、第2のエッジタイプタームと第2のオブジェクト識別子との第2の組合せに関連して、前記第1のエッジタイプタームと前記第1のオブジェクト識別子との第1の組合せを備える、請求項1に記載の方法。
  12. 前記第2のエッジタイプタームによって指定されたエッジタイプを有し、前記検索クエリの前記第2のオブジェクト識別子に対応している宛先ノードを有する、エッジオブジェクトの第3のセットを識別するステップと、
    エッジオブジェクトの前記第3のセットのソースノードであるノードオブジェクトの第4のセットを識別するステップと、
    ノードオブジェクトの前記第2のセットと、ノードオブジェクトの前記第4のセットとの両方においてソースノードを含む、ノードオブジェクトの第5のセットを識別するステップと、
    前記第5のセットの1以上のノードオブジェクトのオブジェクト識別子を、前記クライアント・サーバに送信するステップと、をさらに備える、請求項11に記載の方法。
  13. 前記検索クエリは、第2のエッジタイプタームの関数として、前記第1のエッジタイプタームと前記第1のオブジェクト識別子との組合せを備える、請求項1に記載の方法。
  14. 前記第2のエッジタイプタームによって指定されたエッジタイプを有し、前記第2のセットの前記ノードオブジェクトの1以上の前記オブジェクト識別子に対応している宛先ノードを有する、エッジオブジェクトの第3のセットを識別するステップと、
    エッジオブジェクトの前記第3のセットのソースノードであるノードオブジェクトの第4のセットを識別するステップと、
    前記第4のセットの前記1以上のノードオブジェクトのオブジェクト識別子を、前記クライアント・サーバに送信するステップと、をさらに備える、請求項13に記載の方法。
  15. 前記クライアント・サーバは、前記第2のセットの前記ノードオブジェクトの前記オブジェクト識別子を使用して、前記オンライン・ソーシャル・ネットワークのデータストアに格納されている対応するデータオブジェクトにアクセスする、請求項1に記載の方法。
  16. 前記対応するデータオブジェクトは、タームプロデューサ・モジュールに入力され、前記データオブジェクトに関連付けられている1以上のタームを生成する、請求項15に記載の方法。
  17. ソフトウェアを含む1以上の非一時的コンピュータ可読記憶媒体であって、実行されるとき、
    第1のエッジタイプタームとオブジェクト識別子とを備える検索クエリを、オンライン・ソーシャル・ネットワークのクライアント・サーバから受信するステップであって、前記オンライン・ソーシャル・ネットワークは、1以上のインデックスサーバを備える、ス
    テップと、
    前記1以上のインデックスサーバにおいて前記オンライン・ソーシャル・ネットワークに関連付けられている1以上のインデックスにアクセスするステップであって、各インデックスは、1以上のデータオブジェクトを備え、前記データオブジェクトは、
    1以上のノードオブジェクトと、
    1以上のエッジオブジェクトと、を備える、ステップと、
    前記エッジタイプタームによって指定されたエッジタイプを有し、前記検索クエリの前記オブジェクト識別子に対応している宛先ノードを有する、エッジオブジェクトの第1のセットを識別するステップと、
    エッジオブジェクトの前記第1のセットのソースノードである、ノードオブジェクトの第2のセットを識別するステップと、
    前記第2のセットの前記1以上のノードオブジェクトのオブジェクト識別子を、前記クライアント・デバイスに送信するステップと、が行われるように構成される、記憶媒体。
  18. 1以上のプロセッサと、前記プロセッサに結合され、前記プロセッサによって実行可能な命令を含む、非一時的メモリとを含む、システムであって、前記プロセッサは、前記命令が実行されるとき、
    第1のエッジタイプタームとオブジェクト識別子とを備える検索クエリを、オンライン・ソーシャル・ネットワークのクライアント・サーバから受信するステップであって、前記オンライン・ソーシャル・ネットワークは、1以上のインデックスサーバを備える、ステップと、
    前記1以上のインデックスサーバにおいて前記オンライン・ソーシャル・ネットワークに関連付けられている1以上のインデックスにアクセスするステップであって、各インデックスは、1以上のデータオブジェクトを備え、前記データオブジェクトは、
    1以上のノードオブジェクトと、
    1以上のエッジオブジェクトと、を備える、ステップと、
    前記エッジタイプタームによって指定されたエッジタイプを有し、前記検索クエリの前記オブジェクト識別子に対応している宛先ノードを有する、エッジオブジェクトの第1のセットを識別するステップと、
    エッジオブジェクトの前記第1のセットのソースノードである、ノードオブジェクトの第2のセットを識別するステップと、
    前記第2のセットの前記1以上のノードオブジェクトのオブジェクト識別子を、前記クライアント・デバイスに送信するステップと、が行われるように構成される、システム。
JP2017132657A 2010-12-30 2017-07-06 グラフ・データのコンポジットタームインデックス Active JP6326532B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201061428615P 2010-12-30 2010-12-30
US61/428,615 2010-12-30
US13/228,312 US8527497B2 (en) 2010-12-30 2011-09-08 Composite term index for graph data
US13/228,312 2011-09-08

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2016130284A Division JP6174762B2 (ja) 2010-12-30 2016-06-30 グラフ・データのコンポジットタームインデックス

Publications (2)

Publication Number Publication Date
JP2017211999A true JP2017211999A (ja) 2017-11-30
JP6326532B2 JP6326532B2 (ja) 2018-05-16

Family

ID=46383463

Family Applications (4)

Application Number Title Priority Date Filing Date
JP2013547485A Active JP5451954B1 (ja) 2010-12-30 2011-11-30 グラフ・データのコンポジット・ターム・インデックスを有する装置およびその方法
JP2013270392A Active JP5964808B2 (ja) 2010-12-30 2013-12-26 グラフ・データのコンポジットタームインデックス方法、コンピュータ可読媒体、およびシステム
JP2016130284A Active JP6174762B2 (ja) 2010-12-30 2016-06-30 グラフ・データのコンポジットタームインデックス
JP2017132657A Active JP6326532B2 (ja) 2010-12-30 2017-07-06 グラフ・データのコンポジットタームインデックス

Family Applications Before (3)

Application Number Title Priority Date Filing Date
JP2013547485A Active JP5451954B1 (ja) 2010-12-30 2011-11-30 グラフ・データのコンポジット・ターム・インデックスを有する装置およびその方法
JP2013270392A Active JP5964808B2 (ja) 2010-12-30 2013-12-26 グラフ・データのコンポジットタームインデックス方法、コンピュータ可読媒体、およびシステム
JP2016130284A Active JP6174762B2 (ja) 2010-12-30 2016-06-30 グラフ・データのコンポジットタームインデックス

Country Status (10)

Country Link
US (4) US8527497B2 (ja)
EP (1) EP2659402B1 (ja)
JP (4) JP5451954B1 (ja)
KR (1) KR101419828B1 (ja)
CN (2) CN103348344B (ja)
AU (3) AU2011353034B2 (ja)
BR (1) BR112013016926A2 (ja)
CA (4) CA2823146C (ja)
MX (3) MX350594B (ja)
WO (1) WO2012091844A1 (ja)

Families Citing this family (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8516063B2 (en) 2010-02-12 2013-08-20 Mary Anne Fletcher Mobile device streaming media application
US8527497B2 (en) * 2010-12-30 2013-09-03 Facebook, Inc. Composite term index for graph data
US8832111B2 (en) * 2010-12-30 2014-09-09 Facebook, Inc. Distributed cache for graph data
US8863153B2 (en) * 2011-09-13 2014-10-14 Sap Se Situational recommendations in heterogenous system environment
KR20130049111A (ko) * 2011-11-03 2013-05-13 한국전자통신연구원 분산 처리를 이용한 포렌식 인덱스 방법 및 장치
US8682932B2 (en) 2012-02-16 2014-03-25 Oracle International Corporation Mechanisms for searching enterprise data graphs
US8700673B2 (en) * 2012-02-16 2014-04-15 Oracle International Corporation Mechanisms for metadata search in enterprise applications
US8484208B1 (en) 2012-02-16 2013-07-09 Oracle International Corporation Displaying results of keyword search over enterprise data
US8935255B2 (en) * 2012-07-27 2015-01-13 Facebook, Inc. Social static ranking for search
US8825711B2 (en) * 2012-08-13 2014-09-02 Magnet Systems, Inc. Managing cross-correlated data
JP5959405B2 (ja) * 2012-10-30 2016-08-02 株式会社Uacj アルミニウム合金箔
US9576007B1 (en) 2012-12-21 2017-02-21 Google Inc. Index and query serving for low latency search of large graphs
US8935271B2 (en) * 2012-12-21 2015-01-13 Facebook, Inc. Extract operator
US9659043B2 (en) * 2013-02-07 2017-05-23 Enigma Technologies, Inc. Data system and method
US9171063B2 (en) * 2013-03-13 2015-10-27 Facebook, Inc. Short-term hashes
US9712608B2 (en) * 2013-03-14 2017-07-18 Microsoft Technology Licensing, Llc Elastically scalable document-oriented storage services
US9910887B2 (en) 2013-04-25 2018-03-06 Facebook, Inc. Variable search query vertical access
US9223898B2 (en) 2013-05-08 2015-12-29 Facebook, Inc. Filtering suggested structured queries on online social networks
US10977229B2 (en) 2013-05-21 2021-04-13 Facebook, Inc. Database sharding with update layer
US10983973B2 (en) * 2013-05-21 2021-04-20 Facebook, Inc. Database sharding with incorporated updates
US9483568B1 (en) * 2013-06-05 2016-11-01 Google Inc. Indexing system
CN104714952B (zh) * 2013-12-11 2018-07-06 航天信息股份有限公司 一种数据库的多重查询方法
CN104714973A (zh) * 2013-12-17 2015-06-17 航天信息股份有限公司 一种处理查询语句的方法和装置
US9652554B2 (en) * 2013-12-26 2017-05-16 Facebook, Inc. Systems and methods for adding users to a networked computer system
US8954441B1 (en) * 2014-01-02 2015-02-10 Linkedin Corporation Graph-based system and method of information storage and retrieval
US20150229715A1 (en) * 2014-02-13 2015-08-13 Linkedin Corporation Cluster management
US9842152B2 (en) 2014-02-19 2017-12-12 Snowflake Computing, Inc. Transparent discovery of semi-structured data schema
CN103810300B (zh) * 2014-03-10 2017-08-01 北京国双科技有限公司 用于非索引覆盖的数据查询方法和装置
US9977810B2 (en) * 2014-08-21 2018-05-22 Dropbox, Inc. Multi-user search system with methodology for personal searching
US9183303B1 (en) 2015-01-30 2015-11-10 Dropbox, Inc. Personal content item searching system and method
US9384226B1 (en) 2015-01-30 2016-07-05 Dropbox, Inc. Personal content item searching system and method
US10037388B2 (en) * 2015-04-27 2018-07-31 Microsoft Technology Licensing, Llc Fast querying of social network data
US10127230B2 (en) 2015-05-01 2018-11-13 Microsoft Technology Licensing, Llc Dynamic content suggestion in sparse traffic environment
US10007879B2 (en) 2015-05-27 2018-06-26 International Business Machines Corporation Authoring system for assembling clinical knowledge
US9514247B1 (en) 2015-10-28 2016-12-06 Linkedin Corporation Message passing in a distributed graph database
US20170228409A1 (en) * 2016-02-08 2017-08-10 Red Hat, Inc. In-memory journaling
US10180992B2 (en) * 2016-03-01 2019-01-15 Microsoft Technology Licensing, Llc Atomic updating of graph database index structures
US10599656B1 (en) 2016-03-04 2020-03-24 Twitter, Inc. Indexing and data storage for realtime and contemporaneous content suggestions
CN105930506A (zh) * 2016-05-10 2016-09-07 乐视控股(北京)有限公司 对象检索方法和对象存储系统
US10540332B2 (en) 2016-08-03 2020-01-21 Microsoft Technology Licensing, Llc Efficient denormalization of data instances
US10366368B2 (en) 2016-09-22 2019-07-30 Microsoft Technology Licensing, Llc Search prioritization among users in communication platforms
US10754859B2 (en) 2016-10-28 2020-08-25 Microsoft Technology Licensing, Llc Encoding edges in graph databases
CN108093020B (zh) * 2016-11-23 2020-12-18 阿里巴巴集团控股有限公司 数据处理方法及装置
US10445321B2 (en) 2017-02-21 2019-10-15 Microsoft Technology Licensing, Llc Multi-tenant distribution of graph database caches
US11461318B2 (en) 2017-02-28 2022-10-04 Microsoft Technology Licensing, Llc Ontology-based graph query optimization
US10565197B2 (en) 2017-03-02 2020-02-18 International Business Machines Corporation Search performance using smart bitmap operations
US10445370B2 (en) 2017-06-09 2019-10-15 Microsoft Technology Licensing, Llc Compound indexes for graph databases
US10671671B2 (en) 2017-06-09 2020-06-02 Microsoft Technology Licensing, Llc Supporting tuples in log-based representations of graph databases
US10628492B2 (en) 2017-07-20 2020-04-21 Microsoft Technology Licensing, Llc Distributed graph database writes
EP3682338A4 (en) 2017-09-12 2021-05-26 Services Pétroliers Schlumberger DATA SEARCH, ENRICHMENT AND CONSUMPTION TECHNIQUES USING EXPLORATION AND / OR PRODUCTION ENTITY RELATIONSHIPS
US10963514B2 (en) 2017-11-30 2021-03-30 Facebook, Inc. Using related mentions to enhance link probability on online social networks
US10129705B1 (en) 2017-12-11 2018-11-13 Facebook, Inc. Location prediction using wireless signals on online social networks
US11604968B2 (en) 2017-12-11 2023-03-14 Meta Platforms, Inc. Prediction of next place visits on online social networks
US10983997B2 (en) 2018-03-28 2021-04-20 Microsoft Technology Licensing, Llc Path query evaluation in graph databases
CN108549644A (zh) * 2018-04-12 2018-09-18 苏州大学 面向神经机器翻译的省略代词翻译方法
US20210382953A1 (en) * 2018-07-16 2021-12-09 YE Ventures, LLC Methods and systems for adjusting self-tuning personalization engines in near real-time
US11030242B1 (en) * 2018-10-15 2021-06-08 Rockset, Inc. Indexing and querying semi-structured documents using a key-value store
CN109063215B (zh) * 2018-10-16 2020-10-30 成都四方伟业软件股份有限公司 数据检索方法及装置
CN111831878B (zh) * 2019-04-22 2023-09-15 百度在线网络技术(北京)有限公司 构建价值索引关系的方法、索引系统及索引装置
US11567995B2 (en) 2019-07-26 2023-01-31 Microsoft Technology Licensing, Llc Branch threading in graph databases
US11113267B2 (en) 2019-09-30 2021-09-07 Microsoft Technology Licensing, Llc Enforcing path consistency in graph database path query evaluation
CN114741570A (zh) * 2022-01-20 2022-07-12 浙江大华技术股份有限公司 图数据库的查询方法、索引创建方法及相关设备
US20240176788A1 (en) * 2022-11-30 2024-05-30 Intuit Inc. Dataset ranking based on composite score

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11149479A (ja) * 1997-11-17 1999-06-02 Nec Corp ハイパーメディアシステムにおける検索情報表示方法と検索情報表示装置
JP2006185412A (ja) * 2004-12-03 2006-07-13 Kazusa Dna Kenkyusho 情報処理装置、情報処理方法及びそのプログラム
JP2006528382A (ja) * 2003-07-21 2006-12-14 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 文書群における検索方法
US20070276858A1 (en) * 2006-05-22 2007-11-29 Cushman James B Ii Method and system for indexing information about entities with respect to hierarchies
JP2008250722A (ja) * 2007-03-30 2008-10-16 Fujitsu Ltd 文書検索システム、文書番号部分列取得装置、および文書検索方法
US20100198844A1 (en) * 2009-01-30 2010-08-05 Thales-Raytheon Systems Company, LLC Automatic Code Generation
US20110137902A1 (en) * 2009-12-08 2011-06-09 Akhil Wable Search and Retrieval of Objects in a Social Networking System
US20120215785A1 (en) * 2010-12-30 2012-08-23 Sanjeev Singh Composite Term Index for Graph Data

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05313971A (ja) * 1992-05-13 1993-11-26 Mitsubishi Electric Corp リレーショナル・データベースにおけるキーワード管理方式
JP3132606B2 (ja) * 1993-02-25 2001-02-05 日本電気株式会社 関連情報変換装置
US5524240A (en) * 1994-05-24 1996-06-04 Panasonic Technologies, Inc. Method and apparatus for storage and retrieval of handwritten information
JPH0944521A (ja) * 1995-07-25 1997-02-14 Fuji Xerox Co Ltd インデックス作成装置および文書検索装置
JPH09198395A (ja) * 1996-01-16 1997-07-31 Fuji Xerox Co Ltd 文書検索装置
JP3347088B2 (ja) * 1999-02-12 2002-11-20 インターナショナル・ビジネス・マシーンズ・コーポレーション 関連情報検索方法およびシステム
JP4042295B2 (ja) * 2000-04-14 2008-02-06 富士ゼロックス株式会社 キーワード抽出ルール精製支援装置、記憶媒体及びキーワード抽出ルール精製支援方法
WO2002084431A2 (en) * 2001-04-11 2002-10-24 International Business Machines Corporation Simplifying and manipulating k-partite graphs
US20040024755A1 (en) * 2002-08-05 2004-02-05 Rickard John Terrell System and method for indexing non-textual data
JP2004272831A (ja) * 2003-03-12 2004-09-30 Ricoh Co Ltd キーワード抽出装置、プログラム、及び記録媒体
KR20060011828A (ko) * 2003-04-03 2006-02-03 더블린 시티 유니버시티 멀티미디어 데이터를 인덱싱 및 검색하기 위한 형상 매칭방법
US7779345B2 (en) * 2003-07-30 2010-08-17 Aol Inc. Reverse mapping method and apparatus for form filling
JP2005210384A (ja) 2004-01-22 2005-08-04 Konica Minolta Medical & Graphic Inc 画像処理方法および画像処理装置ならびに画像処理プログラム
US7752243B2 (en) * 2006-06-06 2010-07-06 University Of Regina Method and apparatus for construction and use of concept knowledge base
US10185779B2 (en) * 2008-03-03 2019-01-22 Oath Inc. Mechanisms for content aggregation, syndication, sharing, and updating
JP4286905B2 (ja) * 2006-12-14 2009-07-01 パナソニック株式会社 レンズおよびその製造方法
US7702620B2 (en) * 2007-03-29 2010-04-20 International Business Machines Corporation System and method for ranked keyword search on graphs
US7693813B1 (en) * 2007-03-30 2010-04-06 Google Inc. Index server architecture using tiered and sharded phrase posting lists
US8166021B1 (en) 2007-03-30 2012-04-24 Google Inc. Query phrasification
US7702614B1 (en) 2007-03-30 2010-04-20 Google Inc. Index updating using segment swapping
US7925655B1 (en) 2007-03-30 2011-04-12 Google Inc. Query scheduling using hierarchical tiers of index servers
US8086594B1 (en) 2007-03-30 2011-12-27 Google Inc. Bifurcated document relevance scoring
US8166045B1 (en) 2007-03-30 2012-04-24 Google Inc. Phrase extraction using subphrase scoring
US7904461B2 (en) * 2007-05-01 2011-03-08 Google Inc. Advertiser and user association
JP5075653B2 (ja) * 2008-01-21 2012-11-21 株式会社日立製作所 データベース管理方法、データベース管理装置、データベース管理プログラム、及び、データベースシステム
JP2009176044A (ja) * 2008-01-24 2009-08-06 Nippon Telegr & Teleph Corp <Ntt> 文書検索方法及び装置及びプログラム及びコンピュータ読取可能な記録媒体
KR100936198B1 (ko) * 2008-03-21 2010-01-11 인하대학교 산학협력단 소셜 네트워크 분석 시스템
CN101770459B (zh) * 2008-12-31 2013-10-09 华为技术有限公司 一种推荐好友的方法和设备
US8438173B2 (en) * 2009-01-09 2013-05-07 Microsoft Corporation Indexing and querying data stores using concatenated terms
EP2380094A1 (en) * 2009-01-16 2011-10-26 Sanjiv Agarwal Dynamic indexing while authoring
DE112010000947T5 (de) * 2009-03-02 2012-06-14 Borys Evgenijovich Panchenko Verfahren zur völlig modifizierbaren Framework-Datenverteilung im Data-Warehouse unter Berücksichtigung der vorläufigen etymologischen Separation der genannten Daten
US20100241580A1 (en) * 2009-03-19 2010-09-23 Tagged, Inc. System and method of selecting a relevant user for introduction to a user in an online environment
US8185544B2 (en) * 2009-04-08 2012-05-22 Google Inc. Generating improved document classification data using historical search results
US8185558B1 (en) * 2010-04-19 2012-05-22 Facebook, Inc. Automatically generating nodes and edges in an integrated social graph
US8572129B1 (en) * 2010-04-19 2013-10-29 Facebook, Inc. Automatically generating nodes and edges in an integrated social graph
US8180804B1 (en) * 2010-04-19 2012-05-15 Facebook, Inc. Dynamically generating recommendations based on social graph information
US8832111B2 (en) * 2010-12-30 2014-09-09 Facebook, Inc. Distributed cache for graph data

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11149479A (ja) * 1997-11-17 1999-06-02 Nec Corp ハイパーメディアシステムにおける検索情報表示方法と検索情報表示装置
JP2006528382A (ja) * 2003-07-21 2006-12-14 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 文書群における検索方法
JP2006185412A (ja) * 2004-12-03 2006-07-13 Kazusa Dna Kenkyusho 情報処理装置、情報処理方法及びそのプログラム
US20070276858A1 (en) * 2006-05-22 2007-11-29 Cushman James B Ii Method and system for indexing information about entities with respect to hierarchies
JP2008250722A (ja) * 2007-03-30 2008-10-16 Fujitsu Ltd 文書検索システム、文書番号部分列取得装置、および文書検索方法
US20100198844A1 (en) * 2009-01-30 2010-08-05 Thales-Raytheon Systems Company, LLC Automatic Code Generation
US20110137902A1 (en) * 2009-12-08 2011-06-09 Akhil Wable Search and Retrieval of Objects in a Social Networking System
US20120215785A1 (en) * 2010-12-30 2012-08-23 Sanjeev Singh Composite Term Index for Graph Data

Also Published As

Publication number Publication date
US9223899B2 (en) 2015-12-29
JP2016189214A (ja) 2016-11-04
CA2972316A1 (en) 2012-07-05
MX2013007685A (es) 2013-12-02
CN103348344A (zh) 2013-10-09
US9576060B2 (en) 2017-02-21
KR101419828B1 (ko) 2014-07-16
EP2659402B1 (en) 2021-01-06
JP2014507706A (ja) 2014-03-27
CA2848100A1 (en) 2012-07-05
JP2014096164A (ja) 2014-05-22
AU2017201389A1 (en) 2017-03-23
JP6174762B2 (ja) 2017-08-02
CN107092666B (zh) 2018-06-15
US20160048600A1 (en) 2016-02-18
EP2659402A4 (en) 2016-08-03
JP5964808B2 (ja) 2016-08-03
CA2823146A1 (en) 2012-07-05
CN103348344B (zh) 2017-05-03
US20120215785A1 (en) 2012-08-23
CA2928937C (en) 2017-08-15
EP2659402A1 (en) 2013-11-06
JP6326532B2 (ja) 2018-05-16
KR20130096767A (ko) 2013-08-30
MX355952B (es) 2018-05-07
MX350594B (es) 2017-09-11
US9934329B2 (en) 2018-04-03
US20140006412A1 (en) 2014-01-02
AU2016200896B2 (en) 2016-11-24
BR112013016926A2 (pt) 2020-10-27
AU2011353034B2 (en) 2013-10-10
CA2823146C (en) 2014-07-15
AU2016200896A1 (en) 2016-03-03
WO2012091844A1 (en) 2012-07-05
CA2972316C (en) 2018-10-16
US20170154124A1 (en) 2017-06-01
JP5451954B1 (ja) 2014-03-26
AU2017201389B2 (en) 2018-03-08
CA2848100C (en) 2016-07-12
CN107092666A (zh) 2017-08-25
US8527497B2 (en) 2013-09-03
CA2928937A1 (en) 2012-07-05
AU2011353034A1 (en) 2013-07-18

Similar Documents

Publication Publication Date Title
JP6326532B2 (ja) グラフ・データのコンポジットタームインデックス
US9886484B2 (en) Distributed cache for graph data
AU2013270511B2 (en) Composite term index for graph data

Legal Events

Date Code Title Description
A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20180122

TRDD Decision of grant or rejection written
A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20180316

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180327

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180416

R150 Certificate of patent or registration of utility model

Ref document number: 6326532

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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