JP2013521566A - ユーザコンテンツフィードをサポートするための機構 - Google Patents

ユーザコンテンツフィードをサポートするための機構 Download PDF

Info

Publication number
JP2013521566A
JP2013521566A JP2012556061A JP2012556061A JP2013521566A JP 2013521566 A JP2013521566 A JP 2013521566A JP 2012556061 A JP2012556061 A JP 2012556061A JP 2012556061 A JP2012556061 A JP 2012556061A JP 2013521566 A JP2013521566 A JP 2013521566A
Authority
JP
Japan
Prior art keywords
content
consumer
creator
push
pull
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
JP2012556061A
Other languages
English (en)
Other versions
JP5450841B2 (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 JP2013521566A publication Critical patent/JP2013521566A/ja
Application granted granted Critical
Publication of JP5450841B2 publication Critical patent/JP5450841B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/535Tracking the activity of the user
    • 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/25Integrating or interfacing systems involving database management systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/55Push-based network services

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Business, Economics & Management (AREA)
  • Data Mining & Analysis (AREA)
  • Tourism & Hospitality (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)
  • Software Systems (AREA)
  • Information Transfer Between Computers (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • User Interface Of Digital Computer (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

1つの実施形態では、1又はそれ以上のコンテンツ作成者の各々に関して、このコンテンツ作成者が1又はそれ以上のコンテンツ項目を作成するコンテンツ作成率にアクセスし、1又はそれ以上のコンテンツ消費者の各々に関して、このコンテンツ消費者が1又はそれ以上のコンテンツ項目を消費するコンテンツ消費率にアクセスする。コンテンツ作成者の1つと、このコンテンツ作成者をフォローするコンテンツ消費者の1つとを含む複数の消費者/作成者ペアの各々に関して、コンテンツ消費者のコンテンツ消費率及びコンテンツ作成者のコンテンツ作成率に基づいて、コンテンツ作成者からコンテンツ消費者に1又はそれ以上のコンテンツ項目を配信するためのプッシュ方式とプル方式の間で選択を行う。
【選択図】 図1

Description

〔関連出願〕
本出願は、2010年3月1日に出願された米国特許本出願第12/714,876号に対して優先権を主張するPCT出願であり、この特許本出願はその全体が引用により本明細書に組み入れられる。
本開示は、一般に、複数のコンテンツ作成者と複数のコンテンツ消費者の間に複数のコンテンツフィードを構築することに関し、より詳細には、コンテンツフィードの各々を分析して、コンテンツフィードのためのプッシュ方式とプル方式の間で選択を行うことに関する。
インターネットユーザは、起きていることに関する最新情報を得たいと思っている。この目的のために、Twitter及びFacebookなどのソーシャルネットワーキングサイトは、あるユーザの友人が作成したステータスアップデート、投稿写真、動画レビューなどのフィードをユーザに提供する。My Yahoo及びiGoogleなどのコンテンツアグリゲータは、複数のRSSソースからのカスタマイズされたウェブページ集約フィードを提供する。同様に、Digg及びRedditなどのニュースアグリゲータは、「娯楽」及び「技術」などのトピックに関する最新記事のフィードを提供し、CNN.comなどのニュースサイトは、「健康討論」などの細分化されたトピックをフォローする機能を提供する。
近リアルタイムのコンテンツフィードは、多くの人気のあるウェブアプリケーションの重要な特徴になってきている。一例として、Twitter及びFacebook上でユーザが作成したイベント、及びiGoogle及びMy Yahoo上の特定のトピックに関するニュース記事がある。この結果、これらのウェブアプリケーションは、ユーザのフィードからの最新コンテンツを表示するウェブページを効率的に構成できることがますます重要になっている。このようなフィードの構築は、ウェブページが素早くロードを行うように高速でなければならない。しかしながら、コンテンツの広いファンアウト(例えば、ソースによっては多くのフォロワーが存在すること)及び高いスキュー(例えば、ファンアウト及び速度が大きく変化すること)により、このようなアプリケーションをスケーリングすることが困難になる。
本開示は、一般に、複数のコンテンツ作成者と複数のコンテンツ消費者の間に複数のコンテンツフィードを構築することに関し、より詳細には、コンテンツフィードの各々を分析して、コンテンツフィードのためのプッシュ方式とプル方式の間で選択を行うことに関する。
特定の実施形態では、1又はそれ以上のコンテンツ作成者の各々に関して、コンテンツ作成者が1又はそれ以上のコンテンツ項目を作成するコンテンツ作成率にアクセスし、1又はそれ以上のコンテンツ消費者の各々に関して、コンテンツ消費者が1又はそれ以上のコンテンツ項目を消費するコンテンツ消費率にアクセスする。コンテンツ作成者の1つと、このコンテンツ作成者をフォローするコンテンツ消費者の1つとを含む複数の消費者/作成者ペアの各々に関して、コンテンツ消費者のコンテンツ消費率及びコンテンツ作成者のコンテンツ作成率に基づいて、コンテンツ作成者からコンテンツ消費者に1又はそれ以上のコンテンツ項目を配信するためのプッシュ方式とプル方式の間で選択を行う。プッシュ方式では、コンテンツ作成者がコンテンツ項目を作成したときに、コンテンツ項目の各々がコンテンツ作成者からコンテンツ消費者に配信される。プル方式では、コンテンツ消費者がコンテンツ項目を消費したときに、コンテンツ項目の各々がコンテンツ作成者からコンテンツ消費者に配信される。
以下の詳細な説明において、及び以下の図に関連して、本開示のこれらの及びその他の特徴、態様、及び利点をより詳細に説明する。
個々のコンテンツフィードの方式を決定する方法例を示す図である。 接続ネットワーク例を示す図である。 個々のコンテンツフィードの方式を決定するためのシステムアーキテクチャ例を示す図である。 ネットワーク環境例を示す図である。 コンピュータシステム例を示す図である。
以下、添付図面に示す本開示のいくつかの実施形態を参照しながら本開示についてより詳細に説明する。以下の説明では、本開示を完全に理解できるように数多くの特定の詳細を示している。しかしながら、当業者には、これらの特定の詳細の一部又は全部を伴わずに本開示を実施できることが明らかである。その他の場合、本開示を不必要に曖昧にしないために、周知の処理ステップ及び/又は構造については詳しく説明していない。また、本開示を特定の実施形態に関連して説明しているが、この説明は、説明する実施形態に本開示を限定するものではないと理解されたい。逆に、この説明は、添付の特許請求の範囲に定める本開示の思想及び範囲に含まれ得るような代替物、修正物、及び同等物も対象とすることを意図している。
コンテンツフィードは、ウェブフィード又は単純に「フィード」とも呼ばれ、コンテンツ、特に頻繁に更新されるコンテンツをネットワークユーザ間で配信するための機構のことである。コンテンツフィードは、様々なフォーマットをとることができる。例えば、RSS(「リアリー・シンプル・シンジケーション」として最も一般的に展開されている)は、コンテンツを配信するために広く使用されているウェブフィードフォーマットのファミリである。同様に、限定ではなく一例として、ブログエントリ、ニュースの見出し、イベント、オーディオ、及びビデオなどの、コンテンツフィードを介して配信されるコンテンツも様々なフォーマットをとることができる。本開示では、あらゆる適用可能なコンテンツフィード及びコンテンツを考慮する。コンテンツフィードは、コンテンツ作成者とコンテンツ消費者をそれぞれの末端において概念的に接続する。特定の実施形態では、コンテンツ作成者、又は単純には作成者を、1又はそれ以上のコンテンツ消費者が消費できるコンテンツを作成するエンティティとする。一方で、コンテンツ消費者、又は単純には消費者を、1又はそれ以上のコンテンツ作成者が作成したコンテンツを消費するエンティティとする。この意味において、消費者は、1又はそれ以上の作成者が作成したコンテンツを「フォローする」、又はこのコンテンツのフォロワーであると言うことができる。コンテンツは、作成者と消費者を接続するフィードを介して作成者から消費者に配信することができる。なお、1つのエンティティが、ある時には他方が消費するコンテンツを作成し、別の時には他方が作成したコンテンツを消費することもあるので、1つのエンティティを作成者と消費者の両方とすることもできる。従って、一方のエンティティがもう一方のエンティティのためにコンテンツを作成する場合のフィードについては、このエンティティを作成者と呼び、同じエンティティがもう一方のエンティティからのコンテンツを消費する場合の別のフィードについては、このエンティティを消費者と呼ぶ。時には、エンティティA及びエンティティBという2つのエンティティを、互い同士の作成者及び消費者とすることもできる。すなわち、エンティティBが消費するコンテンツをエンティティAが作成できる場合もあれば、エンティティAが消費するコンテンツをエンティティBが作成できる場合もある。従って、両方ともにエンティティAとエンティティBを接続する2つの別個のフィードが存在することができる。一方のフィードでは、エンティティAが作成者であってエンティティBが消費者であり、もう一方のフィードでは、エンティティBが作成者であってエンティティAが消費者である。また、作成者は、この作成者が作成するコンテンツのオリジナル制作者であってもよく、又はそうでなくてもよい。例えば、作成者は、元々は他のニュースレポーターが書いたニュース記事を作成してもよく、元々は他の写真家が撮影したデジタル写真を作成してもよく、或いはこの作成者自身が記録したビデオクリップを作成してもよい。
特定の実施形態では、フォローアプリケーションが、限定ではなく一例として、別のユーザ又はコンテンツカテゴリ又はトピックとすることができる1又はそれ以上の関心を、ユーザがフォローできるようにする。この場合、関心をフォローするユーザが消費者である。フォローアプリケーションの目的は、ユーザがフォローしている全ての作成者にわたる最近の又は最新のコンテンツを組み合わせたリストである、関心をフォローするユーザ(すなわち、消費者)のためのフィードを作成することである。例えば、フィードは、ソーシャルサイト上のユーザの友人全員からの最近のステータスアップデート、又はコンテンツ集約サイト上のユーザのトピック全てに関する最近の記事を組み合わせることができる。場合によっては、ユーザは、ソーシャルアップデートとトピックアップデートをいずれも含む組み合わせたフィードの方を好むことがある。特定の実施形態では、フォローアプリケーションに関連して、作成者が、特定のフォロー可能な関心に関する、人間が読める一連の時系列のコンテンツを生成することができる。従って、ユーザ(すなわち、消費者)にとっては、作成者は、友人であっても、ウェブサイトであっても、或いは複数のソースから収集された特定のトピックに関するコンテンツのアグリゲータであってもよい。
フォローアプリケーションは、スケーリングが難しいことで知られている。このアプリケーションは、高スループットのコンテンツに継続的に対応しなければならない。例えば、Twitterの技術者が、システムの人気が高まるにつれて急速に増加するスループットに対応するようにTwitterのバックエンドを何度も設計し直したと記述していることは有名である。同時に、関心をフォローするユーザは、ユーザのフィードページにおける素早いロードを期待しており、このことは、レイテンシを厳密に制限しなければならないことを意味する。この結果、多くの場合、具現化及びキャッシングが広範囲に及び、資本支出及び経常支出が増大する。例えば、Diggは、大量のデータを非正規化して具現化することを選んで、自社の(例えば、自分の友人がどの記事を発掘したかをフォローする)「グリーンバッジアプリケーション」のレイテンシを短縮し、結果的に記憶データが数十ギガバイトから3テラバイトにまで膨らんだ。
このようなフォローアプリケーションのスケーリングが難しいことにはいくつかの理由がある。まず、コンテンツがファンアウトして、システム内に負荷に倍数的な影響をもたらす。例えば、アシュトン・カッチャーが「ツイート」すると、彼のステータスアップデートは常に380万人のフォロワーに伝播される。より中程度の平均的なファンアウトでも、スケーリングの問題を引き起こすことがある。次に、このファンアウトのスキューが高く、適切な方式を選ぶのが難しくなる。例えば、報道によれば、Facebookは、ファンアウトの狭い大半のユーザと比較してファンアウトの広いバンド及び政治家などのユーザには、異なるフィード具現化方式を採用している。
例えば、フォローアプリケーションが直面する問題の少なくともいくつかに対処してアプリケーション性能を向上させるために、特定の実施形態は、各消費者のフィードを選択的に具現化する。特定の実施形態では、率の高い作成者からのコンテンツをクエリ時に検索し(すなわち、プル方式)、率の低い作成者からのコンテンツを事前に具現化する(すなわち、プッシュ方式)。さらに、形式的な問題分析では、適切な方式は、所与の作成者のコンテンツ作成率と所与の消費者のコンテンツ消費率の比率(ページビュー率など)に依存すると示されている。従って、一部の作成者を一部の消費者のために具現化してその他は具現化せず、消費者のフィードのいくつかの部分を具現化して他の部分を具現化しないようにすることができる。実際のウェブデータベースインフラストラクチャを使用した実験結果では、このハイブリッド方式によってシステム負荷が最低になり、従って様々な作業負荷においてスケーラビリティが向上することが示されている。
上述したように、作成者は、1又はそれ以上の消費者が消費するコンテンツを作成することができ、消費者は、1又はそれ以上の作成者が作成したコンテンツを消費することができる。さらに、コンテンツは、作成者と消費者を接続するフィードを介して作成者から消費者に配信される。理論的には、作成者がコンテンツを作成した時刻と消費者がコンテンツを消費した時刻の間のあらゆる時点において、所与のコンテンツを作成者から消費者に配信することができる。コンテンツについては、作成者がコンテンツを作成した時刻を、「具現化」タイム(すなわち、コンテンツが具現化される)と呼ぶことができ、消費者がコンテンツを消費した時刻を、「クエリ」タイム(すなわち、消費者がコンテンツを消費するためにクエリ又は要求を行う)と呼ぶことができる。
特定の実施形態では、作成者と消費者の間でコンテンツを管理するための方式として、プッシュ及びプルの2つが存在する。特定の実施形態では、プッシュ方式の場合、作成者がコンテンツを作成した時点で、コンテンツをフォローする消費者の各々にコンテンツが配信(すなわちプッシュ)され、従ってこのプッシュ方式を、従来のデータベース用語を使用して「具現化」方式と呼ぶことができる。対照的に、プル方式の場合、消費者が消費するためにコンテンツを要求した時点で、コンテンツを作成した作成者の各々から消費者がフォローするコンテンツが検索(すなわち、プル)され、従ってこのプル方式を、従来のデータベース用語を使用して「クエリ」方式と呼ぶことができる。時にはプッシュ方式の方が良いこともあり、消費者が、フォローしているコンテンツを消費する(フォローアプリケーションを使用してコンテンツにクエリを行う)準備ができている場合、消費者のフィードが事前に計算されて、システム負荷及びレイテンシが減少するようになる。対照的に、作成者がコンテンツを作成する率に比べて、消費者がコンテンツを消費する頻度が低い場合にはプル方式の方が良い。通常は、最も新しいN個のコンテンツしか表示する必要がないので、消費者にこれらを消費する(例えば、見る又はダウンロードする)機会が来る前に、後で新しいコンテンツに取って代わられる大量のコンテンツをプッシュ及び具現化することは無駄である。
特定の実施形態の方法は、同じアプリケーション内であっても、プッシュの方が良い場合もあれば、プルの方が良い場合もあるという見識に基づく。実際に、特定の実施形態では、特定の消費者のフィードをプッシュとプル両方の組み合わせとすることができる。これは、コンテンツ作成率におけるスキューに起因する。例えば、1時間に1回コンテンツを要求する特定の消費者は、1つの作成者のコンテンツ作成率よりも高い頻度でコンテンツを消費し(すなわち、消費者のコンテンツ消費率が1つの作成者のコンテンツ作成率よりも高く、従ってプッシュの方が良い)、別の作成者のコンテンツ作成率よりも低い頻度でコンテンツを消費している(すなわち、消費者のコンテンツ消費率が別の作成者のコンテンツ作成率よりも低く、従ってプルの方が良い)ことがある。特定の実施形態は、作成者をpとし、消費者をcとする、(p,c)ごとにプッシュ/プルの決定を行う。実際のフォローアプリケーションを使用した実験及び経験では、この方法の方が、純粋なプッシュシステム又は純粋なプルシステムよりも上手くスケーリングを行うことが示されている。当然ながら、この作成者と消費者の相対的なコンテンツ作成とコンテンツ消費の割合に基づいて(p,c)ごとにプッシュ/プルの決定をそれぞれ行うという概念は、フォローアプリケーション以外にも、あらゆる消費者/作成者タイプのアプリケーションに適用されるように拡張することができる。
このフォローの問題は、以前に研究されたデータベースシステムの問題に類似している。例えば、インデックス及びビュー選択の背景では、「具現化か否か」という議論が頻繁に検討される。しかしながら、このフォローの問題の背景では、いずれのビューを作成するかではなく、1つの「フィード」ビューのどれだけを具現化するかが議論となる。特定の実施形態は、部分的に具現化されたビュー及びインデックスに関する研究から、概念の一部(例えば、頻繁にアクセスされるデータを具現化すること)を借用することができる。しかしながら、以前の研究とは異なり、所与の基本タプルに関して単一の「具現化か否か」の決定を行うことはできず、代わりに、各消費者/作成者ペアに関して、これらの相対的なコンテンツ作成とコンテンツ消費の割合に基づいて決定を行う必要がある。
図1に、個々のコンテンツフィードの方式を決定する方法例を示す。簡単に言えば、特定の実施形態は、作成者から消費者にコンテンツを配信するためのプッシュコスト及びプルコストを計算し(ステップ110)、消費者/作成者ペアに関して、プッシュ方式又はプル方式のいずれかの配信コストが低い方を選択する(ステップ120)。この2つのステップを、作成者と消費者の固有のペアごとに繰り返すことができる。
以下の表1に、本開示で使用する表記法を示す。個々の概念については、以下でより詳細に説明する。
Figure 2013521566
表1:表記法
特定の実施形態では、作成者の組が生成したコンテンツストリームをフォローしている消費者の組(フォローアプリケーションのユーザなど)が存在する。各消費者は、フォローしたいと思う作成者を選択することができる。特定の実施形態では、消費者が特定の作成者をフォローすることを選択した場合、この作成者が作成したコンテンツが、適当な時点で消費者に配信される。特定の実施形態では、作成者が、人間が読めるタイムスタンプ付きの一連の名前を付けたコンテンツを生成することができる。作成者の例として、「アシュトン・カッチャーのツイート」又は「地球温暖化に関するニュース記事」を挙げることができる。作成者は、人(フォローアプリケーションのユーザなど)であっても、ウェブサイト(ニュースサイト又はブログなど)であっても、又は複数のソースから得られるコンテンツのアグリゲータであってもよい。特定の実施形態は、異なるトピックのコンテンツが同じウェブサイト又はデータソース(すなわち、同じエンティティ)から来たものであっても、図1のステップを説明する場合には、各フォロー可能な「トピック」(「地球温暖化」又は「健康討論」など)を別個の作成者として扱う。すなわち、1つの作成者が複数のコンテンツストリームを作成した場合、各コンテンツストリームは別個に分析される。特定の実施形態では、作成された時刻によってコンテンツに順序が付けられるが、代替の実施形態では、他の順序付け方法を使用することができる。
特定の実施形態は、頂点の組をV、フォローエッジの組をFとする有向グラフG(V,F)としての接続ネットワークを定義することができる。特定の実施形態では、各頂点vi∈Vが、消費者又は作成者のいずれかを表し、ciがpjをフォローする(例えば、pjが作成したコンテンツをciが消費する)場合、作成者頂点pjと消費者頂点ciの間にフォローエッジfi,j∈Fが存在する。図2に、複数の作成者頂点及び複数の消費者頂点を有する接続ネットワーク例200を示す。当然ながら、接続ネットワークは、あらゆる数の作成者及び消費者を含むことができ、個々の作成者と消費者の間にはあらゆる数の接続(すなわち、フォローエッジ)が存在することができる。ソーシャルネットワークは、接続ネットワークの1つの種類の一例であるが、あらゆる消費者/作成者グラフを接続ネットワークとすることができ、本開示は、あらゆる適用可能な接続ネットワークを考慮する。特定の実施形態は、接続ネットワークを、ConnectionNetwork(Producer,Consumer)の関係と見なすことができる。
特定の実施形態では、この接続ネットワークを、作成者、消費者、又はこれらの両方による効率的な検索をサポートする形で明示的に記憶することができる。例えば、1又はそれ以上の関心を持った消費者に対して作成者pjからコンテンツをプッシュするには、特定の実施形態では、接続ネットワーク内でpjを検索して、このコンテンツをフォローする消費者の組を検索することができ、このことが{ci:fi,j∈F}として示される。対照的に、1又はそれ以上の作成者から消費者ciのためのコンテンツをプルするには、特定の実施形態では、接続ネットワーク内でciを検索して、この消費者がフォローする作成者の組を検索することができ、このことが{pj:fi,j∈F}として示される。この後者の場合、特定の実施形態は、ConnectionNetwork(Producer,Consumer)としての関係を実際に定義して、消費者によるクラスタリングをサポートすることができる。作成者を介したアクセス経路と消費者を介したアクセス経路を両方ともサポートするために、特定の実施形態は、ConnectionNetworkの関係に加えてインデックスを構築することができる。
特定の実施形態では、コンテンツ自体が、Content(ContentID,Producer,Timestamp,Payload)としての関係を論理的に形成する。効率化のために、特定の実施形態は、(1)作成者中心:コンテンツが作成者によってProducedPivoted(Producer,ContentID,Timestamp,Payload)の関係でクラスタ化される、及び(2)消費者中心:コンテンツが消費者ごとにConsumerPivoted(Consumer,Producer,ContentID,Timestamp,Payload)の関係で複製されクラスタ化される、という方法の一方又は両方でコンテンツを記憶することができる。
作成者中心のモデルは、プル方式をサポートする。コンテンツの組を検索して消費者に表示するために、特定の実施形態は、消費者がフォローしている対応する作成者の組を(例えば、ConnectionNetworkから)検索し、次にProducerPivotedテーブル内の各作成者を調べて最近のコンテンツを検索する(例えば、ConnectionNetwork JOIN ProducerPivotedの統合)。対照的に、消費者中心のモデルは、プッシュ方式をサポートする。プッシュの場合、特定の実施形態は、コンテンツの作成者をフォローしている各消費者のタプルを挿入することにより、コンテンツをConsumerPivotedの関係に具現化する。この場合、消費者のフィードの検索は、消費者の全てのタプルの範囲スキャンとなる。実際には、特定の実施形態は、Contentsを明示的に記憶する必要はなく、代わりに特定の実施形態は、ProducerPivotedの関係を記憶してこれにクエリを行い、ConnectionNetwork JOIN ProducerPivotedの統合のビューとしてConsumerPivotedを具現化することができる。
上述したように、特定の実施形態は、どの作成者が作成したコンテンツをどの消費者がフォローしているかを示すフォローエッジごとに、プッシュ方式とプル方式の間で個別に選択を行う。換言すれば、特定の実施形態は、ConsumerPivotedに具現化されるコンテンツもあれば、ProducerPivotedに記憶だけされて必要時にプルされるコンテンツもあるというハイブリッド方式を検討する。ここでも、接続ネットワーク内の消費者/作成者ペアごとにこの決定が行われる。
特定の実施形態は、コンテンツが(例えば、消費者が使用するネットワーク装置を介して)消費者に配信又は表示された場合には常に、消費者がそのコンテンツフィード(又は単純にフィード)を検索したと言うことができる。このコンテンツ検索は、消費者がウェブサイトにログオンすること、又はウェブサイト上のページをリフレッシュすることなどの様々な要因によってトリガすることができる。特定の実施形態では、例えば、Ajax、Flash又は他のいずれかの適当な技術を使用して、消費者の更新されたフィードを自動的に検索することができる。特定の実施形態では、このフィード自体が、消費者によりフォローされる作成者の1又はそれ以上からの順序付けられた一群のコンテンツを表示する。通常、フィードは、N個の最新のコンテンツしか表示しないが、消費者は、(例えば、「次」をクリックすることにより)以前のコンテンツを要求することができる。
特定の実施形態は、自身のフィードに関する消費者の期待値を獲得するいくつかの特性を定義することができる。まず、フィードは時系列で並ぶべきであり、すなわちフィード内のコンテンツをタイムスタンプ順に表示して、フィード内のいずれか2つのコンテンツct1及びct2に関して、Timestamp(ct1)<Timestamp(ct2)の場合、コンテンツを古い順で表示した場合には、フィード内でct1がct2の前に表示され、コンテンツを新しい順で表示した場合には、フィード内でct2がct1の前に表示されるようにすべきである。例えば、コンテンツがウェブページ内に表示される場合、先に表示されたコンテンツの方が、後から表示されたコンテンツよりもウェブページの上部に近い。次に、フィード内のコンテンツはギャップレスとすべきであり、すなわち特定の作成者からのコンテンツをギャップなしで表示して、作成者pからのコンテンツにct1及びct2の2つが存在し、フィード内でct1がct2に先行し、ct1の後に続きct2に先行するpからのコンテンツがフィード内にない場合、pが作成したコンテンツにct1よりも大きくct2よりも小さなタイムスタンプを有するものがない(古い順で表示した場合)ようにすべきである。3番目に、フィード内にコンテンツの複製が存在してはならず、すなわちフィード内に2回以上現れるコンテンツctkは存在してはならない。
消費者が、自身のフィードを2回検索した場合、1回目の検索と2回目の検索の間でフィードがどのように変化したかに関する何らかの期待が存在し得る。例えば、消費者が、1回目の検索から特定の順序のいくつかのコンテンツを確認した場合、この消費者は、通常、2回目の検索からもこれらのコンテンツが同じ順序で表示されることを期待する。例えば、N=5個のコンテンツを含むフィード例について検討する。午後2時に検索された消費者のフィードは、以下を含むことができる。
Figure 2013521566
表2:第1のフィード例
消費者は、午後2:02に、自身のウェブページをリフレッシュして新たなバージョンのフィード検索されるようにすることができる。午後2:00から午後2:02の間に、アリスからの2つの新たなコンテンツが作成されたと仮定する。
Figure 2013521566
表3:第2のフィード例(全体的一貫性を使用)
第2のフィード例では、アリスが作成した2つの新たなコンテンツct6及びct7により、2つの最も古いコンテンツct1及びct2がフィードから消される一方で、全てのコンテンツの全体的な順序が、消費者の作成者全体にわたって保たれている。この特性(すなわち、全てのコンテンツの全体的な順序を保つこと)を「全体的一貫性」と呼ぶことができ、すなわちフィード内のコンテンツの順序は、消費者の作成者からの全てのコンテンツの潜在的なタイムスタンプ順に一致し、1つのフィードのビューから次のビューまでにコンテンツの順序は入れ替わられない。このモデルは、電子メールを時系列で表示するほとんどの電子メールリーダに類似しており、Twitterなどのフォローアプリケーションで使用されている。
しかしながら、場合によっては、全体的一貫性が望ましくないこともある。表3のフィード例について検討する。アリスのコンテンツは多いが、ボブのコンテンツはない。一部の作成者のコンテンツ率が、他の作成者よりも一時的に又は持続的に高くなった場合、異なる作成者が作成したコンテンツという意味におけるこのような多様性の欠如が生じ得る。フィードの多様性については、以下でより詳細に説明する。多様性を保つために、消費者は、「作成者ごとの一貫性」を選ぶことができ、この場合、所与の作成者からのコンテンツの順序は保たれるが、異なる作成者間のコンテンツの相対的順序に関する保証はされない。作成者ごとの一貫性の下では、消費者が自身のフィードを午後2:02にリフレッシュした場合、消費者が目にするのは以下の通りである。
Figure 2013521566
表4:第3のフィード例(作成者ごとの一貫性を使用)
この第3のフィード例は、追加されたアリスのコンテンツct6及びct7によってボブのコンテンツct2が第3のフィード例から消されていないので多様性を保っている。しかしながら、第2のフィード例では、ボブのコンテンツct2とチャドのコンテンツct4の間にアリスのコンテンツct3が存在するが、第3のフィード例では存在しない。このコンテンツの「消失」は、全体的一貫性の下では可能でないが、多様性の保持に役立てるために作成者ごとの一貫性の下では可能となる。
コンテンツ作成率又はコンテンツ消費率には、多くの消費者/作成者アプリケーション(フォローアプリケーションなど)に固有のスキューが存在するので、特定の実施形態は、多様性を保つための明示的なステップをとる必要がある。例えば、1日に1回アプリケーションにログインするユーザ(「ユーザ」は、消費者/作成者アプリケーションのユーザを意味し、作成者又は消費者又はこれらの両方のいずれであってもよい)、デービッドについて検討する。彼の父親(例えば、第2のユーザ)ボブは、1日に1回だけコンテンツを作成することができ、彼の姉(例えば、第3のユーザ)アリスは、1時間に1回新たなコンテンツを生成する。デービッドは、ログインすると、アリスからの最近のコンテンツの方がはるかに多いにもかかわらず、父親ボブの最新のコンテンツを見たいと思う。
特定の実施形態では、多様性を定義するための単純な方法は、消費者のフィードが、消費者がフォローする作成者の各々からのコンテンツを一般的には少なくとも1個又はそれ以上、少なくともk個含まなければならないと指定することである。しかしながら、消費者は、フィードのスロットよりも多くの作成者をフォローすることがあり、全ての作成者からのコンテンツを少なくともk個表示することは不可能である。さらに、特定の実施形態は、この制約を満たすだけのために、必ずしも極端に古いコンテンツを表示したいとは思わない。例えば、ボブの最新のコンテンツが1年前のものである場合、極端に古いコンテンツは消費者にとって陳腐な又は無意味なものとなりがちであるため、特定の実施形態は、たとえボブのコンテンツがゼロであることが示されるとしても、デービッドのフィードにこれを含めたいとは思わない。
従って、特定の実施形態は、k,t−多様性の概念を定義する。特定の実施形態では、上記の例を非形式的に使用して、k,t−多様性により、最後のt個の時間単位内にボブからのコンテンツが存在する場合、ボブのコンテンツがフィード内に表示されない場合にはフィード内にアリスからのコンテンツをk個しか表示しないようにすべきであると指定する。より形式的には、消費者cがフォローする2つの作成者pj及びpjについて検討する。特定の実施形態は、t秒よりも古くない作成者pからのコンテンツの数としてCandidate(p,t)を、cのフィード内に表示される作成者pからのコンテンツの数としてCount(p)を定義する。次に、k,t−多様性を、Candidate(pi,t)>0、かつCount(pi)=0の場合、Count(pj)≦k、と定義することができる。
再び、第1、第2、及び第3のフィード例について検討する。t=600秒及びk=1と指定されていると仮定する。この場合、(表3に示す)第2のフィード例は、Candidate(ボブ,600秒)=1及びCount(ボブ)=0であるが、Count(アリス)>1となるので認められない。しかしながら、第3のフィード例は認められる。なお、場合によっては、より強力な多様性の概念が好ましい。例えば、実際にボブのコンテンツが多く存在する場合、フィード内にアリスのコンテンツを10個表示し、ボブのコンテンツを1個しか表示しないのは好ましくない場合がある。従って、特定の実施形態は、表示するコンテンツ内で何らかの「エントロピー」の概念を最大化したいと望むことができる。しかしながら、本開示では、k,t−多様性が最小の多様性概念を捉え、最小の多様性概念でさえ全体的一貫性の保証と衝突することを示している。
フィードの生成にはシステム処理が必要である。例えば、プルの場合はクエリ時に、又はプッシュの場合はコンテンツ作成時に作業が行われる。この処理によってシステムにかかる作業負荷の種類(すなわち、必要なシステムリソースの量)はアーキテクチャに依存する。例えば、データをディスク上で具現化する場合、主なコストは、メモリとの間でデータの読み取り及び書き込みを行うことから生じる入力/出力(I/O)コストとなる可能性が高い。一方、多くの消費者/作成者アプリケーション(フォローアプリケーションなど)では、データが、実行のためにランダムアクセスメモリ(RAM)内でのみ具現化される。この場合、主なコストは、プロセッサ(CPUなど)コストとなる可能性が高い。
特定の実施形態は、システムのボトルネックリソース(I/O又はCPUなど)の総使用量としてCost()を形式的に定義する。この使用量は、作成時におけるコンテンツの処理、及びクエリ時におけるフィードの生成をいずれも含むことができる。この場合、特定の実施形態では、消費者/作成者アプリケーションの一般的な最適化問題を、Cost()を最小化する一方で、(1)時系列の、ギャップレスな、複製されていないフィードを提供すること、(2)選択した一貫性レベル(全体的又は作成者ごとなど)を尊重すること、及び(3)作成者ごとの一貫性を使用する場合にはk,t−多様性を保証すること、として定義することができる。また、特定の実施形態は、消費者/作成者アプリケーションを最適化する際にレイテンシを(例えば、付加的な制約として)考慮することができ、この場合、レイテンシを短縮するために何らかの追加のシステムコストを取引することができる。消費者/作成者アプリケーションのレイテンシ制約の最適化問題は、Cost()を最小化する一方で、(1)時系列の、ギャップレスな、複製されていないフィードを提供すること、(2)選択した一貫性レベル(全体的又は作成者ごとなど)を尊重すること、(3)作成者ごとの一貫性を使用する場合にはk,t−多様性を保証すること、及び(4)NパーセンタイルレイテンシがL未満であることを保証すること、として定義することができる。1つの事例では、99パーセンタイルレイテンシが50ミリ秒未満となるように指定することができる。この制約は、コンテンツをプッシュするか、それともプルするかに関する様々な決定を行うこと(例えば、より多くのコンテンツをプッシュして、クエリ時間レイテンシが制約を満たすようにすること)につながり得る。
作成者は、原子エンティティ(アプリケーションユーザ又はニュースウェブサイトなど)であっても、又は他の複数のサイトのアグリゲータであってもよい。アグリゲータは、複数のソースからの所与のトピックに関する単一のコンテンツストリームを作成できるので、一部の消費者/作成者アプリケーションにとっては重要である。さらに、アグリゲータは、通常は新たなコンテンツをプッシュしないソースから情報を抽出することができる。特定の実施形態は、原子作成者とアグリゲート作成者を同様に扱い、これらのコンテンツ作成率及びファンアウトのみを考慮する。しかしながら、特定の実施形態では、より一般的な問題を、アグリゲータが行わなければならない決定、すなわち、所与のアップストリームソースに関して、アグリゲータがプッシュを使用すべきか、それともプルを使用すべきかを調査することとすることができる。この決定は、ある消費者/作成者ペアに関してプッシュするか、それともプルするかを決定するときに特定の実施形態が行う決定に類似する場合もあるが、(例えば、どれほど頻繁にプルするか、及びプッシュコスト又はプルコストが異なるアップストリームソースをどのように処理するかなどの)さらなる複雑性も存在する。
上述したように、特定の実施形態は、コンテンツを処理するために、プッシュ及びプルという2つの方式を考慮することができる。特定の実施形態では、これらの方式を細かい粒度で選択することが取り組みとなる。特定の実施形態は、所与の消費者に関して、(コンテンツ作成の観点から)比較的頻度の低い作成者の場合はプッシュすることを選択し、(コンテンツ作成の観点から)比較的頻度の高い作成者の場合はプルすることを選択することができる。コンテンツ消費頻度又はコンテンツクエリ頻度は異なるが作成者は同じであるという消費者に関しては、異なる決定を行うことができる。特定の実施形態は、所与の(消費者、作成者)ペアに関して、作成者のコンテンツ作成頻度と消費者のコンテンツ消費頻度の間の比率を調べることができる。この比率の値が閾値要件を満たすかどうかに応じて、特定の実施形態は、この特定の(消費者、作成者)ペアに関してプッシュ方式又はプル方式のいずれかを選択することができる。特定の実施形態では、この比率に関する閾値要件を実験に基づいて決定することができる。例えば、1つの実施構成では、実験結果に基づいて、ある(消費者、作成者)ペアに関して、コンテンツ作成頻度とコンテンツ消費頻度の比率が約3よりも大きい場合にはプッシュ方式が選択され、それ以外はプル方式が選択される。
時には、特定の消費者又は作成者が、ある期間(例えば、1日又は1週間)にわたり、そのコンテンツ消費又はコンテンツ作成活動に関して、異なるけれども予測可能な行動パターンを示すことがある。特定の実施形態は、各(消費者、作成者)ペアに関してプッシュ方式とプル方式の間で選択を行うときに、このような行動パターンを考慮することができる。より詳細には、特定の実施形態は、コンテンツ作成頻度又はコンテンツ消費頻度とともに、又はこれの代わりに時間に基づいてプッシュとプルの間で決定を行うことができる。例えば、ある消費者が、通常は頻繁にコンテンツを消費していると仮定すると、この相対的に高いコンテンツ消費頻度からは、一般にこの消費者に関してはプッシュ方式を使用すべきであると提案がなされる。しかしながら、消費者の行動パターンが、消費者が毎日深夜から午前7:00の間にはコンテンツを全く要求(すなわち、消費)しないことを示すこともある。従って、いずれかのコンテンツが深夜から午前7:00の間に作成された場合には、プル方式を使用してこのコンテンツを配信することができる。さらに、消費者が午前7:00以降に行う最初の要求に関してもプル方式を使用することができる。
作成者は、1又はそれ以上のコンテンツを、(例えば、1日にnj個のコンテンツを作成するなどの)特定のコンテンツ作成頻度のペースφpjで作成することができ、消費者は、(必ずしも同じ作成者が作成したものではない)1又はそれ以上のコンテンツを、(例えば、1日にni個のコンテンツを消費するなどの)特定のコンテンツ消費頻度のペースφciで消費することができる。当然ながら、現実的には、作成者及び消費者は、必ずしもこのような一貫したルーチンには従わず、各エンティティが作成又は消費する実際のコンテンツ数は、その日その日で異なることがある。従って、特定の実施形態は、ある期間にわたる各作成者及び消費者の統計値を表す平均的又は中間的コンテンツ作成頻度又はコンテンツ消費頻度を使用することができる。
特定の実施形態では、各(作成者、消費者)ペアにプッシュ又はプルの決定を割り当てることにより、上記で定めた「Cost()を最小化する」という課題を、作成者ごとの一貫性及び全体的一貫性の場合の両方に関して解決することができる。特定の実施形態では、次にクエリレイテンシを制約として加えることができ、この制約を満たすために必要な追加コストを最小化する。最後に、特定の実施形態は、「エンティティ」が上流の作成者の消費者及び下流の消費者への作成者の両方として機能するようにする消費者/作成者アプリケーションの最適化問題のより一般的な公式化を検討することができる。
特定の実施形態では、接続ネットワークG(V,F)が、作成者から消費者への2部グラフである。消費者ciがコンテンツを求めるクエリを実行した場合、ciのフィードにいくつかのコンテンツを提供する必要がある。このシナリオに関して、上述した両方の一貫性の場合について検討する。全体的一貫性の場合には、特定の実施形態は、Fi(すなわち、ciがフォローする作成者の組)内の全ての作成者にわたる最新のπg個のコンテンツを供給する。作成者ごとの一貫性の場合には、特定の実施形態は、Fi内の各作成者の最新のπp個のコンテンツを供給する。
あらゆるシステムには、ProducerPivotedのコンテンツストア及びConsumerPivotedのフィードビューストアの記憶量の決定に応じて独自のプッシュ及びプルコストが伴う。ciのフィードにコンテンツをプッシュするコストをHiとし、作成者pjから一定数のコンテンツをプルするコストをLjとする。大抵の場合、特定の実施形態は、πgとπpがいずれも十分に小さいので、Ljが各々にとって同じになると仮定することができる。特定の実施形態は、プルを使用して単一の作成者から複数のコンテンツを検索できるとさらに仮定することができる。これにより、コンテンツが作成者によってクラスタ化され、単一の遠隔手順呼出しによって複数のコンテンツを検索でき、(例えば、ディスク検索がコストを占めるので)少数のコンテンツの場合にはコンテンツを検索するためのディスクコスト(あるとすれば)が一定であると仮定する。
特定の実施形態は、コンテンツが個別にシステムに到着し、コンテンツを取り込んでProducerPivotedテーブルに書き込むためのコストを考慮せず、このコストを、考えられる全てのポリシーに関して同じとすることができる単純なモデルを仮定することができる。従って、プッシュ/プルの決定を行うことができる粒度は、コンテンツごと、消費者ごとであり、特定の実施形態は、このようなペアごとにプッシュ又はプルを個別に選択することができる。同様に、システムコストもこの粒度で分析することができる。
さらに、特定の実施形態は、システム内で負荷が増加した場合でも、Hi及びLjのコストが一定であると仮定することができる。しかしながら、コンテンツ率又は作成者のファンアウトが増えるにつれてシステムボトルネックが変化した場合、この仮定は真でなくなることもある。例えば、特定の実施形態は、メモリ内のデータを具現化すると決定することができる。一方で、メインメモリの量が制限されており、ConsumerPivotedの合計サイズがシステムの集約RAMを超えて増大した場合、データがディスクに溢れて、プッシュ及びプルコストがディスクアクセスを含むように変化する可能性がある。通常、実際のところは、消費者/作成者アプリケーションが十分なリソース(メモリ、帯域幅、CPUなど)を提供して、これらのボトルネックの変化を避けてHi及びLjを一定に保つことができる。特定の実施形態では、分析により、データが完全にメモリ内に存在すると仮定することはないが、システムが拡張するときにコストが一定であると仮定する。
まず、作成者ごとの一貫性に関するコスト最適化について詳細に説明する。消費者ci、作成者pj、及びコンテンツctj,kに関して、特定の実施形態は、ctj,kをciに配信するための生涯コストを導出する。特定の実施形態では、ctj,kの寿命は、これが作成されてから、pjが次のπp個のコンテンツを作成したときまでの時間である。
特定の実施形態は、以下の観察を行う。
観察1。プルコストが、1回のプルで取得した全てのコンテンツにわたって償却され、プッシュ及びプルコストが一定であると仮定する。pjによるciへのコンテンツのプッシュ及びプルの生涯コストは、消費者のコンテンツクエリ率φci及び作成者のコンテンツ作成率φpjに依存する。
Push=Hi
Pull=Lj(φci/φpj
観察1は、以下のように証明することができる。プッシュコストは、コンテンツの寿命を意識せず、特定のコンテンツに対してHiが1回支払われる。一方、プルコストは、コンテンツの寿命に依存する。コンテンツctj,kは、πp/φpjという寿命を有する。この寿命にわたって、ciがctj,kを見る回数は、φci(πp/φpj)である。ctj,kをプルするためのコストは、Lj/πpである(Ljは、個々のプルされたコンテンツにわたって償却される)。従って、ctj,kの生涯コストは、Lj(φci/φpj)=(Lj/πp)φci(πp/φpj)となる。
この結果、特定の実施形態は、所与の(作成者、消費者)ペアに関して、プッシュコストの方がプルコストよりも低い場合にはコンテンツをプッシュすべきであり、プルコストの方がプッシュコストよりも低い場合にはコンテンツをプルすべきであると結論付けることができる。特定の実施形態は、結果として生じる不均衡から、以下のような最適な決定ルールを導出することができる。
補助定理1。
(φci/φpj)≧Hi/Ljの場合、pjによる全てのコンテンツをプッシュする。
(φci/φpj)<Hi/Ljの場合、pjによる全てのコンテンツをプルする。
この場合、プッシュかプルかの決定は、観察1におけるコストから直接引き出される。
次に、全体的一貫性に関するコスト最適化についてより詳細に説明する。全体的一貫性要件では、消費者ciのフィードが、Fi(すなわち、ciがフォローする全ての作成者の組)内の全ての作成者にわたるπg個の最新コンテンツを含む。
特定の実施形態は以下の観察を行う。
観察2。プッシュコスト及びプルコストが一定であると仮定する。
Push=Hi
Figure 2013521566
観察2は、いくつかの重要な違いはあるが、作成者ごとの場合と同様に証明することができる。作成者のコンテンツ作成頻度は、Fi
Figure 2013521566
の全てにわたる集合である。コンテンツctj,kの寿命はπg/φFiであり、その償却されるプルコストはLj/πgである。これらの項を、作成者ごとの分析に代入して、全体的一貫性のプッシュコスト及びプルコストに至ることができる。
次に、特定の実施形態は、全体的一貫性の場合における最適な(作成者、消費者)ペアの決定ルールを以下のように導出することができる。
補助定理2。
Figure 2013521566
の場合、pjによる全てのコンテンツをプッシュする。
Figure 2013521566
の場合、pjによる全てのコンテンツをプルする。
この場合、プッシュかプルかの決定は、観察2におけるコストから直接引き出される。
補助定理1及び2からの主な発見は、以下のように要約することができる。作成者ごとの一貫性の下では、特定の消費者にコンテンツを配信するための生涯コストが、消費者のコンテンツ消費頻度及びコンテンツの作成者のコンテンツ作成頻度の両方に依存する。全体的一貫性の下では、消費者にコンテンツを配信するための生涯コストが、消費者のコンテンツ消費頻度及び消費者がフォローする作成者の集約コンテンツ作成頻度の両方に依存する。この結果、特定の実施形態は、以下の2つの定理を提案する。
定理1。作成者ごとの一貫性では、補助定理1により決定された(作成者、消費者)ペアごとのプッシュとプルの比較を使用して、各(作成者、消費者)ペアに関してプッシュ又はプルを別個に選択することにより、システムコストを最小化する全体的最適計画が導出される。
作成者ごとの一貫性の場合、特定の実施形態は、コンテンツごとに支払われるコストを最小化することによって全体的コストを最小化する。同様に、特定の実施形態は、そのコンテンツに支払われるコストを消費者ごとに最小化することによってコンテンツのコストを最小化する。補助定理1は、消費者と作成者の間のエッジ上にある単一のコンテンツに支払われるコストを最小化するように各エッジを割り当てる。さらに、いずれか1つのエッジに割り当てが行われなければ、他のいずれかのエッジに行うことができる割り当てにいずれかの制約が課される。従って、消費者及びコンテンツごとのコストを最小化することにより、全体的コストが最小化される。
定理2。全体的一貫性では、補助定理2により決定された消費者ごとのプッシュとプルの比較を使用して、各消費者に関してプッシュ又はプルを別個に選択することにより、システムコストを最小化する全体的最適計画が導出される。
全体的一貫性の場合、補助定理1は、全てのエッジをプッシュ又はプルのいずれかに割り当てる。ここでも、エッジ割り当てがなければ、他のいずれかのエッジの割り当てが制限される。従って、消費者及びコンテンツごとのコストを最小化することにより、全体的コストが最小化される。以下、MinCostは、最小コストを表すものとする。
定理1及び2は、重要な実用的意義を有する。いずれのシステムも、異なるコンテンツクエリ率及びコンテンツ作成率、及びこれらの率にいずれの消費者又は作成者が最も多く貢献するかを制御するスキューの影響を受ける可能性がある。実際には、システムコストを最適化するために、これらのパターンを抽出又は理解する必要はない。代わりに、プッシュかプルかの決定を最適に行うために、特定の実施形態は、消費者のコンテンツクエリ率を個別に測定し、消費者がフォローする作成者のコンテンツ作成率と個別に又は全体的に比較すればよい。
3番目に、コスト最適化問題が、追加のクエリレイテンシ制約(すなわち、クエリレイテンシを最適化するとともにコストを最小化する)の下で分析され、これをレイテンシサービスレベル合意(SLA)を満たすものとして表すことができる。コンピュータネットワークの背景では、SLAを使用して、個々のネットワークエンティティ又は構成要素によるコンピューティングリソースの割り当て及び使用を制御することができる。例えば、特定のフォローアプリケーションは、フィードクエリの95%が100ms未満で実行することを強要することができる。場合によっては、最小のプッシュコスト対プルコスト方式がSLAを満たすことも可能である。しかしながら、場合によってはそうでないこともあり、この場合、特定の実施形態は、プッシュとプルを取引(コンテンツクエリ時にはプッシュがあまり機能しないように撤回)し、従ってシステムコストは上がるがレイテンシを下げることができる。いくつかの事例では、特定の実施形態が、プッシュのみの方式に移行して、極めて厳しいSLAを満たさなくてもよい。以下、LatencyConstrainedMinCostは、クエリレイテンシ制約も満たす最小コストを表すものとする。
フォローイング分析は、プッシュすることが役立つけれどコストがかかるという中間の場合を対象とする。実際には、所与のシステムがSLAを満たすためにどれほどの追加プッシュを行うかを推測的に予測するのは困難である。従って、特定の実施形態は、結果がSLAに収束するまで、追加プッシュの量を増分的に調整できる欲張りアルゴリズムを利用することができる。最適ではないが、多くの実際の設定ではこの方法が合理的である。フォローイング分析では、特定の実施形態において、目標プッシュ量の認識を仮定する。
Mincostがλmのレイテンシを生み出すものとする。この分析は、SLAを満たすためには、全てのクエリが行われた(消費者、作成者)ペアの一部λlをプッシュする必要があり、最小コストの解決策がペアの一部λoをプッシュし、この場合λo≦λlであるという仮定に基づくものである。特定の実施形態は、(消費者、作成者)ペアをプルからプッシュに移行させるときに支払われるコスト面でのペナルティとしてεを定義する。形式的には、作成者ごとの一貫性では、εi,j=φpj(H−Lj(φci/φpj))となる。これは、コンテンツごとに支払われる、プルの代わりにプッシュを行うための追加コストにpjのコンテンツ作成率を乗じたものである。
消費者/作成者エッジfi,jをプルからプッシュに移行させる利点は、コンテンツクエリ時(すなわち、消費者がコンテンツを消費する時点)にコンテンツの取得にかかる時間を短縮することによってもたらされ、φciが全体的なコンテンツクエリ率に寄与するクエリの割合に依存する。直観的には、コンテンツクエリ頻度の低い消費者よりもコンテンツクエリ頻度の高い消費者に対してプッシュを行った方が多くの利益を得ることができる。なお、このことは、λlの値を推測できないことを意味するが、これはλlのサイズが、いずれのエッジが最終的にプッシュに変換されるかに依存するためである。
特定の実施形態では、いずれの(消費者、作成者)ペアをプルからプッシュに移行させるかを選択することが問題である。特定の実施形態は、この問題を「ナップサック問題」の例に単純化することができる。通常、ナップサック問題の目標は、各々が特定の「スコア」に貢献するオブジェクトでナップサックを満たすことである。各オブジェクトは「重み」を有し、この重み制限を超えずにスコアの和を最大にすることが目的である。特定の実施形態は、(作成者、消費者)ペアを「オブジェクト」として概念化する(すなわち、各(作成者、消費者)ペアをオブジェクトと見なす)。オブジェクトοkはスコアφk及び重みεkを有し、この場合、φkは、消費者のコンテンツクエリ率に等しく、εkは(プルからプッシュに移行することにより生じる追加コストなどの)ペナルティである。全てのオブジェクトのλlの割合がプッシュされるように、十分なオブジェクトをプルからプッシュに移行することが目標となる。従って、特定の実施形態は、最適解でプルされるオブジェクトのうち、総スコアがλl−λoのオブジェクトをプッシュに移行させる必要がある。
Mincostでプルされるエッジの組について検討する。LatencyConstrainedMinCostを発見するには、プッシュに移行させるためのこれらのエッジのサブセットSを、
Figure 2013521566
及び
Figure 2013521566
が最小化されるように選択することが課題となる。Sの値を直接求める問題は、ナップサック問題に類似しているが、微妙に異なる。「容量」の制約はない。レイテンシを少なくともλm−λlだけ減少させる必要がある一方で、レイテンシをさらに減少させることもできる。この問題はナップサック問題に類似する。
検討していない実施上の問題が2つある。まず、ナップサック問題はNP困難である。次に、理論上は、fi,jをプッシュに移行させることによるレイテンシの短縮としてσi,jが定義されるが、実際には、エッジをプッシュに移行させることによって得られる利益を正確に予測するのは非常に困難である。特定の実施形態は、これらの2つの問題を適応的アルゴリズムで解決することができる。エッジをプッシュに移行させることによる正確なレイテンシの短縮を把握することは難しいが、直観では、コンテンツ消費頻度の高い消費者を選択すれば、より多くのフィード検索のレイテンシが短縮されるので、短縮が大きくなるはずであると考えられる。次に、特定の実施形態は、プロキシとしてσi,j=φciを設定する。このプロキシを使用した結果、エッジの相対的利益は分かるが、エッジの組の候補Sがレイテンシをλm−λlだけ短縮するかどうかは直接的には分からない。従って、特定の実施形態は、レイテンシをλm−λlだけ短縮するΣφciを推定してSの値を求めることから開始し、次に、SからLatencyConstrainedMinCostの解が得られる(すなわち、SLAを厳密に満たす)かどうかを実際に測定する。レイテンシが依然として高すぎる場合には、より大きなΣφciの値を求める必要があり、レイテンシがSLAよりも低い場合には、より小さなΣφciの値を求める必要がある。従って、直ぐに正しい解が得られる可能性は低い。
特定の実施形態は、目標のΣφciが調整されたときにのみ増分コストを負担する解を探す。さらに、ナップサック問題はNP困難であるため、この解が、最適解の好適な近似をもたらす必要がある。特定の実施形態は、この両方の問題に対処するために、最適解の欲張り近似を生成する適応的アルゴリズムを使用する。このような欲張り近似は、実際に有効であると期待される。特定の実施形態は、φci/σi,jによってプルエッジを降順にソートし、次に上位にランクされたいくつかのエッジをプッシュに移行させることができる。レイテンシがSLAよりも高い場合、上位にランクされたプルエッジを増分的にプッシュに移行させることができる。レイテンシがSLAよりも低い場合、下位にランクされたプッシュエッジを増分的にプルに移行させることができる。なお、特定の実施形態は、エッジがMincostでプッシュに割り当てられている場合には、決してこれらのエッジをプルに移行させることはない。
適応的アルゴリズムは、開始点としてMincostから実行することができる。特定の実施形態は、このアルゴリズムを定期的に繰り返して、LatencyConstrainedMinCostの解が得られることを確実にする。例えば、複数の消費者が新たな関心(例えば、新たな(作成者、消費者)ペア)を追加し、Mincostのために最適化を行うシステムが、これらに対してプル方式を選択したと仮定する。これらの新たな(作成者、消費者)ペアは、たとえ既存の(作成者、消費者)ペアに関してプッシュ/プルの決定が変更されなかった場合でも、レイテンシを増大させる可能性がある。従って、システムを再度LatencyConstrainedMinCostに移行させるために、適応的アルゴリズムを繰り返してエッジをプッシュに移行させる必要がある。
このアルゴリズムが常に最適解を発見するとは限らないが、実際に適切かつはるかに実用的である可能性が最も高い。特定の実施形態では、プッシュかプルかの決定がシステムに組み込まれる。欲張り解は、異なる目標レイテンシに効率的に適合するという利点を有する。SLAを満たすために、このシステムは、所望のレイテンシに達するまで単純にSにオブジェクトを追加することができる。
また、欲張りアルゴリズムにより発見される解は、接続ネットワークの特定のインスタンスに特有のものである。具体的には、レイテンシのために最適化が行われた後、消費者が、(例えば、新たな消費者/作成者ペアを設定して)新たな関心を示すことがあり、システムが、プッシュかプルかの決定基準に基づいて、これらのペアに関してプル方式を選択することがある。このような場合、これらの新たな消費者/作成者ペアは、既存の消費者/作成者ペアに関してプッシュ/プルの決定が変化していなくても、平均又は95パーセンタイルレイテンシを増加させることがある。従って、特定の実施形態は、欲張りアルゴリズムを定期的に繰り返して、接続ネットワークが変化したときにもレイテンシSLAが満たされることを確実にする。
個々の(消費者、作成者)ペアをプルからプッシュに移行させることに代わる特定の実施形態では、消費者をプルからプッシュにブロックとして移動させることができる。すなわち、(消費者、作成者)ペアをプルからプッシュに移動させる場合、特定の実施形態は、いくつかのプル(消費者、作成者)ペアを有する消費者を選択し、これらの全てを一気にプルからプッシュに移動させる。より詳細には、消費者は、各々がこの消費者によりフォローされる複数の作成者が作成したコンテンツを消費できるので、(消費者、作成者)ペアが存在する。従って、特定の消費者に関して、その(消費者、作成者)ペアのいくつかがプル方式を有するように決定し、その(消費者、作成者)ペアの残りがプッシュ方式を有するように決定することができる。特定の実施形態は、このような消費者を選択し、その(消費者、作成者)ペアを全てプッシュに移行させることができる。直観では、単一の消費者コンテンツクエリを低レイテンシで実行するには、この消費者に関する全ての作成者をプッシュに移動させる必要があり、そうでなければ、たった1つの作成者であっても、この作成者からプルする時間が消費者のコンテンツクエリ時間を占めるようになる。この場合、特定の実施形態は、消費者ci全体のεを
Figure 2013521566
として計算する。さらに、λlは、全てのクエリが行われた(消費者、作成者)ペアの一部であることから、全ての消費者クエリの一部であることに移行する。これらの変化でも、ナップサックの低減は変わらない。
消費者を大規模に移動させることは、クエリ時に各消費者にわずかな「ロングポール」しか残さないという利点を有する。しかしながら、その弱点は、自由度が減少してしまうので、レイテンシを最適化するのが困難になる可能性があるという点である。具体的には、場合によっては、特定の(作成者、消費者)ペアをプッシュに移動させたいと望むことはできるが、消費者全体を移動させるとシステムコストが過度に増加するので、これを行うのが不可能な場合もある。なお、方式の区別は、消費者がフォローする作成者を特定の実施形態が別個のオブジェクトに分解するか、それともブロックとして処理するかによってもたらされる。従って、この議題は、作成者ごとの一貫性にのみ存在する。全体的一貫性では、コンテンツの寿命が、消費者の作成者全てのコンテンツ作成頻度の関数であるため、消費者の作成者は全て、同じ利点(すなわち、消費者のコンテンツ消費頻度)及び同じペナルティ(すなわち、プルされた作成者の集約コンテンツ作成頻度)を有する。従って、全体的一貫性の場合、特定の実施形態がオブジェクトを(消費者、作成者)ペアとして定義するか、それとも消費者ブロックとして定義するかは重要でない。
最後に、エンティティが消費者(例えば、上流の作成者に対して)でもあり作成者(例えば、下流の消費者に対して)でもある状況について簡単に説明する。ここまでは、主に各ノードが作成者又は消費者のいずれかである単純な接続ネットワークに焦点を当てて分析してきた。すなわち、このネットワークは2部グラフである。最適化の基本は、このグラフ内の各エッジを個別に最適化し、さらに全体的な最適化を達成できるようにすることである。代わりに、いくつかのノードが、上流のコンテンツソース(すなわち、上流の作成者)に対する消費者でもあり、下流の消費者に対する作成者でもあることができる複合接続ネットワークが存在すると仮定する。例えば、いくつかのソースから「マドンナ」のコンテンツを集約し、次にこれらをダウンストリーム消費者が利用できるようにするノードがグラフ内に存在することがある。特定の実施形態では、エッジにプッシュ又はプルを割り当ててシステムコストを最小化することが依然として最適化問題である。しかしながら、プッシュかプルかの決定をエッジごとに個別に行うことができないというリスクがある。
このリスクの特徴を明らかにするために、「ネットワーク実行可能性」の特性について検討する。特定の実施形態では、ネットワークが、プッシュが割り当てられている各エッジに関して、各隣接する上流のエッジにもプッシュが割り当てられている場合かつこの場合に限り実行可能である。実行不可能なネットワークの例として、プッシュエッジの上流にプルエッジが存在するエッジのペアについて検討する。プッシュエッジは、その関連する作成者からのコンテンツを、これらが生成されたときにその関連する消費者へ送信するつもりであるが、上流のプルエッジは、コンテンツが生成されたときにこれらを配信しない。
特定の実施形態では、このリスクに対処するために追加の制約を加えて、プッシュコストとプルコスト、及びコンテンツ作成頻度とコンテンツ消費頻度のいずれかを解決することで実行可能な解も保証し、或いは最小コストの実行可能解の近似を発見するようにする。
図3に、本開示の実施形態を実施するのに適したシステムアーキテクチャ例300を示す。特定の実施形態では、システム300が、(ビューメンテナなどの)ビューメンテナンス機構310及びウェブサービングデータベース330を含む。特定の実施形態では、具現化の決定がビューメンテナンス機構310にカプセル化され、ウェブサービングデータベース330が、更新及びフィードビューの処理などのその他のタスクを処理する。
特定の実施形態では、ウェブサービングデータベース330が、弾性的にスケーリング可能であり、あらゆる数の記憶サーバを含むことができる。作成者がコンテンツを生成すると、このコンテンツは、作成者によりクラスタ化された記憶サーバに記憶される。作成者は、例えば、アプリケーション層(例えば、ユーザが直接コンテンツを生成する場合)であっても、又はクローラ/インジェスト層(例えば、外部ソースからコンテンツを検索するための)であってもよい。コンテンツがシステム300に入ると、システム300は、ビューメンテナ310に通知を送ることができる。ビューメンテナ310は、この新たなコンテンツを1又はそれ以上の消費者フィード記録にプッシュするかどうかを決定することによってこの通知に応答する。特定の実施形態では、この決定が作成者のコンテンツ作成率及び消費者のコンテンツクエリ率に依存するので、ビューメンテナ310は、ウェブサービングデータベース330からこの情報を読み取ることができる。コンテンツがプッシュされた場合、これが再び記憶サーバに書き込まれ、この時刻が消費者クラスタ化フィードビューに書き込まれる。
特定の実施形態は、主にインデックス及びビューメンテナンスを駆動するために、(更新が約束されたときは常に発射されるという理由で)単純なトリガに類似する「通知」機構を使用する。代替の実施形態は、元々の更新トランザクションの一部としてビューを更新すること、データベースログを探索することなどの他の機構を使用してビューメンテナ310を変更することができる。通知には、ビューメンテナンスが非同期的に行われるという利点があり、従って特定の実施形態は、元々の更新トランザクションにレイテンシを加えることなく、作成者及び消費者の率を読み取ることを含む潜在的にコストのかかる具現化を行うことができる。この通知方法の欠点は、具現化されるビューが、基本コンテンツストアに比べてわずかに古くさいかもしれない点であるが、通常、ウェブアプリケーション(フォローアプリケーションを含む)では、わずかな程度の古くささであれば許容することができる。
特定の実施形態では、消費者がそのビューを検索すると(例えば、ユーザがユーザのページにログインし、又はこれをリフレッシュすると)、クエリプロセッサ320にクエリが行われる。クエリプロセッサ320は、(1)既に具現化された(プッシュされた)コンテンツを検索し、(2)いずれの作成者からコンテンツをプルする必要があるかを決定するために、ConsumerPivotedから消費者の記録を読み取る。次に、ProducerPivotedに対して平行読み取りを行って、これらのコンテンツをプルすることができる。特定の実施形態では、消費者のフィードビュー記録が、具現化されたコンテンツ、及び消費者がフォローしている具現化されていない作成者のリストの両方を含む。
特定の実施形態は、(作成者がクラスタ化した)基本コンテンツストア、及び(消費者がクラスタ化した)具現化されたフィードビューを、いずれも同じデータベースインフラストラクチャに記憶することができる。或いは、特定の実施形態は、ProducerPivotedを一方のデータベースに、ConsumerPivotedをもう一方のデータベースに記憶することができる。
特定の実施形態では、ウェブサービングデータベース330が、個々の記録の読み取り及び書き込みを低レイテンシで行うように設計される。(このような多くの読み取り及び書き込み動作を処理する)スループットは、「スケールアウト」を通じて、すなわちシステムにより多くのサーバを追加することによって増加する。特定の実施形態では、システム300が、記録を順序付けて記憶することにより、狭い範囲の記録を効率的に検索できるようになる。効率的なプッシュ及びプル動作にとっては、範囲スキャンが特に重要となり得る。特定の実施形態は、関連データを記憶するのに十分なメインメモリを準備することを選択して低レイテンシを保証することができるが、データは、故障に耐え抜くためにディスクにも保持される。
特定の実施形態では、作成者がコンテンツを生成した場合、このコンテンツをProducerPivotedテーブルに書き込む必要がある。場合によっては、作成者が、コンテンツを記憶層に直接書き込むことができる。その他の場合には、作成者が、上流のコンテンツのアグリゲータとなることができる。上流のソースが、コンテンツをアグリゲータにプッシュすることもあり、或いはアグリゲータがコンテンツをプルする必要がある場合もあり、いずれの場合にも、例えば適当なアプリケーションプログラムインターフェイス(API)を使用する。
特定の実施形態では、作成者が新たなコンテンツを作成した場合、このコンテンツを1又はそれ以上の消費者記録内で具現化することによってプッシュするかどうかを決定するのはビューメンテナ310の責任である。従って、ビューメンテナ310は、補助定理1及び補助定理2の決定ルールをカプセル化する。特定の実施形態では、ビューメンテナ310が、データベース330からのテーブルの更新を定期的に読み取り、必要時に再びデータベース330に記録を書き込む。
特定の実施形態は、限定ではなく一例として、テーブルなどの適当なデータ構造に関連データ(ConnectionNetwork、ProducerPivoted、又はConsumerPivotedなど)を記憶することができる。例えば、ConnectionNetworkテーブルを使用して、消費者と作成者の間の接続グラフを記憶することができる。このテーブルの要点は、合成(作成者、優先度、消費者)である。補助定理1及び2に従って、消費者のコンテンツクエリ率及び作成者のコンテンツ作成率から優先度が計算される。ConnectionNetworkテーブルを作成者ごとに、次に優先度ごとにソートして、コンテンツをプッシュするかどうかに関する意思決定を容易にすることができる。新たなコンテンツが到着すると、特定の実施形態は、導出された最適な閾値(Hi/Ljなど)をRとする優先度Rから開始するプレフィクスをコンテンツの作成者によって付けられた記録にわたって範囲クエリを行う。これにより、コンテンツを具現化すべき対象消費者の組である、Rよりも優先度の高い(作成者、消費者)ペアのみを迅速に検索できるようになる。
別の例として、コンテンツをContentsByProducerテーブルに記憶することができる。このテーブルの要点は、コンテンツが作成者ごとにクラスタ化され、作成者の中の作成時刻によって順序付けられるようにする(作成者、タイムスタンプ)である。このような順序付けにより、所与の作成者から最新コンテンツを効率的に検索できるようになる。(通常、フィードは、最新のN個のコンテンツしか表示しないので)この検索は、検索するコンテンツ数の制限が指定された範囲スキャンによって実施することができる。
さらに別の例として、各消費者の具現化されたフィード記録をFeedテーブルに記憶することができる。このテーブルの要点は、消費者がフォローする作成者ごとに別個の記録が存在するようにする(消費者、作成者)である。消費者が新たな作成者をフォローすると決めた場合、最初はコンテンツを含まない新たなFeed記録が挿入される。ビューメンテナ310は、新たなコンテンツを通知されると、ConnectionNetworkテーブルに範囲スキャンを行って、コンテンツをプッシュすべき消費者のリストを発見し、消費者ごとに適当なFeed記録を更新する。この結果、いくつかのフィード記録は具現化されたコンテンツを有し、その他のフィード記録はヌルを有するようになる。このFeed記録は、(消費者、作成者)ペアに関する優先度を含むこともでき、この優先度は、ConnectionNetworkテーブルに記憶された優先度と同じものである。Feed記録がコンテンツを有していない(例えば、ヌル)場合、特定の実施形態は、優先度が閾値Hi/Lj未満の場合には、ContentsByProducerからのみプルすればよい。優先度が閾値よりも高いヌル記録は、コンテンツがプッシュされることを示すが、作成者はまだ何も作成していない。また、Feedテーブル内の「コンテンツ」のために確保されている列には、潜在的に複数のコンテンツが記憶され、作成者のファンアウトによって生じた複数の消費者のために同じコンテンツを記憶することができる。
作成者のコンテンツ作成率及び消費者のコンテンツクエリ率が変化するにつれ、特定の実施形態は、(消費者、作成者)ペアに関する優先度を適応させることができる。各作成者の率の統計値は、対応するContentsByProducer記録内に保持することができ、各消費者の率の統計値は、対応するFeed記録内に保持することができる。統計値及び優先度を更新する際には、観察を緩めるべきである。統計値を更新するための書き込み数を低減するために、特定の実施形態は近似統計値を保持し、各コンテンツ又はクエリに関する何らかの確率でのみ、これらを更新することができる。優先度を更新するための書き込み数を低減するために、特定の実施形態は、古い優先度と新しい優先度がプッシュ閾値をまたいで存在する場合にのみ更新を行うことができる。
特定の実施形態は、ネットワーク環境で実施することができる。図4に、ソフトウェアの妥当性確認をサービスとして行うのに適したネットワーク環境例400を示す。ネットワーク環境400は、1又はそれ以上のサーバ420と1又はそれ以上のクライアント430を互いに接続するネットワーク410を含む。特定の実施形態では、ネットワーク410が、イントラネット、エクストラネット、仮想プライベートネットワーク(VPN)、ローカルエリアネットワーク(LAN)、無線LAN(WLAN)、ワイドエリアネットワーク(WAN)、メトロポリタンエリアネットワーク(MAN)、インターネットの一部、又は別のネットワーク410、或いは2又はそれ以上のこのようなネットワーク410の組み合わせである。本開示は、あらゆる適当なネットワーク410を考慮する。
1又はそれ以上のリンク450が、サーバ420又はクライアント430をネットワーク410に接続する。特定の実施形態では、1又はそれ以上のリンク450の各々が、1又はそれ以上の有線、無線、又は光学リンク450を含む。特定の実施形態では、1又はそれ以上のリンク450の各々が、イントラネット、エクストラネット、VPN、LAN、WLAN、WAN、MAN、インターネットの一部、又は別のリンク450、或いは2又はそれ以上のこのようなリンク450の組み合わせを含む。本開示は、サーバ420及びクライアント430をネットワーク410に接続するあらゆる適当なリンク450を考慮する。
特定の実施形態では、各サーバ420が、単一のサーバであってもよく、或いは複数のコンピュータ又は複数のデータセンタにわたる分散サーバであってもよい。サーバ420は、限定ではなく一例として、ウェブサーバ、ニュースサーバ、メールサーバ、メッセージサーバ、広告サーバ、ファイルサーバ、アプリケーションサーバ、交換サーバ、データベースサーバ、又はプロキシサーバなどの様々なタイプであってよい。特定の実施形態では、各サーバ420が、ハードウェア、ソフトウェア、又は組み込み論理要素、或いはサーバ420により実施又はサポートされる適当な機能を実行するための2又はそれ以上のこのような構成要素の組み合わせを含むことができる。例えば、ウェブサーバは、一般にウェブページ又は特定のウェブページ要素を含むウェブサイトをホストすることができる。より詳細には、ウェブサーバは、HTMLファイル又はその他のファイルタイプをホストすることができ、或いは要求時にファイルを動的に作成又は構成し、クライアント430からのHTTP又はその他の要求に応じてこれらをクライアント430に通信することができる。メールサーバは、一般に様々なクライアント430に電子メールサービスを提供することができる。データベースサーバは、一般に1又はそれ以上のデータストアに記憶されたデータを管理するためのインターフェイスを提供することができる。
特定の実施形態では、1又はそれ以上のデータ記憶装置440を、1又はそれ以上のリンク450を介して1又はそれ以上のサーバ420に通信可能にリンクさせることができる。特定の実施形態では、データ記憶装置440を使用して、様々な種類の情報を記憶することができる。特定の実施形態では、データ記憶装置440に記憶された情報を、特定のデータ構造に従って体系化することができる。特定の実施形態では、各データ記憶装置440をリレーショナルデータベースとすることができる。特定の実施形態は、サーバ420又はクライアント430が、データ記憶装置440に記憶された情報を管理(例えば、検索、修正、追加、又は削除)できるようにするインターフェイスを提供することができる。
特定の実施形態では、各クライアント430を、ハードウェア、ソフトウェア、又は組み込み論理要素、或いは2又はそれ以上のこのような構成要素の組み合わせを含み、クライアント430が実施又はサポートする適当な機能を実行できる電子装置とすることができる。限定ではなく一例として、クライアント430は、デスクトップコンピュータシステム、ノートブックコンピュータシステム、ネットブックコンピュータシステム、ハンドヘルド電子装置、又は携帯電話であってもよい。本開示は、あらゆる好適なクライアント430を考慮する。クライアント430は、クライアント430のネットワークユーザがネットワーク430にアクセスできるようにすることができる。クライアント430は、そのユーザが、他のクライアント430の他のユーザと通信できるようにすることができる。
クライアント430は、MICROSOFT INTERNET EXPLORER、GOOGLE CHROME又はMOZILLA FIREFOXなどのウェブブラウザ432を有することができ、TOOLBAR又はYAHOO TOOLBARなどの、1又はそれ以上のアドオン、プラグイン、又はその他の拡張機能を有することができる。クライアント430のユーザは、ユニフォームリソースロケータ(URL)、又はウェブブラウザ432をサーバ420に向けるその他のアドレスを入力することができ、ウェブブラウザ432は、ハイパーテキスト転送プロトコル(HTTP)要求を生成して、このHTTP要求をサーバ420に通信することができる。サーバ420は、HTTP要求を受け入れ、このHTTP要求に応答してクライアント430に1又はそれ以上のハイパーテキストマークアップ言語(HTML)ファイルを通信することができる。クライアント430は、サーバ420からのHTMLファイルに基づいて、ユーザに提示するためのウェブページを表示することができる。本開示は、あらゆる好適なウェブページファイルを考慮する。限定ではなく一例として、ウェブページは、特定の必要性に基づいて、HTMLファイル、拡張可能ハイパーテキストマークアップ言語(XHTML)ファイル、又は拡張可能マークアップ言語(XML)ファイルから表示を行うことができる。このようなページは、限定ではなく一例として、JAVASCRIPT(登録商標)、JAVA(登録商標)、MICROSOFT SILVERLIGHT、AJAX(非同期JAVASCRIPT(登録商標)及びXML)などのマークアップ言語とスクリプトの組み合わせなどで書かれたようなスクリプトを実行することもできる。本明細書では、必要に応じて、ウェブページへの言及は、(ブラウザがウェブページを表示するために使用できる)1又はそれ以上の対応するウェブページファイルを含み、逆もまた同様である。
特定の実施形態は、1又はそれ以上のコンピュータシステム上で実施することができる。図5に、コンピュータシステム例500を示す。特定の実施形態では、1又はそれ以上のコンピュータシステム500が、本明細書で説明又は例示した1又はそれ以上の方法の1又はそれ以上のステップを実行する。特定の実施形態では、1又はそれ以上のコンピュータシステム500が、本明細書で説明又は例示した機能を提供する。特定の実施形態では、1又はそれ以上のコンピュータシステム500上で実行されるソフトウェアが、本明細書で説明又は例示した1又はそれ以上の方法の1又はそれ以上のステップを実行し、又は本明細書で説明又は例示した機能を提供する。特定の実施形態は、1又はそれ以上のコンピュータシステム500の1又はそれ以上の部分を含む。
本開示は、あらゆる好適な数のコンピュータシステム500を考慮する。本開示は、コンピュータシステム500があらゆる好適な物理的形状をとることを考慮する。限定ではなく一例として、コンピュータシステム500は、埋め込みコンピュータシステム、システムオンチップ(SOC)、(例えば、コンピュータオンモジュール(COM)又はシステムオンモジュール(SOM)などの)単一基板コンピュータシステム(SBC)、デスクトップコンピュータシステム、ラップトップ又はノートブックコンピュータシステム、対話型キオスク、メインフレーム、コンピュータシステムのメッシュ、携帯電話、携帯情報端末(PDA)、サーバ、又はこれらの2又はそれ以上の組み合わせであってもよい。必要に応じて、コンピュータシステム500は、1又はそれ以上のコンピュータシステム500を含むことができ、単一又は分散型とすることができ、複数の場所にわたることができ、複数の機械にわたることができ、或いは1又はそれ以上のネットワーク内の1又はそれ以上のクラウド構成要素を含むことができるクラウド内に常駐することができる。必要に応じて、1又はそれ以上のコンピュータシステム500は、本明細書で説明又は例示した1又はそれ以上の方法の1又はそれ以上のステップを、大きな空間的又は時間的制限を伴わずに実行することができる。限定ではなく一例として、1又はそれ以上のコンピュータシステム500は、本明細書で説明又は例示した1又はそれ以上の方法の1又はそれ以上のステップをリアルタイムで又はバッチモードで実行することができる。1又はそれ以上のコンピュータシステム500は、必要に応じて、本明細書で説明又は例示した1又はそれ以上の方法の1又はそれ以上のステップを異なる時点又は異なる場所で実行することができる。
特定の実施形態では、コンピュータシステム500が、プロセッサ502、メモリ504、記憶装置506、入力/出力(I/O)インターフェイス508、通信インターフェイス510、及びバス512を含む。本開示では、特定の構成内に特定の数の特定の構成要素を有する特定のコンピュータシステムを説明及び例示しているが、本開示は、あらゆる好適な構成内にあらゆる好適な数のあらゆる好適な構成要素を有するあらゆる好適なコンピュータシステムを考慮する。
特定の実施形態では、プロセッサ502が、コンピュータプログラムを構築するような命令を実行するためのハードウェアを含む。限定ではなく一例として、プロセッサ502は、命令を実行するために、内部レジスタ、内部キャッシュ、メモリ504、又は記憶装置506から命令を検索(又はフェッチ)し、これらの命令を復号して実行し、さらに1又はそれ以上の結果を、内部レジスタ、内部キャッシュ、メモリ504、又は記憶装置506に書き込むことができる。特定の実施形態では、プロセッサ502が、データ、命令又はアドレスのための1又はそれ以上の内部キャッシュを含むことができる。本開示は、プロセッサ502が、必要に応じてあらゆる好適な数のあらゆる好適な内部キャッシュを含むことを考慮する。限定ではなく一例として、プロセッサ502は、1又はそれ以上の命令キャッシュ、1又はそれ以上のデータキャッシュ、及び1又はそれ以上の変換索引バッファ(TLB)を含むことができる。命令キャッシュ内の命令は、メモリ504又は記憶装置506内の命令の複製であってもよく、この命令キャッシュは、プロセッサ502によるこれらの命令の検索を迅速化することができる。データキャッシュ内のデータは、メモリ504又は記憶装置506内の、プロセッサ502で実行される命令のためのデータの複製、プロセッサ502で実行される次の命令がアクセスするための、或いはメモリ504又は記憶装置506に書き込むための、プロセッサ502で実行された以前の命令の結果、又はその他の好適なデータであってもよい。データキャッシュは、プロセッサ502による読み取り又は書き込み動作を迅速化することができる。TLBは、プロセッサ502の仮想アドレス変換を迅速化することができる。特定の実施形態では、プロセッサ502が、データ、命令、又はアドレスのための1又はそれ以上の内部レジスタを含むことができる。本開示は、プロセッサ502が、必要に応じてあらゆる好適な数のあらゆる好適な内部レジスタを含むことを考慮する。必要に応じて、プロセッサ502は、1又はそれ以上の演算論理ユニット(ALU)を含むことができ、マルチコアプロセッサであってもよく、或いは1又はそれ以上のプロセッサ502を含むこともできる。本開示では、特定のプロセッサを説明及び例示しているが、本開示は、あらゆる好適なプロセッサを考慮する。
特定の実施形態では、メモリ504が、プロセッサ502が実行する命令又はプロセッサ502が作用するデータを記憶するためのメインメモリを含む。限定ではなく一例として、コンピュータシステム500は、記憶装置506又は(例えば、別のコンピュータシステム500などの)別のソースからメモリ504に命令をロードすることができる。次に、プロセッサ502は、メモリ504からの命令を内部レジスタ又は内部キャッシュにロードすることができる。プロセッサ502は、これらの命令を実行するために、内部レジスタ又は内部キャッシュから命令を検索してこれを復号することができる。プロセッサ502は、命令の実行中又は実行後に、(中間結果であっても又は最終結果であってもよい)1又はそれ以上の結果を内部レジスタ又は内部キャッシュに書き込むことができる。その後、プロセッサ502は、これらの結果の1又はそれ以上をメモリ504に書き込むことができる。特定の実施形態では、プロセッサ502が、(記憶装置506又はその他の場所とは対照的に)1又はそれ以上の内部レジスタ又は内部キャッシュ、或いはメモリ504内の命令のみを実行し、(記憶装置506又はその他の場所とは対照的に)1又はそれ以上の内部レジスタ又は内部キャッシュ、或いはメモリ504内のデータのみに作用する。(各々がアドレスバス及びデータバスを含むことができる)1又はそれ以上のメモリバスが、プロセッサ502をメモリ504に接続することができる。バス512は、以下で説明するような1又はそれ以上のメモリバスを含むことができる。特定の実施形態では、プロセッサ502とメモリ504の間に1又はそれ以上のメモリ管理ユニット(MMU)が存在して、プロセッサ502が要求するメモリ504へのアクセスを容易にする。特定の実施形態では、メモリ504が、ランダムアクセスメモリ(RAM)を含む。必要に応じて、このRAMを不揮発性メモリとすることができる。必要に応じて、このRAMを動的RAM(DRAM)又は静的RAM(SRAM)とすることもできる。さらに、必要に応じて、このRAMを単一ポート又はマルチポートRAMとすることもできる。本開示は、あらゆる好適なRAMを考慮する。必要に応じて、メモリ504は、1又はそれ以上のメモリ504を含むことができる。本開示では、特定のメモリを説明及び例示しているが、本開示はあらゆる好適なメモリを考慮する。
特定の実施形態では、記憶装置506が、データ又は命令のための大容量記憶装置を含む。限定ではなく一例として、記憶装置506は、HDD、フロッピー(登録商標)ディスクドライブ、フラッシュメモリ、光学ディスク、磁気光学ディスク、磁気テープ、又はユニバーサルシリアルバス(USB)ドライブ、或いはこれらの2又はそれ以上の組み合わせを含むことができる。必要に応じて、記憶装置506は、取り外し可能又は取り外し不能(すなわち固定)媒体を含むことができる。必要に応じて、記憶装置506は、コンピュータシステム500の内部又は外部に存在することができる。特定の実施形態では、記憶装置506が不揮発性固体メモリである。特定の実施形態では、記憶装置506が読出し専用メモリ(ROM)を含む。必要に応じて、このROMを、マスクプログラム化ROM、プログラム可能ROM(PROM)、消去可能PROM(EPROM)、電気的消去可能PROM(EEPROM)、電気的変更可能ROM(EAROM)、又はフラッシュメモリ、或いはこれらの2又はそれ以上の組み合わせとすることができる。本開示は、大容量記憶装置506があらゆる好適な物理的形式をとることを考慮する。必要に応じて、記憶装置506は、プロセッサ502と記憶装置506の間の通信を容易にする1又はそれ以上の記憶制御ユニットを含むことができる。必要に応じて、記憶装置506は、1又はそれ以上の記憶装置506を含むことができる。本開示では、特定の記憶装置を説明及び例示しているが、本開示は、あらゆる好適な記憶装置を考慮する。
特定の実施形態では、I/Oインターフェイス508が、コンピュータシステム500と1又はそれ以上のI/O装置の間の通信のための1又はそれ以上のインターフェイスを提供するハードウェア、ソフトウェア、又はこれらの両方を含む。必要に応じて、コンピュータシステム500は、これらのI/O装置の1又はそれ以上を含むことができる。これらのI/O装置の1又はそれ以上は、人とコンピュータシステム500の間の通信を可能にすることができる。限定ではなく一例として、I/O装置は、キーボード、キーパッド、マイク、モニタ、マウス、プリンタ、スキャナ、スピーカ、静止カメラ、スタイラス、タブレット、タッチスクリーン、トラックボール、ビデオカメラ、別の好適なI/O装置、或いはこれらの2又はそれ以上の組み合わせを含むことができる。I/O装置は、1又はそれ以上のセンサを含むことができる。本開示は、あらゆる好適なI/O装置、及びこれらの装置のためのあらゆる好適なI/Oインターフェイス508を考慮する。必要に応じて、I/Oインターフェイス508は、プロセッサ502がこれらのI/O装置の1又はそれ以上を駆動できるようにする1又はそれ以上の装置又はソフトウェアドライバを含むことができる。必要に応じて、I/Oインターフェイス508は、1又はそれ以上のI/Oインターフェイス508を含むことができる。本開示では、特定のI/Oインターフェイスを説明及び例示しているが、本開示はあらゆる好適なI/Oインターフェイスを考慮する。
特定の実施形態では、通信インターフェイス510が、コンピュータシステム500と1又はそれ以上の他のコンピュータシステム500、或いは1又はそれ以上のネットワークとの間の通信(例えば、パケットベースの通信など)のための1又はそれ以上のインターフェイスを提供するハードウェア、ソフトウェア、又はこれらの両方を含む。限定ではなく一例として、通信インターフェイス510は、イーサネット(登録商標)又は他の配線に基づくネットワークと通信するためのネットワークインターフェイスコントローラ(NIC)又はネットワークアダプタ、或いはWI−FIネットワークなどの無線ネットワークと通信するための無線NIC(WNIC)又は無線アダプタを含むことができる。本開示は、あらゆる好適なネットワーク、及びこのネットワークのためのあらゆる好適な通信インターフェイス510を考慮する。限定ではなく一例として、コンピュータシステム500は、アドホックネットワーク、パーソナルエリアネットワーク(PAN)、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、メトロポリタンエリアネットワーク(MAN)、又はインターネットの1又はそれ以上の部分、或いはこれらの2又はそれ以上の組み合わせと通信することができる。これらのネットワークの1又はそれ以上の1又はそれ以上の部分は、有線であっても又は無線であってもよい。一例として、コンピュータシステム500は、(例えば、BLUETOOTH WPANなどの)無線PAN(WPAN)、WI−FIネットワーク、WI−MAXネットワーク、(例えば、グローバル・システム・フォー・モバイル・コミュニケーションズ(GSM(登録商標))ネットワークなどの)携帯電話ネットワーク、又はその他の好適な無線ネットワーク、或いはこれらの2又はそれ以上の組み合わせと通信することができる。必要に応じて、コンピュータシステム500は、これらのネットワークのいずれかのためのあらゆる好適な通信インターフェイス510を含むことができる。必要に応じて、通信インターフェイス510は、1又はそれ以上の通信インターフェイス510を含むことができる。本開示では、特定の通信インターフェイスを説明及び例示しているが、本開示は、あらゆる好適な通信インターフェイスを考慮する。
特定の実施形態では、バス512が、コンピュータシステム500の構成要素を互いに接続するハードウェア、ソフトウェア、又はこれらの両方を含む。限定ではなく一例として、バス512は、アクセラレーティッド・グラフィクス・ポート(AGP)又はその他のグラフィクスバス、拡張業界標準アーキテクチャ(EISA)バス、フロント側バス(FSB)、ハイパートランスポート(HT)相互接続、業界標準アーキテクチャ(ISA)バス、INFINIBAND相互接続、ローピンカウント(LPC)バス、メモリバス、マイクロ・チャネル・アーキテクチャ(MCA)バス、周辺構成要素相互接続(PCI)バス、PCIエクスプレス(PCI-X)バス、シリアル・アドバンスド・テクノロジ・アタッチメント(SATA)バス、ビデオ電子機器標準アソシエーションローカル(VLB)バス、又は別の好適なバス、或いはこれらの2又はそれ以上の組み合わせを含むことができる。必要に応じて、バス512は、1又はそれ以上のバス512を含むことができる。本開示では、特定のバスを説明及び例示しているが、本開示は、あらゆる好適なバス又は相互接続を考慮する。
本明細書では、コンピュータ可読記憶媒体への言及が、1又はそれ以上の非一時的有形コンピュータ可読記憶媒体処理構造を含む。限定ではなく一例として、必要に応じて、コンピュータ可読記憶媒体は、(例えば、フィールドプログラマブルゲートアレイ(FPGA)又は特定用途向けIC(ASIC)などの)半導体に基づく又はその他の集積回路(IC)、ハードディスク、HDD、混合ハードドライブ(HHD)、光学ディスク、光学ディスクドライブ(ODD)、磁気光学ディスク、磁気光学ドライブ、フロッピー(登録商標)ディスク、フロッピー(登録商標)ディスクドライブ(FDD)、磁気テープ、ホログラフィック記憶媒体、固体ドライブ(SSD)、RAMドライブ、SECURE DIGITALカード、SECURE DIGITALドライブ、又は別の好適なコンピュータ可読記憶媒体、或いはこれらの2又はそれ以上の組み合わせを含むことができる。本明細書では、コンピュータ可読記憶媒体への言及は、米国特許法第101条における特許権保護の資格がないあらゆる媒体を除外する。本明細書では、コンピュータ可読記憶媒体への言及は、米国特許法第101条における特許権保護の資格がない限り、(伝搬電気又は電磁信号単独などの)一時的な信号送信の形を除外する。
本開示は、あらゆる好適な記憶媒体を実装する1又はそれ以上のコンピュータ可読記憶媒体を考慮する。特定の実施形態では、必要に応じて、コンピュータ可読記憶媒体が、プロセッサ502の(例えば、1又はそれ以上の内部レジスタ又はキャッシュなどの)1又はそれ以上の部分、メモリ504の1又はそれ以上の部分、記憶装置506の1又はそれ以上の部分、或いはこれらの組み合わせを実装する。特定の実施形態では、コンピュータ可読記憶媒体はRAM又が、ROMを実装する。特定の実施形態では、コンピュータ可読記憶媒体が、揮発性又は永続メモリを実装する。特定の実施形態では、1又はそれ以上のコンピュータ可読記憶媒体が、ソフトウェアを具体化する。本明細書では、ソフトウェアへの言及が、必要に応じて、1又はそれ以上のアプリケーション、バイトコード、1又はそれ以上のコンピュータプログラム、1又はそれ以上の実行ファイル、1又はそれ以上の命令、論理、機械コード、1又はそれ以上のスクリプト、又はソースコードを含むことができ、逆もまた同様である。特定の実施形態では、ソフトウェアが、1又はそれ以上のアプリケーションプログラミングインターフェイス(API)を含む。本開示は、あらゆる好適なプログラミング言語又はプログラミング言語の組み合わせで書かれた又は別様に表現されたあらゆる好適なソフトウェアを考慮する。特定の実施形態では、ソフトウェアが、ソースコード又はオブジェクトコードとして表現される。特定の実施形態では、ソフトウェアが、例えば、C、Peal、又はこれらの適当な拡張などの高水準プログラミング言語で表現される。特定の実施形態では、ソフトウェアが、アセンブリ言語(又は機械コード)などの低水準プログラミング言語で表現される。特定の実施形態では、ソフトウェアがJAVA(登録商標)で表現される。特定の実施形態では、ソフトウェアが、ハイパーテキストマークアップ言語(HTML)、拡張可能マークアップ言語(XML)、又はその他の好適なマークアップ言語で表現される。
本開示は、本明細書の実施形態例に対する、当業者が把握する全ての変更、置換、変形、改変、及び修正を含む。同様に、必要に応じて、添付の特許請求の範囲は、本明細書の実施形態例に対する、当業者が把握する全ての変更、置換、変形、改変、及び修正を含む。
110 コンテンツ作成者からコンテンツフィードを介してコンテンツ消費者にコンテンツを配信するためのプッシュコスト及びプルコストを計算
120 コンテンツフィードのためのプッシュ方式又はプル方式のいずれかの配信コストが低い方を選択

Claims (24)

  1. 1又はそれ以上のコンピュータ装置によって、
    1又はそれ以上のコンテンツ作成者の各々に関して、前記コンテンツ作成者が1又はそれ以上のコンテンツ項目を作成するコンテンツ作成率にアクセスするステップと、
    1又はそれ以上のコンテンツ消費者の各々に関して、前記コンテンツ消費者が1又はそれ以上のコンテンツ項目を消費するコンテンツ消費率にアクセスするステップと、
    前記コンテンツ作成者の1つと、該コンテンツ作成者をフォローする前記コンテンツ消費者の1つとを含む複数の消費者/作成者ペアの各々に関して、前記コンテンツ消費者の前記コンテンツ消費率及び前記コンテンツ作成者の前記コンテンツ作成率に基づいて、前記コンテンツ作成者から前記コンテンツ消費者に1又はそれ以上のコンテンツ項目を配信するためのプッシュ方式とプル方式の間で選択を行うステップと、
    を含み、
    前記プッシュ方式では、前記コンテンツ作成者が前記コンテンツ項目を作成したときに、前記コンテンツ項目の各々が前記コンテンツ作成者から前記コンテンツ消費者に配信され、
    前記プル方式では、前記コンテンツ消費者が前記コンテンツ項目を消費したときに、前記コンテンツ項目の各々が前記コンテンツ作成者から前記コンテンツ消費者に配信される、
    ことを特徴とする方法。
  2. 前記消費者/作成者ペアの各々に関して、
    前記コンテンツ消費者の前記コンテンツ消費率と前記コンテンツ作成者の前記コンテンツ作成率の間の比率が閾値よりも大きい場合には前記プッシュ方式を選択し、
    前記コンテンツ消費者の前記コンテンツ消費率と前記コンテンツ作成者の前記コンテンツ作成率の間の比率が前記閾値よりも小さい場合には前記プル方式を選択する、
    ことを特徴とする請求項1に記載の方法。
  3. 前記消費者/作成者ペアの各々に関して、前記プッシュ方式又は前記プル方式が、全体的一貫性を維持しながらコストを最小化することによって選択され、
    前記コストが、前記消費者/作成者ペア間で前記コンテンツ項目を配信する総リソースコストであり、
    前記全体的一貫性が、前記コンテンツ消費者の各々に関して、前記コンテンツ消費者がフォローする全ての前記コンテンツ作成者が作成した全ての前記コンテンツ項目のタイムスタンプに従う順序で前記コンテンツ項目が配信されることを保証し、各コンテンツ項目の前記タイムスタンプが、前記コンテンツ項目が作成された時刻を示す、
    ことを特徴とする請求項1に記載の方法。
  4. 前記消費者/作成者ペアの各々に関して、
    前記コンテンツ消費者をcとし、
    前記コンテンツ作成者をpとし、
    cがフォローする、pを含む全ての前記コンテンツ作成者をPcとし、
    c内のコンテンツ作成者をpjとし、
    cの前記コンテンツ消費率をφcとし、
    jの前記コンテンツ作成率をφpjとし、
    cにコンテンツ項目をプッシュするためのコストをCpushとし、
    pから一定数のコンテンツ項目をプルするためのコストをCpullとして、
    Figure 2013521566
    の場合、前記プッシュ方式を選択し、
    Figure 2013521566
    の場合、前記プル方式を選択する、
    ことを特徴とする請求項3に記載の方法。
  5. 前記消費者/作成者ペアの各々に関して、前記プッシュ方式又は前記プル方式が、作成者ごとの一貫性を維持しながらコストを最小化することによって選択され、
    前記コストが、前記消費者/作成者ペア間で前記コンテンツ項目を配信する総リソースコストであり、
    前記作成者ごとの一貫性が、前記コンテンツ消費者の各々に関して、前記コンテンツ消費者がフォローする前記コンテンツ作成者の各々からのコンテンツ項目が、前記コンテンツ作成者が作成した全ての前記コンテンツ項目のタイムスタンプに従う順序で配信されることを保証し、各コンテンツ項目の前記タイムスタンプが、前記コンテンツ項目が作成された時刻を示す、
    ことを特徴とする請求項1に記載の方法。
  6. 前記消費者/作成者ペアの各々に関して、
    前記コンテンツ消費者をcとし、
    前記コンテンツ作成者をpとし、
    cの前記コンテンツ消費率をφcとし、
    pの前記コンテンツ作成率をφpとし、
    cにコンテンツ項目をプッシュするためのコストをCpushとし、
    pから一定数のコンテンツ項目をプルするためのコストをCpullとして、
    (φc/φp)≧Cpush/Cpullの場合、前記方式を選択し、
    (φc/φp)<Cpush/Cpullの場合、前記プル方式を選択する、
    ことを特徴とする請求項5に記載の方法。
  7. 前記消費者/作成者ペアの各々に関して、前記プッシュ方式又は前記プル方式が、レイテンシサービスレベル合意をさらに満たすことによって選択され、
    前記レイテンシサービスレベル合意が満たされない場合、
    前記プル方式を有する前記消費者/作成者ペアの1又はそれ以上を選択するステップと、
    前記選択された消費者/作成者ペアを前記プッシュ方式に移行させるステップと、
    をさらに含むことを特徴とする請求項6に記載の方法。
  8. 前記コンテンツ消費者の第1の消費者に関して、期間に関するコンテンツ消費パターンにアクセスするステップと、
    前記第1のコンテンツ消費者と、前記コンテンツ作成者の1つとを含む前記消費者/作成者ペアの第1のペアに関して、前記第1のコンテンツ消費者の前記コンテンツ消費パターン及び前記コンテンツ項目が配信された時刻にさらに基づいて、前記コンテンツ作成者からの1又はそれ以上のコンテンツ項目を前記第1のコンテンツ消費者に配信するための前記プッシュ方式と前記プル方式の間で選択を行うステップと、
    をさらに含むことを特徴とする請求項1に記載の方法。
  9. 1又はそれ以上のプロセッサにより実行可能な命令を含むメモリと、
    前記メモリに結合されて前記命令を実行する1又はそれ以上のプロセッサと、
    を備えたシステムであって、前記1又はそれ以上のプロセッサが、前記命令の実行時に、
    1又はそれ以上のコンテンツ作成者の各々に関して、前記コンテンツ作成者が1又はそれ以上のコンテンツ項目を作成するコンテンツ作成率にアクセスし、
    1又はそれ以上のコンテンツ消費者の各々に関して、前記コンテンツ消費者が1又はそれ以上のコンテンツ項目を消費するコンテンツ消費率にアクセスし、
    前記コンテンツ作成者の1つと、該コンテンツ作成者をフォローする前記コンテンツ消費者の1つとを含む複数の消費者/作成者ペアの各々に関して、前記コンテンツ消費者の前記コンテンツ消費率及び前記コンテンツ作成者の前記コンテンツ作成率に基づいて、前記コンテンツ作成者から前記コンテンツ消費者に1又はそれ以上のコンテンツ項目を配信するためのプッシュ方式とプル方式の間で選択を行い、
    前記プッシュ方式では、前記コンテンツ作成者が前記コンテンツ項目を作成したときに、前記コンテンツ項目の各々が前記コンテンツ作成者から前記コンテンツ消費者に配信され、
    前記プル方式では、前記コンテンツ消費者が前記コンテンツ項目を消費したときに、前記コンテンツ項目の各々が前記コンテンツ作成者から前記コンテンツ消費者に配信される、
    ことを特徴とするシステム。
  10. 前記消費者/作成者ペアの各々に関して、
    前記コンテンツ消費者の前記コンテンツ消費率と前記コンテンツ作成者の前記コンテンツ作成率の間の比率が閾値よりも大きい場合には前記プッシュ方式を選択し、
    前記コンテンツ消費者の前記コンテンツ消費率と前記コンテンツ作成者の前記コンテンツ作成率の間の比率が前記閾値よりも小さい場合には前記プル方式を選択する、
    ことを特徴とする請求項9に記載のシステム。
  11. 前記消費者/作成者ペアの各々に関して、前記プッシュ方式又は前記プル方式が、全体的一貫性を維持しながらコストを最小化することによって選択され、
    前記コストが、前記消費者/作成者ペア間で前記コンテンツ項目を配信する総リソースコストであり、
    前記全体的一貫性が、前記コンテンツ消費者の各々に関して、前記コンテンツ消費者がフォローする全ての前記コンテンツ作成者が作成した全ての前記コンテンツ項目のタイムスタンプに従う順序で前記コンテンツ項目が配信されることを保証し、各コンテンツ項目の前記タイムスタンプが、前記コンテンツ項目が作成された時刻を示す、
    ことを特徴とする請求項9に記載のシステム。
  12. 前記消費者/作成者ペアの各々に関して、
    前記コンテンツ消費者をcとし、
    前記コンテンツ作成者をpとし、
    cがフォローする、pを含む全ての前記コンテンツ作成者をPcとし、
    c内のコンテンツ作成者をpjとし、
    cの前記コンテンツ消費率をφcとし、
    jの前記コンテンツ作成率をφpjとし、
    cにコンテンツ項目をプッシュするためのコストをCpushとし、
    pから一定数のコンテンツ項目をプルするためのコストをCpullとして、
    Figure 2013521566
    の場合、前記プッシュ方式を選択し、
    Figure 2013521566
    の場合、前記プル方式を選択する、
    ことを特徴とする請求項11に記載のシステム。
  13. 前記消費者/作成者ペアの各々に関して、前記プッシュ方式又は前記プル方式が、作成者ごとの一貫性を維持しながらコストを最小化することによって選択され、
    前記コストが、前記消費者/作成者ペア間で前記コンテンツ項目を配信する総リソースコストであり、
    前記作成者ごとの一貫性が、前記コンテンツ消費者の各々に関して、前記コンテンツ消費者がフォローする前記コンテンツ作成者の各々からのコンテンツ項目が、前記コンテンツ作成者が作成した全ての前記コンテンツ項目のタイムスタンプに従う順序で配信されることを保証し、各コンテンツ項目の前記タイムスタンプが、前記コンテンツ項目が作成された時刻を示す、
    ことを特徴とする請求項9に記載のシステム。
  14. 前記消費者/作成者ペアの各々に関して、
    前記コンテンツ消費者をcとし、
    前記コンテンツ作成者をpとし、
    cの前記コンテンツ消費率をφcとし、
    pの前記コンテンツ作成率をφpとし、
    cにコンテンツ項目をプッシュするためのコストをCpushとし、
    pから一定数のコンテンツ項目をプルするためのコストをCpullとして、
    (φc/φp)≧Cpush/Cpullの場合、前記方式を選択し、
    (φc/φp)<Cpush/Cpullの場合、前記プル方式を選択する、
    ことを特徴とする請求項13に記載のシステム。
  15. 前記消費者/作成者ペアの各々に関して、前記プッシュ方式又は前記プル方式が、レイテンシサービスレベル合意をさらに満たすことによって選択され、
    前記1又はそれ以上のプロセッサが、前記命令の実行時にさらに、
    前記レイテンシサービスレベル合意が満たされない場合、
    前記プル方式を有する前記消費者/作成者ペアの1又はそれ以上を選択し、
    前記選択された消費者/作成者ペアを前記プッシュ方式に移行させる、
    ことを特徴とする請求項14に記載のシステム。
  16. 前記1又はそれ以上のプロセッサが、前記命令の実行時にさらに、
    前記コンテンツ消費者の第1の消費者に関して、期間に関するコンテンツ消費パターンにアクセスし、
    前記第1のコンテンツ消費者と、前記コンテンツ作成者の1つとを含む前記消費者/作成者ペアの第1のペアに関して、前記第1のコンテンツ消費者の前記コンテンツ消費パターン及び前記コンテンツ項目が配信された時刻にさらに基づいて、前記コンテンツ作成者からの1又はそれ以上のコンテンツ項目を前記第1のコンテンツ消費者に配信するための前記プッシュ方式と前記プル方式の間で選択を行う、
    ことを特徴とする請求項9に記載のシステム。
  17. ソフトウェアを具体化する1又はそれ以上のコンピュータ可読有形記憶媒体であって、前記ソフトウェアが、1又はそれ以上のコンピュータシステムによる実行時に、
    1又はそれ以上のコンテンツ作成者の各々に関して、前記コンテンツ作成者が1又はそれ以上のコンテンツ項目を作成するコンテンツ作成率にアクセスし、
    1又はそれ以上のコンテンツ消費者の各々に関して、前記コンテンツ消費者が1又はそれ以上のコンテンツ項目を消費するコンテンツ消費率にアクセスし、
    前記コンテンツ作成者の1つと、該コンテンツ作成者をフォローする前記コンテンツ消費者の1つとを含む複数の消費者/作成者ペアの各々に関して、前記コンテンツ消費者の前記コンテンツ消費率及び前記コンテンツ作成者の前記コンテンツ作成率に基づいて、前記コンテンツ作成者から前記コンテンツ消費者に1又はそれ以上のコンテンツ項目を配信するためのプッシュ方式とプル方式の間で選択を行い、
    前記プッシュ方式では、前記コンテンツ作成者が前記コンテンツ項目を作成したときに、前記コンテンツ項目の各々が前記コンテンツ作成者から前記コンテンツ消費者に配信され、
    前記プル方式では、前記コンテンツ消費者が前記コンテンツ項目を消費したときに、前記コンテンツ項目の各々が前記コンテンツ作成者から前記コンテンツ消費者に配信される、
    ことを特徴とする1又はそれ以上のコンピュータ可読有形記憶媒体。
  18. 前記消費者/作成者ペアの各々に関して、
    前記コンテンツ消費者の前記コンテンツ消費率と前記コンテンツ作成者の前記コンテンツ作成率の間の比率が閾値よりも大きい場合には前記プッシュ方式を選択し、
    前記コンテンツ消費者の前記コンテンツ消費率と前記コンテンツ作成者の前記コンテンツ作成率の間の比率が前記閾値よりも小さい場合には前記プル方式を選択する、
    ことを特徴とする請求項17に記載の媒体。
  19. 前記消費者/作成者ペアの各々に関して、前記プッシュ方式又は前記プル方式が、全体的一貫性を維持しながらコストを最小化することによって選択され、
    前記コストが、前記消費者/作成者ペア間で前記コンテンツ項目を配信する総リソースコストであり、
    前記全体的一貫性が、前記コンテンツ消費者の各々に関して、前記コンテンツ消費者がフォローする全ての前記コンテンツ作成者が作成した全ての前記コンテンツ項目のタイムスタンプに従う順序で前記コンテンツ項目が配信されることを保証し、各コンテンツ項目の前記タイムスタンプが、前記コンテンツ項目が作成された時刻を示す、
    ことを特徴とする請求項17に記載の媒体。
  20. 前記消費者/作成者ペアの各々に関して、
    前記コンテンツ消費者をcとし、
    前記コンテンツ作成者をpとし、
    cがフォローする、pを含む全ての前記コンテンツ作成者をPcとし、
    c内のコンテンツ作成者をpjとし、
    cの前記コンテンツ消費率をφcとし、
    jの前記コンテンツ作成率をφpjとし、
    cにコンテンツ項目をプッシュするためのコストをCpushとし、
    pから一定数のコンテンツ項目をプルするためのコストをCpullとして、
    Figure 2013521566
    の場合、前記プッシュ方式を選択し、
    Figure 2013521566
    の場合、前記プル方式を選択する、
    ことを特徴とする請求項19に記載の媒体。
  21. 前記消費者/作成者ペアの各々に関して、前記プッシュ方式又は前記プル方式が、作成者ごとの一貫性を維持しながらコストを最小化することによって選択され、
    前記コストが、前記消費者/作成者ペア間で前記コンテンツ項目を配信する総リソースコストであり、
    前記作成者ごとの一貫性が、前記コンテンツ消費者の各々に関して、前記コンテンツ消費者がフォローする前記コンテンツ作成者の各々からのコンテンツ項目が、前記コンテンツ作成者が作成した全ての前記コンテンツ項目のタイムスタンプに従う順序で配信されることを保証し、各コンテンツ項目の前記タイムスタンプが、前記コンテンツ項目が作成された時刻を示す、
    ことを特徴とする請求項17に記載の媒体。
  22. 前記消費者/作成者ペアの各々に関して、
    前記コンテンツ消費者をcとし、
    前記コンテンツ作成者をpとし、
    cの前記コンテンツ消費率をφcとし、
    pの前記コンテンツ作成率をφpとし、
    cにコンテンツ項目をプッシュするためのコストをCpushとし、
    pから一定数のコンテンツ項目をプルするためのコストをCpullとして、
    (φc/φp)≧Cpush/Cpullの場合、前記方式を選択し、
    (φc/φp)<Cpush/Cpullの場合、前記プル方式を選択する、
    ことを特徴とする請求項21に記載の媒体。
  23. 前記消費者/作成者ペアの各々に関して、前記プッシュ方式又は前記プル方式が、レイテンシサービスレベル合意をさらに満たすことによって選択され、
    前記1又はそれ以上のプロセッサが、前記命令の実行時にさらに、
    前記レイテンシサービスレベル合意が満たされない場合、
    前記プル方式を有する前記消費者/作成者ペアの1又はそれ以上を選択し、
    前記選択された消費者/作成者ペアを前記プッシュ方式に移行させる、
    ことを特徴とする請求項22に記載の媒体。
  24. 前記1又はそれ以上のプロセッサが、前記命令の実行時にさらに、
    前記コンテンツ消費者の第1の消費者に関して、期間に関するコンテンツ消費パターンにアクセスし、
    前記第1のコンテンツ消費者と、前記コンテンツ作成者の1つとを含む前記消費者/作成者ペアの第1のペアに関して、前記第1のコンテンツ消費者の前記コンテンツ消費パターン及び前記コンテンツ項目が配信された時刻にさらに基づいて、前記コンテンツ作成者からの1又はそれ以上のコンテンツ項目を前記第1のコンテンツ消費者に配信するための前記プッシュ方式と前記プル方式の間で選択を行う、
    ことを特徴とする請求項17に記載の媒体。
JP2012556061A 2010-03-01 2011-02-28 ユーザコンテンツフィードをサポートするための機構 Active JP5450841B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/714,876 2010-03-01
US12/714,876 US8156240B2 (en) 2010-03-01 2010-03-01 Mechanism for supporting user content feeds
PCT/US2011/000383 WO2011109082A2 (en) 2010-03-01 2011-02-28 Mechanism for supporting user content feeds

Publications (2)

Publication Number Publication Date
JP2013521566A true JP2013521566A (ja) 2013-06-10
JP5450841B2 JP5450841B2 (ja) 2014-03-26

Family

ID=44505900

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012556061A Active JP5450841B2 (ja) 2010-03-01 2011-02-28 ユーザコンテンツフィードをサポートするための機構

Country Status (8)

Country Link
US (2) US8156240B2 (ja)
EP (1) EP2542979B1 (ja)
JP (1) JP5450841B2 (ja)
KR (1) KR101434075B1 (ja)
CN (1) CN102782681B (ja)
AU (1) AU2011221590B2 (ja)
TW (1) TWI467505B (ja)
WO (1) WO2011109082A2 (ja)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9182932B2 (en) 2007-11-05 2015-11-10 Hewlett-Packard Development Company, L.P. Systems and methods for printing content associated with a website
US8156240B2 (en) * 2010-03-01 2012-04-10 Yahoo! Inc. Mechanism for supporting user content feeds
US20120066303A1 (en) * 2010-03-03 2012-03-15 Waldeck Technology, Llc Synchronized group location updates
US8732150B2 (en) 2010-09-23 2014-05-20 Salesforce.Com, Inc. Methods and apparatus for suppressing network feed activities using an information feed in an on-demand database service environment
US20120109936A1 (en) * 2010-10-29 2012-05-03 Nec Laboratories America, Inc. Cost-effective data layout optimization over heterogeneous storage classes
WO2012116236A2 (en) 2011-02-23 2012-08-30 Nova Spivack System and method for analyzing messages in a network or across networks
US9152357B2 (en) 2011-02-23 2015-10-06 Hewlett-Packard Development Company, L.P. Method and system for providing print content to a client
US9137394B2 (en) 2011-04-13 2015-09-15 Hewlett-Packard Development Company, L.P. Systems and methods for obtaining a resource
US8825842B2 (en) * 2011-04-28 2014-09-02 Facebook, Inc. Managing notifications pushed to user devices
US9846743B2 (en) * 2011-09-02 2017-12-19 Thomson Reuters Global Resources Unlimited Company Systems, methods, and interfaces for analyzing webpage portions
US9489161B2 (en) 2011-10-25 2016-11-08 Hewlett-Packard Development Company, L.P. Automatic selection of web page objects for printing
US8832092B2 (en) 2012-02-17 2014-09-09 Bottlenose, Inc. Natural language processing optimized for micro content
US9773214B2 (en) 2012-08-06 2017-09-26 Hewlett-Packard Development Company, L.P. Content feed printing
WO2014032002A1 (en) * 2012-08-23 2014-02-27 Ims Health Incorporated Detecting drug adverse effects in social media and mobile applications
US9774488B2 (en) * 2012-10-18 2017-09-26 Tara Chand Singhal Apparatus and method for a thin form-factor technology for use in handheld smart phone and tablet devices
US9785454B2 (en) * 2013-07-25 2017-10-10 Login VSI B.V. Virtual session benchmarking tool for measuring performance and/or scalability of centralized desktop environments
US9876711B2 (en) 2013-11-05 2018-01-23 Cisco Technology, Inc. Source address translation in overlay networks
US10050912B2 (en) * 2014-10-27 2018-08-14 At&T Intellectual Property I, L.P. Subscription-based media push service
US9813518B2 (en) * 2014-11-20 2017-11-07 Trading Technologies International, Inc. Merging data downloads with real-time data feeds
US10116493B2 (en) 2014-11-21 2018-10-30 Cisco Technology, Inc. Recovering from virtual port channel peer failure
US10082992B2 (en) 2014-12-22 2018-09-25 Hewlett-Packard Development Company, L.P. Providing a print-ready document
CN105656983A (zh) * 2015-09-17 2016-06-08 宇龙计算机通信科技(深圳)有限公司 应用消息设置方法、装置和电子设备
US10142163B2 (en) 2016-03-07 2018-11-27 Cisco Technology, Inc BFD over VxLAN on vPC uplinks
US11170059B2 (en) * 2016-03-30 2021-11-09 International Business Machines Corporation Personalized content selection for time-constrained sessions
US10333828B2 (en) 2016-05-31 2019-06-25 Cisco Technology, Inc. Bidirectional multicasting over virtual port channel
US11509501B2 (en) 2016-07-20 2022-11-22 Cisco Technology, Inc. Automatic port verification and policy application for rogue devices
US10776846B2 (en) * 2016-07-27 2020-09-15 Nike, Inc. Assortment optimization
US10193750B2 (en) 2016-09-07 2019-01-29 Cisco Technology, Inc. Managing virtual port channel switch peers from software-defined network controller
US10547509B2 (en) 2017-06-19 2020-01-28 Cisco Technology, Inc. Validation of a virtual port channel (VPC) endpoint in the network fabric
US10558723B2 (en) * 2017-09-29 2020-02-11 Salesforce.Com, Inc. Dynamic materialization of feeds for enabling access of the feed in an online social network
CN112069190B (zh) * 2019-06-11 2023-06-09 腾讯科技(深圳)有限公司 一种分批数据获取方法、装置、设备及介质
US11354220B2 (en) 2020-07-10 2022-06-07 Metawork Corporation Instrumentation trace capture technique
US11327871B2 (en) * 2020-07-15 2022-05-10 Metawork Corporation Instrumentation overhead regulation technique
US11392483B2 (en) 2020-07-16 2022-07-19 Metawork Corporation Dynamic library replacement technique
US11677804B2 (en) 2021-10-06 2023-06-13 International Business Machines Corporation Determining appropriate application of pull or push communication request types for client server calls

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1143353A2 (en) * 2000-03-09 2001-10-10 Ateon Networks, Inc. Adaptive media streaming server for playing live and streaming media content on demand through web client's browser with no additional software or plug-ins
JP2003304290A (ja) * 2002-04-08 2003-10-24 Ntt Data Corp 携帯インスタントメッセージサービスシステム及び携帯インスタントメッセージサービスプログラム
US7058691B1 (en) * 2000-06-12 2006-06-06 Trustees Of Princeton University System for wireless push and pull based services
US20080189429A1 (en) * 2007-02-02 2008-08-07 Sony Corporation Apparatus and method for peer-to-peer streaming
JP2009193250A (ja) * 2008-02-13 2009-08-27 Nec Corp 分散ディレクトリサーバ、分散ディレクトリシステム、分散ディレクトリ方法、およびプログラム
US20100095016A1 (en) * 2008-10-15 2010-04-15 Patentvc Ltd. Methods and systems capable of switching from pull mode to push mode

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6044205A (en) * 1996-02-29 2000-03-28 Intermind Corporation Communications system for transferring information between memories according to processes transferred with the information
US6275871B1 (en) * 1996-07-03 2001-08-14 Siemens Aktiengesellschaft Asynchronous transport optimizing observer-pattern-like system supporting several modes for an interface definition language-less communication subsystem
EP1143352A2 (en) 2000-03-09 2001-10-10 Ateon Networks, Inc. Scalable media index system for displaying multiple "live media index menus" on a web clients browser with no additional software or plug-ins
KR100408401B1 (ko) * 2001-02-23 2003-12-06 삼성전자주식회사 광 기록/재생기기 및 트랙킹 에러신호 검출방법
US20030097448A1 (en) * 2001-11-21 2003-05-22 Menezes Francisco Jose Server control of hypertext transfer protocol client
US8645470B2 (en) * 2002-12-06 2014-02-04 Core Wireless Licensing S.A.R.L. System, method and computer program product for the delivery of media content
US20050015488A1 (en) * 2003-05-30 2005-01-20 Pavan Bayyapu Selectively managing data conveyance between computing devices
US7310632B2 (en) * 2004-02-12 2007-12-18 Microsoft Corporation Decision-theoretic web-crawling and predicting web-page change
KR100739721B1 (ko) * 2005-08-17 2007-07-13 삼성전자주식회사 정보 제공 방법 및 푸시 모드 서비스 제공 방법
US20070100959A1 (en) * 2005-10-28 2007-05-03 Yahoo! Inc. Customizing RSS content for use over a network
US7895309B2 (en) * 2006-01-11 2011-02-22 Microsoft Corporation Network event notification and delivery
US7644139B2 (en) * 2006-05-02 2010-01-05 Research In Motion Limited Method and system for optimizing metadata passing in a push content processing protocol
US8024452B2 (en) * 2006-05-02 2011-09-20 Research In Motion Limited Dynamic syndicated content delivery system and method
TW200744008A (en) * 2006-05-18 2007-12-01 Geoinfor Scientek Consultant Inc Portable business information service system
TW200745877A (en) * 2006-06-07 2007-12-16 Telepaq Technology Inc Distributed push-pull information service system
KR100786125B1 (ko) * 2006-08-30 2007-12-18 삼성전자주식회사 릴레이 방식의 통신 시스템에서 서비스 경로 선택 방법 및장치
US20080244082A1 (en) * 2006-12-15 2008-10-02 Haoming Shen Contents communication method for transmitting contents by using a predetermined communication protocol, and contents transmitting apparatus and contents receiving apparatus using the method
EP1944944A1 (en) * 2007-01-12 2008-07-16 Thomson Licensing System and method for combining pull and push modes
US7890592B2 (en) * 2007-06-29 2011-02-15 Microsoft Corporation Processing data obtained from a presence-based system
JP4650547B2 (ja) * 2008-09-30 2011-03-16 ソニー株式会社 情報処理装置、プログラム、および情報処理システム
US8655842B2 (en) * 2009-08-17 2014-02-18 Yahoo! Inc. Push pull caching for social network information
US8156240B2 (en) * 2010-03-01 2012-04-10 Yahoo! Inc. Mechanism for supporting user content feeds

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1143353A2 (en) * 2000-03-09 2001-10-10 Ateon Networks, Inc. Adaptive media streaming server for playing live and streaming media content on demand through web client's browser with no additional software or plug-ins
JP2001306437A (ja) * 2000-03-09 2001-11-02 Ateon Networks ライブおよびストリーミングメディア内容を、追加のソフトウェアまたはプラグインを用いずにウェブクライアントのブラウザを通じてオンデマンドに再生するための適応メディアストリーミングサーバ
US7058691B1 (en) * 2000-06-12 2006-06-06 Trustees Of Princeton University System for wireless push and pull based services
JP2003304290A (ja) * 2002-04-08 2003-10-24 Ntt Data Corp 携帯インスタントメッセージサービスシステム及び携帯インスタントメッセージサービスプログラム
US20080189429A1 (en) * 2007-02-02 2008-08-07 Sony Corporation Apparatus and method for peer-to-peer streaming
JP2009193250A (ja) * 2008-02-13 2009-08-27 Nec Corp 分散ディレクトリサーバ、分散ディレクトリシステム、分散ディレクトリ方法、およびプログラム
US20100095016A1 (en) * 2008-10-15 2010-04-15 Patentvc Ltd. Methods and systems capable of switching from pull mode to push mode

Also Published As

Publication number Publication date
JP5450841B2 (ja) 2014-03-26
KR20120123519A (ko) 2012-11-08
TWI467505B (zh) 2015-01-01
US20110213894A1 (en) 2011-09-01
AU2011221590A1 (en) 2012-08-02
CN102782681B (zh) 2015-05-20
TW201203153A (en) 2012-01-16
WO2011109082A3 (en) 2012-01-12
KR101434075B1 (ko) 2014-08-27
CN102782681A (zh) 2012-11-14
EP2542979A2 (en) 2013-01-09
AU2011221590B2 (en) 2014-02-13
WO2011109082A2 (en) 2011-09-09
US20120179782A1 (en) 2012-07-12
EP2542979B1 (en) 2015-01-14
US8554944B2 (en) 2013-10-08
EP2542979A4 (en) 2013-10-23
US8156240B2 (en) 2012-04-10

Similar Documents

Publication Publication Date Title
JP5450841B2 (ja) ユーザコンテンツフィードをサポートするための機構
Shukla et al. Riotbench: An iot benchmark for distributed stream processing systems
US10754846B2 (en) Age-based policies for determining database cache hits
Rao et al. The big data system, components, tools, and technologies: a survey
US10121169B2 (en) Table level distributed database system for big data storage and query
CN107077476B (zh) 利用动态类型的大数据对事件进行丰富以用于事件处理
US10469979B2 (en) Managing data access in mobile devices
CA2882187A1 (en) Graph query language api querying and parsing
Rietveld et al. Linked data-as-a-service: the semantic web redeployed
JP2020528614A (ja) 分散ストレージ環境のための認知ファイルおよびオブジェクト管理のための方法、コンピュータ・プログラムおよびシステム
CN110291515B (zh) 计算系统中的分布式索引搜索
Waseem et al. Quantitative analysis and performance evaluation of target-oriented replication strategies in cloud computing
Tolooee et al. A scalable framework for continuous query evaluations over multidimensional, scientific datasets
Hsieh et al. Small data: Applications and architecture
Gao et al. Practical Experience Report: Cassandra+: Trading-Off Consistency, Latency, and Fault-tolerance in Cassandra
Pimenta Junior et al. Determination of the turning point of cache efficiency in computer networks with logic Eτ
Reali et al. Two-layer network caching for different service requirements
JP6348127B2 (ja) データセットのサンプリング
Song et al. Soft Quorums: A High Availability Solution for Service Oriented Stream Systems
Yang et al. A study of hotspot data prediction model in I/O workloads
Lee The war on language: language management and resistance in contemporary China

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131030

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: 20131125

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131225

R150 Certificate of patent or registration of utility model

Ref document number: 5450841

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

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

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

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

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

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350