のためのWebサービスの実装または低速なデータセットを大

わたしnは、AjaxやRESTのアプリケーション、Webサービスのコンテキストは、大規模なデータセットまたは低速なデータセットを公開するには、得られた溶液をできるだけ効率的に要件があるための特別な注目に値する。この記事は、aWebサービスを実装するのは、次の側面をカバーしている公開大規模なデータセットまたは低速のデータセット:

•大規模または低速なデータアプリケーションをどのように設定のコンテキストを理解され

•ソリューションの全体的なアーキテクチャのアウトライン

•どのようにアプリケーションの条件でのコーディングに設計する必要があります決定

  

問題 あなたは、その生成するのに長い時間がかかる大規模なデータセットまたはデータセットを公開するWebサービスを作成する。

理論 多くの開発者、エンドユーザーに必要なレコードの膨大な数を見るには発生します。この問題は、ほとんどの開発者の最初の反応は、"いいえ、それは実行することはできません。"だが、ときに、GoogleやYahooを見て!検索エンジンは、あなたが行うことができます参照してください。この記事は、具体的に、どのようにaWebブラウザで64,000のレコードを表示するなどの問題を解決するために設定されます。は、大規模なデータセットまたは低速なデータは、Webサービスを設定するための解決策は非常に特化されている一般的なソリューションとして使用すべきではないに注意してください。ソリューションの複雑さは、あらゆるアプリケーションで使用するための現実的になります。は、単一のリクエストとレスポンスは、Webサービスはシンプルで必要とする状態またはコールバックのない管理。この記事のソリューションでは、状態やコールバックが必要です。効率は、このソリューションの要件のだが、効率が相対的であることを忘れないし、ソリューションを可能な限りコンテキストとして効率的になります。

ご存知のように、任意の検索エンジンでは、テキストボックスに、検索ボタンをクリックし、関連するHTMLページの用語またはフレーズインチ型が返されます語の用語またはフレーズを入力しますかどうかは、検索エンジンの有用な結果を示し、このソリューションのポイントではありません。どのような関係であるという事実は、検索では、HTMLページには、約175,000,000使用可能な結果の1ページあたり10件ずつ表示結果が実行されます。HTMLの検索結果ページに良いし、見た目だけを検索0.13秒かかりました。検索速度のユーザーを驚かする必要がありますが、私は冷笑的な傾向にあります。私は、0.13秒はうそではないが、問題は、何が0.13秒の測定がされることか?の措置は、0.13秒は175,000,000ページ内で検索用語があるだろうか?このケースに該当したため、各ページ0.00000000074286秒、あるいは、発見された各ページには、3GHzのCPUの2つのクロックサイクルで発見されたことを意味する私は、それを疑う。これらの統計は誰も結果を見つけた場合でも、並列プロセスの関与を警戒しなければならない。だから、もし統計をとてもポイントに近似されます不適合とされて、実際に何が起こっている?検索エンジンの設定の錯視を使って大規模なまたは低速のデータの問題を解決されます。錯視は、検索エンジンは、高速な方法で情報にもかかわらず、あなただけの合計の情報を非常に小さなとげを見ている場合を提示されています。

のための検索エンジンのインデックスを返す膨大なデータの10の結果を検索するのは難しいされていない設定します。として10件の結果が生成され、単一のHTMLページとして、検索結果の2番目と3番目のバッチが生成されて返されます。私はとも推測すると、Yahoo! 100がリンクの結果リストを生成します。私は、それはおそらくないの検索結果の10ページへのリンクされている結果、100個の要素のページの下のために設定されますね。 10および10 Multiply、および、100のリンクを取得します。どのような非常に興味深いことですどのようにヤフー!あなたが設定した結果を取得することができます。 URLは、クエリによって生成された検討:

http://search.yahoo.com/search?p=really+big+search&fRは= fPのタブのWeb - t500&トグル= 1&警官=&えい= UTF - 8で

RESTのURLは、以前の記事で説明されあなたの経験に基づいて、個々のクエリパラメータが何をすべきかを推測することができる必要があります。前に私は、クエリパラメータのURLで見てみると2番目のページのリンクをクリックした後(2"が"結果の下部に表示させ行うものと思います)説明:

http://search.yahoo.com/search?p=really+big+search&トグル= 1&えい=はUTF - 8&fRは= fPのタブのWeb - t500&bの= 11

このURLから、それは/検索思わRESTの観点からは、ルートのURLです。したがって、この意味では、URLを実行する/すべての検索結果を返すと、検索?理論は、はい、私はそれを疑う、実際になるため、このすべてのHTMLページにYahooのインデックス付けされたアルファベット順のリストを返すことを意味する!は、完全実装の観点から現実的です。思うヤフー! http://images.search.yahoo.com/search/images?p=really+bigため、検索結果ページの上部には、次のURLをクリックした場合は画像リンクが生成されてfulアプローチは、RESTを使用しています: +検索&トグル= 1&えい=はUTF - 8&fRは= fPのタブのWeb - t500&Feature Release 2の=タブのWebに注意して画像のURL /検索/画像は、画像検索のURLに属しているという意味だが、彼らの検索をより具体的な型を表す。 RESTのWebサービスのアプローチでは、この理想的なネーミング戦略を表しています。また、どのように一般的な、イメージベースの検索のためのクエリパラメータは同じですわかります。これもうまくのREST Webサービスの設計を示しています。URLのパラメータは、検索結果の膨大な量のフィルタリングの方法を表しています。最初のメソッドは、は、p、クエリパラメータによって定義されているクエリ自体にはフィルタリングが含まれます。これは、複数の人が同じ条件については、同じビューが表示されます検索を意味しますこれは、結果セットを定義するのは非常に巧妙な方法です。検索を考えると、Yahooから!ユーザーを区別していません。

以来、複数の人が返されるのと同じ結果、その結果を識別する方法を参照することができます識別することが必要です。 the bのクエリパラメータでは、検索結果の開始インデックスを定義して目的を果たします。場合は半信半疑だったがYahoo!サーバーサイドの結果セットが、その後のbのクエリパラメータを保持はこのことを納得させる必要があります。 the bのクエリパラメータの数値での効果によれば、"以下のリンクをリストのインデックス11、12、13、14、15、16、17、18、19、20の検索結果では可能なセットは本当に大きなリターンです検索"ヤフー!例では、大規模なデータセットを提示するためのキーコンポーネントの錯覚を作成して示しています。この例では錯覚、その結果の残りの部分との際に要求さを提示した結果のサブセットを提示している。したがって、64,000レコード内のSQLクエリの結果は、錯視は100人ほどの結果を提示するが、バックグラウンド100かそこらの結果。次のリストの状況では、適用される属性をプレゼントすると、別のバッチを準備するテクニックは、この資料で定義された:

データセット•無限と解釈されることができます。にもかかわらず、ある理論的限界値は、データセットを無限に思われる実用的な観点からです。たとえば、任意の数学的なアルゴリズムは、1万人に番号1のすべての四角形など、無限と解釈される可能性がデータの系列を生成します。もう1つの例では、検索エンジンは、膨大な結果がデータベースに照会されたセットを生成する膨大なデータベースにリンクされます。

データセット•要求の時点で入手可能ではありません。この文脈では、一連のイベントをトリガするリクエストを確認します。これは、イベントのいくつかの計算時間を必要とする、その結果はすぐに利用されていません。たとえば、検索エンジンのマッシュアップの場合は、個々の検索エンジンからの検索結果の配信の時間を少量必要があります。もう1つの例では、投資ポートフォリオの利益と損失の計算です。

データ•多くの要素のデータを単一の連続した作品として考慮する必要がある1つのブロックは、ブロックされます。 ソリューション大規模または低速なデータセットのためのアーキテクチャ、およびその2つのチャネルの通信機構のアーキテクチャを含むクライアントコンポーネントは、マルチスレッドまたはmultiprocessesをサポートするサーバーコンポーネントが必要な例は歴史的な相場のアプリケーションです。クライアントは2つの相互作用:HTTP POSTおよびHTTPは、同じURLにGETを持っています/サービス/歴史/ *.技術的なレベルでは、2つの相互作用を独立していますが、それらはしばしば一緒に仕事。 POSTの相互作用のデータを送信するために使用され、相互作用のGETデータを取得するために使用されます。厳密には、RESTのWebサービスなどの相互作用を意味します:タスクは、POSTリクエストを起動し、タスクの回答が送信されますがGETを使用して取得されます。

2つのチャンネルのように、クライアントが実行中のタスクに複数の回答を受け取ることができます使用されます。この機能は、必要時に、大規模なまたは低速なデータセットを作業中です。現在のタスクを実行することはできませんし、完全な答えを待つにもかかわらず、非同期モードで機能してからブラウザを停止しないとXMLHttpRequestを使って。これをできるだけ早く利用可能にされている結果を表示したいなら、断片的にデータを取得してください。サーバー側では、2つのコンポーネントの相互作用:TaskManagerおよびResultCacheを実装します。 TaskManagerは、全てのPOST要求に応答して、適切なタスクを実行します。個々の作業をして、その結果を生成し、ResultCacheに追加します。クライアントが、ResultCacheからデータを取得されます。タスクマネージャのGETを実行するだけのタスクとResultCacheへの参照を管理実行するための責任がある。 TaskManagerが結果を生成の詳細、または実行されるタスクの性質を知るための責任はありません。

クライアントの要求を管理する/レスポンスサイクル現時点では、さんとは、サーバー側のURLを無視し、聞かせ、クライアント側に焦点を当てる。私たちは、最も興味深いのサーバー側が、もし、クライアント側の関数は非効率的に、すべてが他の問題ではないで最も素晴らしいのURLを定義することができます。は、クライアントと何がいけないのかを定義するサーバーのURLとサーバー側のコードを定義するに向けた長い道のりだ。まず、http://map.search.chまたはhttp://mapsの線に沿ってマッピングの例を見てみましょう。google.comです。としては、マップイメージの作品の数で構成され現在の地図円滑にスクロールするには、ロジックが表示されます

1。 URLをロードして表示するポートを含むHTMLページをクライアントサーフィン。

2。 HTMLページにPOST 4地図部分をロードする要求を送信します。

3。 タスクマネージャでは、要求されたマップ部分を取得するタスクを開始します。タスクResultCacheへの地図部分を追加します。

4。 HTMLページの場合は、要求されたマップピースResultCacheに追加されているかをたずねる定期的にループを実行します。場合は、個追加されて、それらが取り出され、表示されます。現時点では、そこには、マップの断片の識別子として定義されていない接続を切断されます。いつどの部分地図をHTMLページに読み込まれると、ロードされて?場合は、デフォルトの負荷ですか?そして場合は、デフォルトでは、いったい何をロードしない なる デフォルト?ときに、マップピースロードには、まずどのようにマップは、クライアントのマッピングの例の制約piece.Definingを識別するかを決定する必要がある場合を行う大規模なまたは無限大のデータセットを管理するために必要なものを示していますが、すべてのアプリケーションで動作する大規模なまたは無限大セットは、クライアント側では、次の一般的な属性を持つデータ:

すべてのデータの参照•定義することができます。マッピングアプリケーションの場合では、これを割り当てることを意味すべてのマップ部分を調整します。としては、サーバー側がまだ生成していない可能性がありますして、データの参照を持つように、クライアントがデータを計算されたURLのアプローチを使用してジャンプすることができます前に付けること。これは、データが利用できるわけではない場合は、URLでは、されているデータです。参照のタイムスタンプ、または増分カウンタ座標をすることができますが、前のデータが読み込まれて決定する能力を持つ必要があります。

クライアント•直接参照するビューポートのデータとデータは、おそらく表示されます。おそらく表示されるデータの外観は前にデータがプリロードされて。アルゴリズムでは、データは、おそらく見られるようになるかを判断するアプリケーションを完全にし、アプリケーションのユーザーインターフェイスに依存しています。たとえば、ほとんどのマッピングアプリケーションを1つのマップ部分では、マップを上下に移動する矢印をしている。場合は、ユーザーインターフェイスの矢印"ジャンプ100ユニット、"しては、おそらくすぐに同様に"ジャンプ100単位"にする部分が含まれる見られるようにするつもりなの選択と呼ば提供している。データは、おそらく見られるように起こっている背景にある考え方は、データの繰り返しになりますがクライアントまたはサーバーをプリロードの情報を、1つのスムーズなプロセスのように思わせることです。

我々の場合では、株価表示アプリケーションを構築している。クライアントとしてストックティッカーのリストをナビゲートし、これらのティッカーの履歴を表示する機能があります。これは、フォーカスをスキップしてデータを操作していますスナップショットでは、歴史的なデータを示されていません。リストをスキップしますかの機能や、クライアントのパフォーマンスを中断します。マッピングアプリケーションの場合では、ユーザーを選択し、地図部分をドラッグし、マウスを使用して移動します。ティッカーの例の場合、ユーザーはティッカー上にマウスを移動することによって、矢印を使用して移動します。いかなる状況の下でこれらの要素なので、彼らと不愉快な経験をすることができます移動し、データを大量に保持することはできません、リストボックスやナビゲーションのためのコンボボックスを使用する必要があります。

あまりにも個人的な好みのテクニックを使用して大規模されてスラッシュ(www.slashdot.org)データの問題を解決するために管理して設定します。スラッシュドットのように何人という事実は、その後の物語を読むことができるのトピックを並べ替えるに自分の意見の投稿ですインターネットオタクの記事は、クラブのよう。物議をSlashdotの記事300件の掲示に、いくつかのゴミが、他にしています面白いものを集めることができます。

スラッシュドットが正常と呼ばれる技法を採用する最初のWebサイトが metamoderation。Metamoderationときに、読者は自分自身の審判され、決定するかどうかは興味深い転記されます。良い投稿がおかしいですか興味深いものは、たわ言がより高いランク付けしている。自分の個人設定を使用して、読者はどのように他の言葉でメッセージを読むことにしたいレベルを選択できますが、それだけで最も興味深いの投稿の場合は、のような読み取りを選択することができます。これは、システムが動作します。メタデータは、HTMLページ上に作成されているナビゲーションのためのインデックスです。

記事は、ソニアLandeを提出


免責事項:弊社のウェブサイトは、この資料の内容については責任を負いません。 Webarticles無料の情報リソースです。
重要: この記事は、"または低速なデータセットを"大規模な自動ソフトウェアによって翻訳されたのためのWebサービスを実装する。大変申し訳ございませんが発生した可能性があります任意のスペルミスを感じている。お客様のご理解いただき、ありがとうございます。


Online: 275 users browsing the articles directory