(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024096026
(43)【公開日】2024-07-11
(54)【発明の名称】データベースに対するキャッシュ生成方法
(51)【国際特許分類】
G06F 16/172 20190101AFI20240704BHJP
G06F 16/28 20190101ALI20240704BHJP
【FI】
G06F16/172
G06F16/28
【審査請求】有
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2023215905
(22)【出願日】2023-12-21
(31)【優先権主張番号】10-2022-0189440
(32)【優先日】2022-12-29
(33)【優先権主張国・地域又は機関】KR
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.MySQL
(71)【出願人】
【識別番号】523481296
【氏名又は名称】ビーアイ マトリックス カンパニー、リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】ヨン ギュン、リ
(72)【発明者】
【氏名】ナ ミー、パク
(72)【発明者】
【氏名】ミン キュ、キム
(72)【発明者】
【氏名】ドン ジン、リ
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175CA09
(57)【要約】
【課題】本開示は、情報処理分野に関し、データベースに対するユーザ入力構文に対して、キャッシュを生成するための方法または前記キャッシュを活用するための方法に関する。
【解決手段】具体的には、データベースに対するユーザ入力構文に対して、構文要素を分析し、LOVキャッシュを生成するための方法または前記キャッシュを活用するための方法に関する。
【選択図】
図3
【特許請求の範囲】
【請求項1】
コンピューティング装置によって行われる、データベースに対するLOV(List of View)キャッシュ生成方法であって、
データベースに対して入力された第1構文を獲得する段階と、
前記第1構文から既定のフィルタリング構文要素を除くことによって、キャッシュ生成基盤構文を算出する段階と、
前記キャッシュ生成基盤構文に対応する前記第1構文に対するLOVキャッシュを生成する段階と、を含む、方法。
【請求項2】
前記第1構文に対するLOVキャッシュに基づいて、前記第1構文に対する応答を生成する段階をさらに含む、請求項1に記載の方法。
【請求項3】
前記第1構文に対するLOVキャッシュを生成する段階は、
前記第1構文に対するLOVキャッシュを生成する間に、前記第1構文に対する応答の遅延時間またはレコード数が既定の臨界値を超える場合、前記遅延時間またはレコード数が前記臨界値に到達するまで生成された前記第1構文に対する応答の一部を発送する段階と、
前記第1構文に対するLOVキャッシュを生成する間に、前記第1構文に基づいて生成される応答の遅延時間またはレコード数が前記臨界値以下の場合、前記第1構文に対する応答の全体を発送する段階と、をさらに含む、請求項1に記載の方法。
【請求項4】
前記第1構文に対する応答の遅延時間またはレコード数が既定の臨界値を超えることによって、前記第1構文に対する応答の一部を発送する場合、前記第1構文に対するLOVキャッシュを生成する作業をバックグラウンドスレッドで行う、請求項3に記載の方法。
【請求項5】
前記第1構文に対するLOVキャッシュを生成する段階は、
前記キャッシュ生成基盤構文を実行することによって、第1キャッシュデータを生成する段階と、
前記第1キャッシュデータから整列すべきフィールドを選択する段階と、
前記第1キャッシュデータを正しい順序で整列することによって、第2キャッシュデータを生成する段階;を含む、請求項1に記載の方法。
【請求項6】
前記第1キャッシュデータを整列することによって、第2キャッシュデータを生成する段階は、
前記整列すべきフィールドに含まれたデータの種類の個数が既定の個数未満の場合に行われる、請求項5に記載の方法。
【請求項7】
前記フィルタリング構文要素は、
レコード重複除去、レコードグループ化、レコード整列またはテーブル結合を行う、請求項1に記載の方法。
【請求項8】
前記第1構文を獲得した後、フィルタリング構文要素を含む第2構文を得る段階と、
前記第1構文に対するLOVキャッシュが前記第2構文が抽出するデータを含む場合、前記第1構文に対するLOVキャッシュに基づいて、前記第2構文に対する応答を生成する段階と、をさらに含む、請求項1に記載の方法。
【請求項9】
コンピュータ可読保存媒体に保存されたコンピュータプログラムであって、前記コンピュータプログラムは、1つ以上のプロセッサによって実行される場合、前記1つ以上のプロセッサが、データベースに対するLOV(List of View)キャッシュを生成するための動作を行うようにし、前記動作は、
データベースに対し入力された第1構文を獲得する動作と、
前記第1構文から既定のフィルタリング構文要素を除くことによって、キャッシュ生成基盤構文を算出する動作と、
前記キャッシュ生成基盤構文に対応する前記第1構文に対するLOVキャッシュを生成する動作と、含む、コンピュータ可読保存媒体に保存されたコンピュータプログラム。
【請求項10】
コンピューティング装置であって、
少なくとも1つのプロセッサと、
メモリと、を含み、
前記少なくとも1つのプロセッサは、データベースに対するLOV(List of View)キャッシュを生成するために、
データベースに対し入力された第1構文を獲得し;
前記第1構文から既定のフィルタリング構文要素を除くことによって、キャッシュ生成基盤構文を算出し;および
前記キャッシュ生成基盤構文に対応する前記第1構文に対するLOVキャッシュを生成するように構成される、装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、情報処理分野に関し、データベースに対するユーザ入力構文に対して、キャッシュを生成するための方法または前記キャッシュを活用するための方法に関する。具体的には、データベースに対するユーザ入力構文に対して、構文要素を分析し、LOVキャッシュを生成するための方法または前記キャッシュを活用するための方法に関する。
【背景技術】
【0002】
コンピュータ技術の発展に伴い、企業および官公庁等で経営および管理に関する業務のために様々なコンピュータプログラムを使用している。このようなコンピュータプログラムは、企業の会計、人事、財務、営業、貿易、購買、資材、生産および在庫等の経営および管理に必要な数多くのデータを保存し、処理することができる。このようなコンピュータプログラムを使用するので、ユーザ(企業および官公庁等の業務の実務担当者、役員および経営者)は、より便利に手軽に企業および官公庁等で使用されるデータを保存し、管理することができる。企業および官公庁等で使用するコンピュータプログラムは、様々な形態の文書を生成、編集および管理できる機能をサポートしている。なお、データを処理し、出力するにあたって使用されるクエリー構文(query statement)実行過程で、処理速度が遅くなる場合が発生することがある。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】韓国登録特許第10-0670798号公報(2007.01.11)
【発明の概要】
【発明が解決しようとする課題】
【0004】
本開示は、前述した背景技術に対応して案出されたものであって、データベースに対するユーザ入力構文に対して、キャッシュを生成し、活用する方法を提供しようとする。
【0005】
本開示の技術的課題は、以上で言及した技術的課題に制限されず、言及されていない他の技術的課題は、下記の記載から当業者に明確に理解され得る。
【課題を解決するための手段】
【0006】
前述した課題を解決するためのいくつかの実施形態によるコンピューティング装置によって行われる、データベースに対するLOV(List of View)キャッシュ生成方法を提供する。前記方法は、データベースに対して入力された第1構文を獲得する段階と、前記第1構文から既定のフィルタリング構文要素を除くことによって、キャッシュ生成基盤構文を算出する段階と、前記キャッシュ生成基盤構文に対応する前記第1構文に対するLOVキャッシュを生成する段階と、を含んでもよい。
【0007】
一実施形態において、前記第1構文に対するLOVキャッシュに基づいて、前記第1構文に対する応答を生成する段階をさらに含んでもよい。
【0008】
一実施形態において、前記第1構文に対するLOVキャッシュを生成する段階は、前記第1構文に対するLOVキャッシュを生成する間に、前記第1構文に対する応答の遅延時間またはレコード数が既定の臨界値を超える場合、前記遅延時間またはレコード数が前記臨界値に到達するまで生成された前記第1構文に対する応答の一部を発送する段階と、前記第1構文に対するLOVキャッシュを生成する間に、前記第1構文に基づいて生成される応答の遅延時間またはレコード数が前記臨界値以下の場合、前記第1構文に対する応答の全体を発送する段階と、をさらに含んでもよい。
【0009】
一実施形態において、前記第1構文に対する応答の遅延時間またはレコード数が既定の臨界値を超えることによって、前記第1構文に対する応答の一部を発送する場合、前記第1構文に対するLOVキャッシュを生成する作業をバックグラウンドスレッドで行うこともできる。
【0010】
一実施形態において、前記第1構文に対するLOVキャッシュを生成する段階は、前記キャッシュ生成基盤構文を実行することによって第1キャッシュデータを生成する段階と、前記第1キャッシュデータから整列すべきフィールドを選択する段階と、前記第1キャッシュデータを正しい順序で整列することによって第2キャッシュデータを生成する段階と、を含んでもよい。
【0011】
一実施形態において、前記第1キャッシュデータを整列することによって第2キャッシュデータを生成する段階は、前記整列すべきフィールドに含まれたデータの種類の個数が既定の個数未満の場合に行われ得る。
【0012】
一実施形態において、前記フィルタリング構文要素は、レコード重複除去、レコードグループ化、レコード整列またはテーブル結合を行うものであってもよい。
【0013】
一実施形態において、前記第1構文を獲得した後、フィルタリング構文要素を含む第2構文を得る段階と、前記第1構文に対するLOVキャッシュが前記第2構文が抽出するデータを含む場合、前記第1構文に対するLOVキャッシュに基づいて、前記第2構文に対する応答を生成する段階と、をさらに含んでもよい。
【0014】
また、前述したような課題を解決するためのコンピュータ可読保存媒体に保存されたコンピュータプログラムが開示される。
【0015】
前記コンピュータプログラムは、1つ以上のプロセッサによって実行される場合、前記1つ以上のプロセッサが、データベースに対するLOV(List of View)キャッシュを生成するための動作を行うようにし、前記動作は、データベースに対して入力された第1構文を獲得する動作と、前記第1構文から既定のフィルタリング構文要素を除くことによって、キャッシュ生成基盤構文を算出する動作と、前記キャッシュ生成基盤構文に対応する前記第1構文に対するLOVキャッシュを生成する動作と、を含んでもよい。
【0016】
また、前述したような課題を解決するためのコンピューティング装置が開示される。
【0017】
前記コンピューティング装置は、少なくとも1つのプロセッサと、メモリと、を含み、前記少なくとも1つのプロセッサは、データベースに対するLOV(List of View)キャッシュを生成するために、データベースに対し入力された第1構文を獲得し;前記第1構文から既定のフィルタリング構文要素を除くことによって、キャッシュ生成基盤構文を算出し;および前記キャッシュ生成基盤構文に対応する前記第1構文に対するLOVキャッシュを生成するように構成され得る。
【発明の効果】
【0018】
本開示は、前述した背景技術に対応して案出されたものであって、ユーザ入力構文に基づいて、データベースに対するキャッシュを生成することができ、前記キャッシュを通じて前記ユーザ入力構文に対する応答速度を高めることができる。
【0019】
本開示の適用可能性のさらなる範囲は、以下の詳細な説明から明白になる。しかしながら、本発明の思想および範囲内で様々な変更および修正は、当業者に明確に理解され得るので、詳細な説明および本発明の好適な実施形態のような特定の実施形態は、ただ例示として与えられたものと理解すべきである。
【0020】
様々な様相が図面を参照して記載され、ここで、類似の参照番号は、総括的に類似の構成要素を指すのに用いられる。以下の実施形態において、説明目的のために、多数の特定細部事項が1つ以上の様相の総体的理解を提供するために提示される。しかしながら、そのような様相がこのような特定の細部事項なしで実施され得ることは明白だろう。他の例示において、公知の構造および装置が1つ以上の様相の記載を容易にするためにブロック図の形態で示される。
【図面の簡単な説明】
【0021】
【
図1】
図1は、本開示の一実施形態によるコンピューティング装置を説明するためのブロック構成図である。
【
図2】
図2は、本開示の一実施形態によるデータベースに対するキャッシュ生成方法を説明するためのフローチャートである。
【
図3】
図3は、本開示の一実施形態によるデータベースに対するキャッシュ生成方法を説明するための概念図である。
【
図4】
図4は、本開示の一実施形態によるデータベースに対するキャッシュ生成方法を説明するための概念図である。
【
図5】
図5は、本開示の一実施形態によるデータベースに対するキャッシュ活用方法を説明するためのフローチャートである。
【
図6】
図6は、本開示の一実施形態によるデータベースに対するキャッシュ活用方法を説明するための概念図である。
【
図7】
図7は、本開示の一実施形態によるデータベースに対する非同期応答方法を説明するための概念図である。
【
図8】
図8は、本開示内容の実施形態が具現され得る例示的なコンピューティング環境に対する一般的な概略図である。
【発明を実施するための形態】
【0022】
様々な実施形態が以下に図面を参照しながら説明される。本明細書において様々な説明が本開示に対する理解を容易にするために示される。しかし、これらの実施形態がこれらの具体的な説明がなくても間違いなく実施されることができる。
【0023】
本明細書において、「コンポーネント」、「モジュール」、「システム」等の用語は、コンピュータ関連エンティティ、ハードウェア、ファームウェア、ソフトウェア、ソフトウェアとハードウェアとの組み合わせ、またはソフトウェアの実行を指す。例えば、コンポーネントは、プロセッサー上で実行される処理手順(procedure)、プロセッサー、オブジェクト、実行スレッド、プログラム、及び/またはコンピュータであってもよいが、これらに限定されるものではない。例えば、コンピューティング装置で実行されるアプリケーションとコンピューティング装置は、両方ともコンポーネントであってもよい。1つ以上のコンポーネントは、プロセッサー及び/または実行スレッドの中に常駐することができる。1つのコンポーネントは、1つのコンピュータの中でローカル化されることができる。1つのコンポーネントは、2つ以上のコンピュータに配分されることもできる。また、このようなコンポーネントは、その内部に保存されている様々なデータ構造を有する、様々なコンピュータ可読媒体から実行することができる。コンポーネントは、例えば1つ以上のデータパケットを有する信号(例えば、ローカルシステム、分散システムにおいて他のコンポーネントと相互作用する1つのコンポーネントからのデータ及び/または信号を通じて、他のシステムと、インターネットのようなネットワークを介して伝送されるデータ)によってローカル及び/または遠隔処理等を通じて通信することができる。
【0024】
以下の説明において使用される構成要素の接尾辞「モジュール」および「部」は、明細書の作成の容易さのみが考慮されて付与されたり、または混用されるものであり、それ自体で互いに区別される意味または役割を有するものではない。
【0025】
また、本明細書において使用される「情報」および「データ」という用語は、しばしば互いに交換可能にするために使用することができる。
【0026】
任意の構成要素が他の構成要素に「連結されている」または「接続されている」と言及されている場合、該他の構成要素に直接連結または接続されていてもよいが、中間に他の構成要素が存在してもよいと理解すべきである。一方で、任意の構成要素が他の構成要素に「直接連結されている」または「直接接続されている」と言及されている場合、中間に他の構成要素が存在しないと理解すべきである。
【0027】
また、用語「または」は、排他的な「または」ではなく、内包的な「または」を意味する意図で使われる。つまり、特に特定されておらず、文脈上明確ではない場合、「XはAまたはBを利用する」は、自然な内包的置換のうち1つを意味するものとする。つまり、XがAを利用したり、XがBを利用したり、またはXがA及びBの両方を利用する場合、「XはAまたはBを利用する」は、これらのいずれにも当てはまるとすることができる。また、本明細書における「及び/または」という用語は、取り挙げられた関連アイテムのうち、1つ以上のアイテムの可能なすべての組み合わせを指し、含むものと理解されるべきである。
【0028】
また、述語としての「含む」および/または修飾語としての「含む」という用語は、当該特徴および/または構成要素が存在することを意味するものとと理解されるべきである。ただし、述語としての「含む」および/または修飾語としての「含む」という用語は、1つ以上の他の特徴、構成要素、および/またはそれらのグループの存在または追加を排除しないものと理解されるべきである。また、別途に特定されていない場合、または単数の形を示すことが文脈上明確でない場合、本明細書および特許請求の範囲において単数は、一般的に「1つまたはそれ以上」を意味するものと解釈されるべきである。
【0029】
以下、参照符号に関係なく、同一又は同様の構成要素には同一の符号を付し、繰り返しの説明は省略する。また、本明細書に開示された実施形態を説明する際に、関連する公知技術の具体的な説明が本明細書に開示された実施形態の要旨を不明瞭にすると判断される場合、その詳細な説明を省略する。また、添付の図面は、本明細書に開示された実施形態を容易に理解することを可能にするためのものであり、添付の図面によって本明細書に開示される技術的思想は限定されない。
【0030】
そして、「A又はBのうち少なくとも1つ」という用語については、「Aだけを含む場合」、「Bだけを含む場合」、「AとBの組み合わせの場合」を意味するものと解釈されたい。
【0031】
当業者は、さらに、ここに開示される実施形態に係るものとして説明された様々な例示的論理的ブロック、構成、モジュール、回路、手段、ロジック及びアルゴリズム段階が、電子ハードウェア、コンピュータソフトウェア、またはその両方の組み合わせによって実現されることができることを認識すべきである。ハードウェアとソフトウェアとの相互交換性を明確に例示するために、様々な例示的コンポーネント、ブロック、構成、手段、ロジック、モジュール、回路及び段階が、それらの機能性の側面で一般的に上述された。そのような機能性がハードウェアとして実装されるか或いはソフトウェアとして実装されるかは、全般的なシステムに係る特定のアプリケーション(application)及び設計制限によって決まる。熟練した技術者は、個々の特定アプリケーションのために様々な方法で説明された機能性を実現できる。ただし、そのような実現に係る決定が本開示内容の領域を逸脱するものと解釈されてはならない。
【0032】
ここに示す実施形態に係る説明は、本開示の技術分野において通常の知識を有する者が本発明を利用したり、または実施できるように提供される。このような実施形態に対する様々な変形は、本開示の技術分野において通常の知識を有する者にとっては明確であり、ここに定義された一般的な原理は、本開示の範囲を逸脱することなく他の実施形態に適用されることができる。従って、本開示はここに示す実施形態によって限定されるものではなく、ここに示す原理及び新規な特徴と一貫する最広義の範囲で解釈されるべきである。
【0033】
以下、
図1~
図8を参照して、List of View(LOV)のようにに、構造化された文書のページをキャッシュし、前記キャッシュしたリソースを使用して認知されたレンダリング時間を減少させることによって、ウェブページのような構造化された文書を効率的にレンダリングする技術に関して記述する。既存システムでは、ユーザが新しいデータを要請すると、ブラウザが現在ページのロードを中止し、サーバーで全体新しいページを要請するので、多くの時間がかかり、ユーザ経験が遅くなり得る。したがって、本開示は、ブラウザやスプレッドシートのようなアプリケーションが全体ページを再ロードする代わりに、対象データをレンダリングするのに必要な新しいコンテンツおよびリソースのみを要請するように許容することによって、このようなオーバーヘッドを減らしたり除去することを目標とする。これは、遠隔および/またはローカルデータ保存所でキャッシュしたリソースに対する更新を検索する非同期技術を使用し、ブラウザまたはクライアントアプリケーションが基本的に全体データを再びレンダリングすることを防止する様々な技術を活用して達成することができる。開示された技術は、様々な脈絡でlist of view(LOV)、ウェブページおよびその他構造化された文書の性能およびユーザ経験を改善するために使用され得る。
【0034】
図1は、本開示の一実施形態によるコンピューティング装置を説明するためのブロック構成図である。
【0035】
図1に示されたコンピューティング装置100の構成は、ただ簡略化して示した例示である。一例として、コンピューティング装置100は、コンピューティング装置100のコンピューティング環境を行うための他の構成が含まれ得、開示された構成の一部のみがコンピューティング装置100を構成することもできる。
【0036】
コンピューティング装置100は、プロセッサ110、メモリ130、ネットワーク部150を含んでもよい。
【0037】
本開示の一実施形態によれば、プロセッサ110は、通常、コンピューティング装置100の動作およびデータを処理できるすべての種類の装置を含んでもよい。例えば、プログラム内に含まれたコードまたは命令で表現された機能を行うために物理的に構造化された回路を有する、ハードウェアに内蔵されたデータ処理装置を意味し得る。このようにハードウェアに内蔵されたデータ処理装置の一例として、マイクロプロセッサー(microprocessor)、中央処理装置(central processing unit:CPU)、プロセッサコア(processor core)、マルチプロセッサ(multiprocessor)、ASIC(application-specific integrated circuit)、FPGA(field programmable gate array)等の処理装置を含んでもよいが、本発明の範囲がこれに限定されるものではない。
【0038】
前記プロセッサ110は、1つ以上のコアで構成され得、コンピューティング装置の中央処理装置(CPU:central processing unit)を含んでもよい。また、汎用グラフィック処理装置(GPGPU:general purpose graphics processing unit)、テンソル処理装置(TPU:tensor processing unit)等のデータ分析、ディープラーニングのためのプロセッサをさらに含んでもよい。
【0039】
本開示の一実施形態によれば、メモリ130は、プロセッサ110が生成したり決定した任意の形態の情報およびネットワーク部150が受信した任意の形態の情報を保存することができる。
【0040】
本開示の一実施形態によれば、メモリ130は、フラッシュメモリタイプ(flash memory type)、ハードディスクタイプ(hard disk type)、マルチメディアカードマイクロタイプ(multimedia card micro type)、カードタイプのメモリ(例えば、SDまたはXDメモリ等)、ラム(Random Access Memory,RAM)、SRAM(Static Random Access Memory)、ロム(Read-Only Memory,ROM)、EEPROM(Electrically Erasable Programmable Read-Only Memory)、PROM(Programmable Read-Only Memory)、磁気メモリ、磁気ディスク、光ディスクのうち少なくとも1つのタイプの保存媒体を含んでもよい。コンピューティング装置100は、インターネット(internet)上で前記メモリ130の保存機能を行うウェブストレージ(web storage)と関連して動作することもできる。前述したメモリに対する記載はただ例示であり、本開示は、これに制限されない。
【0041】
本開示の一実施形態によるネットワーク部150は、公衆交換電話網(PSTN:Public Switched Telephone Network)、xDSL(x Digital Subscriber Line)、RADSL(Rate Adaptive DSL)、MDSL(Multi Rate DSL)、VDSL(Very High Speed DSL)、UADSL(Universal Asymmetric DSL)、HDSL(High Bit Rate DSL)および近距離通信網(LAN)等のような様々な有線通信システムを使用することができる。
【0042】
また、本明細書において提示されるネットワーク部150は、CDMA(Code Division Multi Access)、TDMA(Time Division Multi Access)、FDMA(Frequency Division Multi Access)、OFDMA(Orthogonal Frequency Division Multi Access)、SC-FDMA(Single Carrier-FDMA)および他のシステムのような様々な無線通信システムを使用することができる。
【0043】
本開示においてネットワーク部150は、有線および無線等のようなその通信様態に関係なく構成され得、短距離通信網(LAN:Local Area Network)、個人通信網(PAN:Personal Area Network)、広域通信網(WAN:Wide Area Network)等様々な通信網で構成され得る。また、前記ネットワークは、公知のワールドワイドウェブ(WWW:World Wide Web)であってもよく、赤外線(IrDA:Infrared Data Association)またはブルートゥース(登録商標)(Bluetooth)のように短距離通信に用いれる無線伝送技術を用いることもできる。
【0044】
本明細書において説明された技術は、上記で言及されたネットワークだけでなく、他のネットワークでも使用され得る。
【0045】
本明細書において、データベースは、ORACLE(オラクル)、PostgreSQL(ポストグレスキューエル)、MySQL、SQL Server(MS-SQL)またはSQLiteのうち少なくとも1つの関係データベース管理システム(RDBMS)により制御されるものであってもよい。前記データベースは、データベース構文(database statement)によりデータの入出力が行われるものであってもよい。
【0046】
なお、本明細書のアプリケーションは、別途の構文実行モジュールを含んでもよい。前記構文実行モジュールは、前記データベース構文(database statement)が前記データベース管理システム(RDBMS)に対するデータの入出力を行う場合、前記データベースの種類によって文法(syntax)に合うカスタマイズされた構文(statement)が生成され得る。例えば、ユーザは、本開示を通じて、データベースの種類と関係なく、アプリケーションが提供するユーザインタフェース(UI)で提供する抽象化された数式を通じて便利に構文を生成、確認および制御することができる。
【0047】
また、前記アプリケーションは、前記構文が生成、読み出しまたは更新、削除(Create,Read,Update,Delete;CRUD)のうちいずれか1つ以上の動作を行うSQL構文に関連していてもよい。ここで、前記SQL構文は、挿入(Insert)、更新(Update)または削除(Delete)のうちいずれか1つの命令語と関連した信号であってもよく、前記信号は、前記SQL構文の名称または略字がスプレッドシートのセルに入力されたり表示され得る。例えば、前記表示は、下記表1のように示され得る。
【表1】
【0048】
また、ユーザ入力情報は、構文生成と関連するカラムを設定したり、レコード条件を指定するためのものであってもよい。例えば、前記原本データと出力データ間のカラム順序が変更されたりカラム名が異なる場合にも、SQL構文を実行することができる。また、前記ユーザ入力情報は、前記出力データに対する注釈を表示することができる。
【0049】
本開示において、LOV(List of View、一覧リスト)は、項目リストを表示するユーザインタフェース要素の一類型であり、一般的にテーブルやグリッド形式を有する。前記LOVは、一般的に各項目属性に対する列とリストの各項目に対する行が含まれる。前記LOVをロードするとき、特定要素が含まれたクエリーを実行するとき、要素を検索しにくかったり要素の複雑性によりクエリー実行時間が長くかかることができるので、ロード速度が遅くなり得る。これは、クエリーに含まれた構文要素に多数の属性があったりデータベースの他の多くの構文要素に連結され、情報を検索し表示するのにより多くの処理時間が必要なときに発生し得る。また、構文要素がリストの終わり近くにある場合、前記クエリーは、所望の要素に到達する前に、多数の以前の構文要素を検索し、処理しなければならないので、ロードプロセスがさらに遅くなり得、この場合、本開示のキャッシュによりロード速度を向上させることができる。
【0050】
図2、
図3および
図4は、本開示の一実施形態によるデータベースに対するキャッシュ生成方法を説明するためのフローチャートおよび概念図である。
【0051】
図2、
図3および
図4を参照すると、本開示のコンピューティング装置は、データベースに対するユーザ入力構文を獲得する段階(S110)と、ユーザ入力構文から既定のフィルタリング構文要素を確認する段階(S210)と、ユーザ入力構文に対応するデータベースに対するLOVキャッシュの存在を確認する段階(S300)と、を含んでもよい。本明細書において、前記キャッシュは、LOVキャッシュであってもよい。また、前記ユーザ入力構文は、ユーザインタフェース(UI)等で入力されたものであり、該当するLOVキャッシュが不在する第1構文および該当するLOVキャッシュが存在する第2構文で表現されることもできる。
【0052】
前記データベースに対するユーザ入力構文を獲得する段階(S110)で、ユーザは、データベースに連結されたアプリケーションを作動させることができる。次に、ユーザは、検索箱にクエリーを入力することができる。一例として、前記クエリーは、「SELECT* FROM products WHERE price>10 AND category=‘clothing’」であってもよい。次に、前記アプリケーションは、ユーザの入力を受けてデータベースに送ることができる。次に、前記データベースは、ユーザの入力を受信し、これをSQL構文で認識することができる。次に、前記データベースは、クエリーを処理し、結果をアプリケーションに返還することができる。ここで、前記ユーザ入力構文は、ユーザが検索箱に入力したSQL構文であり、前記アプリケーションは、この入力を「獲得」し、処理のためにデータベースに送る役割をすることができる。その後、前記データベースは、入力を使用してクエリーを実行し、結果をアプリケーションに返還することができる。
【0053】
他の例として、ユーザは、SQL構文を使用してデータベースをクエリーできるアプリケーションと相互作用しており、ここで、ユーザは、「SELECT DISTINCT column1,column2 FROM table_name WHERE column1=‘D’;」のようなクエリーを入力することができる。この場合、ユーザ入力構文は、ユーザが入力した全体SQL構文である。前記アプリケーションは、この入力を受信し、データベースに対するキャッシュ生成プロセスを始める。前記ユーザ入力構文が獲得されると、本開示のアプリケーションは、プロセスの次の段階に進めることができる。
【0054】
前記ユーザ入力構文から既定のフィルタリング構文要素を確認する段階(S210)で、例えば、前記既定のフィルタリング構文要素は、DISTINCT演算子であってもよい。前記アプリケーションは、ユーザ入力構文を分析し、DISTINCTキーワードを探してこの演算子の存在を確認することができる。このために、前記アプリケーションは、正規式(regex)またはその他文字列一致技術を使用してユーザ入力構文から既定のフィルタリング構文要素のようなキーワードを検索することができる。その結果、前記ユーザ入力構文からDISTINCTキーワードが発見される場合、前記アプリケーションは、プロセスの次の段階を進めることができる。
【0055】
また、前記ユーザ入力構文に対応するデータベースに対するLOVキャッシュの存在を確認する段階(S300)で、前記ユーザ入力構文に対するLOVキャッシュが不在する場合、本開示は、既定のフィルタリング構文要素を除くことによって、キャッシュ生成基盤構文を算出する段階(S410)と、キャッシュ生成基盤構文に基づいて、第1構文に対するLOVキャッシュを生成する段階(S420)と、をさらに含んでもよい。
【0056】
前記既定のフィルタリング構文要素を除くことによって、キャッシュ生成基盤構文を算出する段階(S410)で、前記アプリケーションは、ユーザが入力した第1構文からDISTINCTキーワードと関連節または媒介変数を除去することができる。例えば、前記アプリケーションは、正規式またはその他文字列一致技術を使用してDISTINCTキーワードをユーザ入力構文から除去することができる。その結果、生成された派生構文は、「SELECT column1,column2 FROM table_name WHERE column1=‘D’;」のように示され得る。前記派生構文は、プロセスの本開示のデータベース用キャッシュを生成するためのキャッシュ生成基盤構文として使用され得る。
【0057】
次に、前記キャッシュ生成基盤構文に基づいて、ユーザ入力構文に対するLOVキャッシュを生成する段階(S420)で、例えば、前記アプリケーションは、生成または保存されたLOVキャッシュを検査し、前記残余構文要素にユーザによって要請されたデータに該当するキャッシュが存在するかを確認し、前記キャッシュがなければ、優先的に前記アプリケーションは、データベースに対して直接クエリーを実行し、その結果をユーザに返還することができる。
【0058】
前記アプリケーションは、前記ユーザ入力構文に対する残余構文要素を得、これに基づいて派生構文(すなわち、DISTINCT演算子がないSELECT文)を生成し、前記派生構文に基づいて、前記ユーザ入力構文に対するLOVキャッシュを生成することができる。前記ユーザ入力構文に対するLOVキャッシュには、メモリまたはディスクのデータ構造に保存されたSELECT文によって返還されたデータが含まれ得る。
【0059】
これに加えて、前記アプリケーションは、データベースライブラリーまたはAPIを使用して前記データベースに連結し、派生構文(すなわち、DISTINCT演算子が除外されたSELECT文)を実行し、結果データをキャッシュに保存することができる。前記キャッシュは、メモリのデータ構造で具現されたり、ディスクまたは他の永久保存位置に保存され得る。このような方式で前記アプリケーションは、クエリー性能を向上させるためのLOVキャッシュを生成することができる。
【0060】
ここで、前記LOVキャッシュは、本開示のユーザ入力構文またはキャッシュ生成基盤構文を実行することによって生成された第1キャッシュデータを含んでもよい。また、前記LOVキャッシュは、生成された前記第1キャッシュデータが整列した第2キャッシュデータを生成することができる。前記第2キャッシュデータを生成するために、前記アプリケーションは、前記第1キャッシュデータに対して、クエリーに指定された特定列(この場合、column1)の値を比較し、特定の整列アルゴリズム(例えば、ORDER BY節に指定されたASCENDING)を使用してデータを昇順に整列し、値の最も低いレコードが最初に表示され、値の最も高いレコードが最後に表示することができる。
【0061】
前記方法によって第2キャッシュデータが生成される場合、前記アプリケーションは、後続するユーザ入力構文に迅速に応答することができる。例えば、ユーザが以前と同じデータを再び検索しようとする場合、前記アプリケーションは、データベースに接近する代わりに、前記キャッシュからデータを検索し、応答を提供することができる。前記キャッシュを通じてクエリー性能が向上し、ユーザに迅速な応答を提供することができる。
【0062】
前記キャッシュ生成作業は、バックグラウンドスレッド(background thread)により処理され得る。前記バックグラウンドスレッドは、プログラミング言語または運営体制(OS)で提供するスレッディングライブラリーまたはAPIによって生成されて作動することができる。前記バックグラウンドスレッドが実行される間に、基本スレッドがユーザ要請を続いて処理することができるので、前記アプリケーションの性能を向上させることができるが、これは、前記データベースが遅かったりワークロードが高い場合、主スレッドがデータベースの応答を待たなければならない時間を減らして、ユーザ入力構文を処理する性能を向上させることができる。また、前記派生構文に関連した前記データベースに対するキャッシュが複数個存在する場合、必要に応じて前記S410段階を繰り返すことができる。
【0063】
また、ユーザ入力構文に対応するデータベースに対するLOVキャッシュの存在を確認する段階(S300)で、前記ユーザ入力構文に対するLOVキャッシュが存在する場合、本開示は、前記LOVキャッシュに基づいて、ユーザ入力構文に対する応答を生成する段階(S510)をさらに含んでもよい。例えば、ユーザがSQL構文を使用してデータベースをクエリーすることができるアプリケーションと相互作用する過程で、ユーザが「SELECT DISTINCT column1,column2 FROM table_name WHERE column1=‘C’;」のようなユーザ入力構文を提出する場合、前記アプリケーションは、前記ユーザ入力構文に要請するデータが前記データベースに対するキャッシュに含まれているかを確認する。前記キャッシュのうちいずれか1つ以上が前記ユーザ入力構文に要請するデータを含む場合、前記アプリケーションは、前記データを含むキャッシュに基づいて、前記ユーザ入力構文に対する応答を返還する作業を行うことができる。これは、キャッシュに前記頻繁にアクセスするデータが含まれている場合、データベースが遅い場合、またはワークロードが高い場合のうち少なくとも1つの場合に特に有用である。
【0064】
図5および
図6は、本開示の一実施形態によるデータベースに対するキャッシュ活用方法を説明するためのフローチャートおよび概念図である。
【0065】
図5および
図6を参照すると、本開示のコンピューティング装置は、データベースに対する第1構文を獲得する段階(S120)と、既定のフィルタリング構文要素をさらに含む第2構文を獲得する段階(S220)と、データベースに対するキャッシュに基づいて、第2構文に対する応答を生成する段階(S520)と、を含んでもよい。
【0066】
前記データベースに対する第1構文を獲得する段階(S120)で、ユーザによって入力された第1構文は、データベースをクエリーすることができるアプリケーションと相互作用することができる。例えば、ユーザは、テーブルの特定列に対する固有値リストを検索しようとし、前記ユーザ入力構文は、「SELECT DISTINCT column1 FROM table_name;」のように示され得る。
【0067】
次に、前記アプリケーションは、前記ユーザ入力構文を受信し、前記データベースに対するキャッシュ生成プロセスを行う。前記プロセスの最初の段階は、第1構文を得ることである。前記第1構文は、データをフィルタリングしない全体SQL構文であってもよい。
【0068】
次に、前記アプリケーションは、前記第1構文の文法を検査し、有効か否かおよび前記データベースに対して実行可能の可否を確認することができる。例えば、前記アプリケーションは、SQL構文を分析して、正しい数の節があり、必要なすべての要素があるかを確認することができる。
【0069】
前記既定のフィルタリング構文要素をさらに含む第2構文を獲得する段階(S220)で、前記アプリケーションは、前記第2構文を受信し、前記データベースに対するキャッシュに基づく応答を生成するプロセスを行うことができる。例えば、前記既定のフィルタリング構文要素類型は、クエリー結果から重複値を除去するのに使用されるDISTINCT演算子であってもよい。これによって、前記第2構文は、前記第1構文と似ているが、固有値のみを返還するDISTINCT演算子を含んでもよい。前記第2構文は、前記アプリケーションでユーザクエリーに対する応答を生成するのに使用され得る。
【0070】
前記データベースに対するキャッシュに基づいて、第2構文に対する応答を生成する段階(S520)で、前記アプリケーションは、前記第2構文を使用してデータベースをクエリーすることができる。例えば、ユーザは、データベーステーブルの特定列に対する固有値リストを検索するために、「SELECT DISTINCT column1,column2 FROM table_name WHERE column1=‘F’;」のような構文を入力することができる。前記構文は、前記データベースに対してクエリーを実行することができる。
【0071】
次に、前記アプリケーションは、第2構文を使用してユーザクエリーに対する応答を生成することができる。例えば、前記アプリケーションは、キャッシュに対して前記第2構文を実行してデータを検索し、応答としてユーザに返還することができる。データベースを直接クエリーする代わりに、キャッシュを使用することによって、前記アプリケーションのクエリー性能を向上させ、ユーザに迅速な応答を提供することができる。
【0072】
図7は、本開示の一実施形態によるデータベースに対する非同期応答方法を説明するための概念図である。
【0073】
図7を参照すると、本開示のコンピューティング装置は、データベースに対する第1構文を獲得し、前記第1構文に対する応答を返還することができる。
【0074】
前記第1構文に対するLOVキャッシュを生成する間に、前記第1構文に対する応答の遅延時間またはレコード数が既定の臨界値を超える場合、前記遅延時間またはレコード数が前記臨界値に到達するまで生成された前記第1構文に対する応答の一部を発送する段階を含んでもよい。例えば、前記アプリケーションは、前記第1構文を獲得し、有効性を検査した後、前記第1構文に対する応答を返還することができる。
【0075】
ここで、前記第1構文が実行される前に、前記アプリケーションは、前記応答で発生すると予想される遅延時間または項目数に対する臨界値を設定することができる。例えば、前記アプリケーションは、前記応答で発生すると予想される遅延時間に対して500ミリ秒の臨界値を設定し、前記項目数に対して100万項目の臨界値を設定することができる。
【0076】
次に、前記第1構文が実行されると、前記アプリケーションは、前記応答で発生すると予想される時間が既定の臨界値(例えば、500ミリ秒)を超えたか否かを確認する。確認結果、前記既定の臨界値を超えると、前記アプリケーションは、集計作業を中止し、前記遅延時間またはレコード数が前記臨界値に到達するまで生成された前記第1構文に対する応答の一部を発送する作業を行うことができる。反対に、前記臨界値を超えない場合、前記アプリケーションは、全体結果が返還されるまで待機し、一度に全体応答を伝送することができる。
【0077】
前記応答で発生すると予想される時間または項目数に対する臨界値を設定することによって、前記アプリケーションは、ユーザに返還されるデータの量を制限し、クエリー性能を向上させることができる。
【0078】
これは、前記アプリケーションが多量のデータを返還する場合、頻繁に発生しうる過負荷現象または要請に応答しない現象が発生することを防止するのに役に立つことができる。
【0079】
なお、前記ユーザ入力構文を獲得した後、前記アプリケーションは、前記ユーザ入力構文に基づいて、前記データベースに対するキャッシュを生成することができる。前記キャッシュは、前記応答で発生すると予想される時間が前記既定の臨界値を超える場合に生成され得る。前記キャッシュを生成する作業は、バックグラウンドスレッド(background thread)により処理され得るが、これを通じて、前記第1構文を処理する非同期的な応答作業に対する遅延時間を増加させることなく、前記キャッシュを生成する作業を行うことができる。
【0080】
前記第1構文に対するLOVキャッシュを生成する間に、前記第1構文に基づいて生成される応答の遅延時間またはレコード数が前記臨界値以下の場合、前記第1構文に対する応答の全体を発送することができる。この場合、本開示のアプリケーションは、前記データベースに対するキャッシュを生成しなくてもよく、これを通じて、前記第1構文に基づいて生成される応答の遅延時間またはレコード数が臨界値以上の場合にのみ、LOVキャッシュを生成し、前記第1構文に対する応答速度を犠牲させることなく、前記LOVキャッシュを保存するためのリソースを減らすことができる。
【0081】
図8は、本開示内容の実施形態が具現され得る例示的なコンピューティング環境に対する一般的な概略図である。
【0082】
図8を参照すると、前記コンピュータプログラムは、1つ以上のプロセッサによって実行される場合、原本データを抽出して出力する動作を行うことができる。
【0083】
本開示の一実施形態によれば、前記動作は、前記1つ以上のプロセッサが、データをスプレッドシートに表示するための動作を行うために、データベースからイメージを含む第1データを獲得する動作と、前記第1データに基づいて、スプレッドシートモジュールを通じて前記第1データをスプレッドシートに表示する動作と、を含んでもよい。
【0084】
本開示の他の実施形態によれば、前記動作は、前記1つ以上のプロセッサが、データをスプレッドシートに出力するための動作を行うために、スプレッドシートモジュールがデータ抽出関数のパラメーターを受信する動作と、前記データ抽出関数のパラメーターに基づいて、データベースにアクセスするための第1構文を生成する動作と、前記第1構文によって前記データベースから第1データを獲得する動作と、前記データ抽出関数のパラメーターに基づいて、前記スプレッドシートモジュールを介して前記第1データを出力する動作と、を含んでもよい。
【0085】
本開示のさらに他の実施形態によれば、前記動作は、テーブル上の原本データを索引するために、原本データに対する領域探索用構文を確認する動作と、前記探索用構文に基づいて、前記原本データに対する索引情報を生成する動作と、を含んでもよい。
【0086】
また、本開示の一実施形態によってデータ構造を保存したコンピュータ可読媒体が開示される。
【0087】
データ構造は、データに効率的なアクセスおよび修正を可能にするデータの組織、管理、保存を意味し得る。データ構造は、特定の課題(例えば、最短時間のデータ検索、データ保存、データ修正)の解決のためのデータの組織を意味し得る。データ構造は、特定のデータ処理機能をサポートするように設計された、データ要素間の物理的あるいは論理的な関係と定義されることもできる。データ要素間の論理的な関係は、ユーザ定義データ要素間の連結関係を含んでもよい。データ要素間の物理的な関係は、コンピュータ可読保存媒体(例えば、永久保存装置)に物理的に保存されているデータ要素間の実際の関係を含んでもよい。データ構造は、具体的には、データの集合、データ間の関係、データに適用できる関数または命令語を含んでもよい。効果的に設計されたデータ構造を通じて、コンピューティング装置は、コンピューティング装置のリソースの使用を最低限に抑えながら、演算を行うことができる。具体的には、コンピューティング装置は、効果的に設計されたデータ構造を通じて演算、読み出し、取り込み、削除、比較、交換、検索の効率性を高めることができる。
【0088】
データ構造は、データ構造の形態によって線形データ構造と非線形データ構造に区分され得る。線形データ構造は、1つのデータの後に1つのデータのみが連結される構造であってもよい。線形データ構造は、リスト(List)、スタック(Stack)、キュー(Queue)、デック(Deque)を含んでもよい。リストは、内部的に順序が存在する一連のデータ集合を意味し得る。リストは、連結リスト(Linked List)を含んでもよい。連結リストは、それぞれのデータがポインタを有し、一列に連結されている方式でデータが連結されたデータ構造であってもよい。連結リストにおいてポインタは、次または以前のデータとの連結情報を含んでもよい。連結リストは、形態によって片方向連結リスト、双方向連結リスト、循環連結リストで表現され得る。スタックは、データへのアクセスに制限が付くデータ配列構造であってもよい。スタックは、データ構造の一端でのみデータを処理(例えば、挿入または削除)することができる線形データ構造であってもよい。スタックに保存されたデータは、後入れ先出しのデータ構造(LIFO-Last in First Out)であってもよい。キューは、データへのアクセスに制限が付くデータ配列構造であり、スタックとは異なって、先入れ先出しのデータ構造(FIFO-First in First Out)であってもよい。デックは、データ構造の両端でデータを処理できるデータ構造であってもよい。
【0089】
非線形データ構造は、1つのデータの後に複数個のデータが連結される構造であってもよい。非線形データ構造は、グラフ(Graph)データ構造を含んでもよい。グラフデータ構造は、頂点(Vertex)とエッジ(Edge)で定義することができ、エッジは、異なる2つの頂点を連結する線を含んでもよい。グラフデータ構造ツリー(Tree)データ構造を含んでもよい。ツリーデータ構造は、ツリーに含まれた複数個の頂点のうち、互いに異なる2つの頂点を連結する経路が1つであるデータ構造であってもよい。すなわちグラフデータ構造においてループ(loop)を形成しないデータ構造であってもよい。
【0090】
データ構造は、神経網に入力されるデータを含んでもよい。神経網に入力されるデータを含むデータ構造は、コンピュータ可読媒体に保存され得る。神経網に入力されるデータは、神経網学習過程で入力される学習データおよび/または学習が完了した神経網に入力される入力データを含んでもよい。神経網に入力されるデータは、前処理(pre-processing)を経たデータおよび/または前処理対象となるデータを含んでもよい。前処理は、データを神経網に入力させるためのデータ処理過程を含んでもよい。したがって、データ構造は、前処理対象となるデータおよび前処理で発生するデータを含んでもよい。前述したデータ構造は、ただ例示であり、本開示は、これに制限されない。
【0091】
データ構造は、神経網の重みを含んでもよい。(本明細書において重み、パラメーターは、同じ意味で使用され得る。)そして、神経網の重みを含むデータ構造は、コンピュータ可読媒体に保存され得る。神経網は、複数個の重みを含んでもよい。重みは、可変的であってもよく、神経網が所望の機能を行うために、ユーザまたはアルゴリズムに応じて可変され得る。例えば、1つの出力ノードに1つ以上の入力ノードがそれぞれのリンクによって相互連結された場合、出力ノードは、前記出力ノードと連結された入力ノードに入力された値およびそれぞれの入力ノードに対応するリンクに設定された重みに基づいて出力ノードから出力されるデータ値を決定することができる。前述したデータ構造は、ただ例示であり、本開示は、これに制限されない。
【0092】
本開示が一般的にコンピューティング装置により具現化されることが可能であると前述されているが、当業者であれば本開示が1つ以上のコンピュータ上で実行されることのできるコンピュータ実行可能命令及び/又はその他のプログラムモジュールとの結合及び/又はハードウェアとソフトウェアの組み合わせとして具現化されることが可能であるということをよく理解できるだろう。
【0093】
一般的に、プログラムモジュールは、特定のタスクを実行したり特定の抽象的なデータ類型を実装するルーティン、プログラム、コンポーネント、データ構造、その他等々を含む。また、当業者なら、本開示の方法がシングルプロセッサー又はマルチプロセッサーのコンピュータシステム、ミニコンピュータ、メインフレームコンピュータはもちろん、パーソナルコンピュータ、ハンドヘルド(handheld)コンピューティング装置、マイクロプロセッサー基盤の家電製品、又はプログラム可能な家電製品、その他等々(これらは、いずれも1つ以上の関連する装置と繋がって動作することができる)をはじめとする、他のコンピュータシステムの構成によって実施されることが可能であることをよく理解できる。
【0094】
さらに、本開示において説明された実施形態は、あるタスクが通信ネットワークを通じて繋がっている遠隔処理装置によって実行される、分散コンピューティング環境で実施されることが可能である。分散コンピューティング環境において、プログラムモジュールは、ローカルと遠隔メモリ保存装置との両方に位置することが可能である。
【0095】
コンピュータは、通常、様々なコンピュータ可読媒体を含む。コンピュータによってアクセス可能な媒体は、いずれもコンピュータ可読媒体になり得るが、このようなコンピュータ可読媒体は、揮発性及び非揮発性媒体、一時的(transitory)及び非一時的(non-transitory)媒体、移動式及び非移動式媒体を含む。制限ではなく例として、コンピュータ可読媒体は、コンピュータ可読保存媒体及びコンピュータ可読伝送媒体を含むことが可能である。コンピュータ可読保存媒体は、コンピュータ可読命令、データ構造、プログラムモジュール又はその他のデータのような情報を保存する任意の方法又は技術により実装される揮発性及び非揮発性媒体、一時的及び非一時的媒体、移動式及び非移動式媒体を含む。コンピュータ可読保存媒体は、RAM、ROM、EEPROM、フラッシュメモリ又はその他のメモリ技術、CD-ROM、DVD(digital video disk)又はその他の光ディスク保存装置、磁気カセット、磁気テープ、磁気ディスク保存装置又はその他の磁気保存装置、又はコンピュータによってアクセスでき、情報を保存するために使われることのできる任意のその他の媒体を含むが、これに限定されない。
【0096】
コンピュータ可読伝送媒体は、通常、搬送波(carrier wave)又はその他の伝送メカニズム(transport mechanism)のような被変調データ信号(modulated data signal)に、コンピュータ可読命令、データ構造、プログラムモジュール又はその他のデータ等を実装し、すべての情報伝達媒体を含む。被変調データ信号という用語は、信号の中に情報をエンコードするように、その信号の特性のうち1つ以上を設定又は変更した信号を意味する。制限ではなく例として、コンピュータ可読伝送媒体は、有線ネットワーク又は直接配線接続(direct-wired connection)のような有線媒体、そして音響、RF、赤外線、その他の無線媒体のような無線媒体を含む。前述の媒体の任意の組み合わせもコンピュータ可読伝送媒体の範囲に含まれるものとする。
【0097】
コンピュータ1102を含む本開示の様々な側面を具現する例示的な環境1100が示されており、コンピュータ1102は、処理装置1104、システムメモリ1106およびシステムバス1108を含む。システムバス1108は、システムメモリ1106(これに限定されない)を含むシステムコンポーネントを処理装置1104に連結させる。処理装置1104は、様々な商用プロセッサのうち、任意のプロセッサであってもよい。デュアルプロセッサおよびその他マルチプロセッサ アーキテクチャーも、処理装置1104として利用され得る。
【0098】
システムバス1108は、メモリバス、周辺装置バス、および様々な商用のバスアーキテクチャーのうち、任意のものを使用するローカルバスに、さらに相互連結され得る複数の類型のバス構造のうち、任意のものであってもよい。システムメモリ1106は、読み出し専用メモリ(ROM)1110およびランダムアクセスメモリ(RAM)1112を含む。基本的な入出力システム(BIOS)は、ROM,EPROM,EEPROMなどの非揮発性メモリ1110に保存され,このBIOSは、起動中のようなときに、コンピュータ1102内の構成要素間に情報を伝送することをサポートする基本的なルーチンを含む。RAM1112は、また、データをキャッシュするための静的RAMなどの高速RAMを含んでもよい。
【0099】
コンピュータ1102は、また、内蔵型ハードディスクドライブ(HDD)1114(例えば、EIDE,SATA)-この内蔵型ハードディスクドライブ1114は、適切なシャシー(不図示)内で外付け型用途で構成され得る-、磁気フロッピーディスクドライブ(FDD)1116(例えば、移動式ディスケット1118から読み取ったり、それに書き込むためのものである)、および光ディスクドライブ1120(例えば、CD-ROMディスク1122を読み取ったり、DVDなどのその他高容量光媒体から読み取ったり、それに書き込むためのものである)を含む。ハードディスクドライブ1114、磁気ディスクドライブ1116および光ディスクドライブ1120は、それぞれハードディスクドライブインターフェース1124、磁気ディスクドライブインターフェース1126および光ドライブインターフェース1128によってシステムバス1108に連結され得る。外付け型ドライブ具現のためのインターフェース1124は、USB(Universal Serial Bus)およびIEEE 1394インターフェース技術のうち、少なくとも1つまたはその両方を含む。
【0100】
これらのドライブおよびそれと関連したコンピュータ可読媒体は、データ、データ構造、コンピュータで実行可能命な令語、その他等の非揮発性保存を提供する。コンピュータ1102の場合、ドライブおよび媒体は、任意のデータを適切なデジタル形式に保存することに対応する。前述のコンピュータ可読媒体に関する説明が、HDD、移動式磁気ディスク、およびCDまたはDVDなどの移動式光媒体を言及しているが、当業者なら、ジップドライブ(zip drive)、磁気カセット、フラッシュメモリカード、カートリッジ、その他等のコンピュータによって読み出し可能な他の類型の媒体も、例示的な運営環境において使用され得、また、任意のこのような媒体が、本開示の方法を行うためのコンピュータで実行可能な命令語を含むことができることは自明である。
【0101】
運営体制1130、1つ以上のアプリケーションプログラム1132、その他プログラムモジュール1134およびプログラムデータ1136を含む多数のプログラムモジュールが、ドライブおよびRAM1112に保存され得る。運営体制、アプリケーション、モジュールおよび/またはデータの全部またはその一部分がRAM1112にキャッシュされ得る。本開示が、様々な商業的に利用可能な運営体制または運営体制の組み合わせで具現され得ることは自明である。
【0102】
ユーザは、1つ以上の有線・無線入力装置、例えば、キーボード1138およびマウス1140等のポインティング装置を介して、コンピュータ1102に命令および情報を入力することができる。その他の入力装置(不図示)では、マイク、IRリモコン、ジョイステック、ゲームパッド、スタイラスペン、タッチスクリーン、その他等があり得る。これらおよびその他の入力装置は、システムバス1108に連結されている入力装置インターフェース1142を介して処理装置1104に連結されることがよくあるが、並列ポート、IEEE 1394直列ポート、ゲームポート、USBポート、IRインターフェース、その他等の様々なインターフェースによって連結され得る。
【0103】
本開示内容におけるユーザ入力という用語は、ユーザインタフェース内で(あるいはウェブページ内で)行われるユーザの要請に関連した任意の形態のユーザ入力を意味し得る。例えば、ユーザ入力は、ポインタオブジェクトを移動させるユーザ入力を含んでもよい。他の例示として、ユーザ入力は、ユーザインタフェース上での特定のオブジェクトを選択するユーザ入力を含んでもよい。例えば、任意のオブジェクト(例えば、モジュール、タップなど)をタッチあるいはクリックする方式で、当該オブジェクトに対するユーザ入力が行われ得る。選択に関連したユーザ入力が受信される場合、当該入力に応答してユーザインタフェースあるいはウェブページ上に新しいオブジェクトがディスプレイされたり、またはオブジェクトの属性が変更されてディスプレイされ得る。
【0104】
さらに他の例示として、ユーザ入力は、様々な入力手段によって入力された言語、文字、数字および記号などの情報を含んでもよい。ユーザ入力は、前述した例示に限定されるものではなく、マウスカーソル制御、マウスのホイールスクロール、キーボードの方向キー、マウスクリック、タッチなど様々な形態のユーザアクションが可能である。
【0105】
モニター1144または他の類型のディスプレイ装置も、ビデオアダプタ1146等のインターフェースを介してシステムバス1108に連結される。モニター1144に加えて、コンピュータは、一般的にスピーカー、プリンタ、その他等の他の周辺出力装置(不図示)を含む。例えば、前記モニター1144または他の類型のディスプレイ装置は、液晶ディスプレイ(liquid crystal display,LCD)、薄膜トランジスター液晶ディスプレイ(thin film transistor-liquid crystal display,TFT LCD)、有機発光ダイオード(organic light-emitting diode,OLED)、フレキシブルディスプレイ(flexible display)、3次元ディスプレイ(3D display)、電子インクディスプレイ(e-ink display)のうち少なくとも1つを含んでもよい。また、ディスプレイ部は、プロセッサ110で処理されるデータを出力(表示)する。
【0106】
コンピュータ1102は、有線および/または無線通信を介した遠隔コンピュータ1148等の1つ以上の遠隔コンピュータへの論理的連結を使用してネットワーク化された環境で動作することができる。遠隔コンピュータ1148は、ワークステーション、コンピューティングデバイスコンピュータ、ルーター、パーソナルコンピュータ、携帯用コンピュータ、マイクロプロセッサー基盤娯楽機器、ピア装置またはその他の通常のネットワークノードであってもよく、一般的にコンピュータ1102に対して記述された構成要素のうち、多数またはその全部を含むが、簡略化のために、メモリ保存装置1150のみが示されている。図示の論理的連結は、近距離通信網(LAN)1152および/またはさらに大きいネットワーク、例えば、広域通信網(WAN)1154への有線または無線連結を含む。このようなLANおよびWANネットワーキング環境は、オフィスおよび会社で一般的なものであり、イントラネットなどの全社的コンピュータネットワーク(enterprise-wide computer network)を容易にし、これらすべては、全世界のコンピュータネットワーク、例えば、インターネットに連結され得る。
【0107】
LANネットワーキング環境で使用されるとき、コンピュータ1102は、有線および/または無線通信ネットワークインターフェースまたはアダプタ1156を介してローカルネットワーク1152に連結される。アダプタ1156は、LAN1152への有線または無線通信を容易にすることができ、このLAN1152は、また、無線アダプタ1156と通信するために設置されている無線アクセスポイントを含む。WANネットワーキング環境で使用されるとき、コンピュータ1102は、モデム1158を含んでもよいし、または、WAN1154上の通信コンピューティングデバイスに連結されたり、またはインターネットを介したなど、WAN1154を介して通信を設定するその他の手段を有する。内蔵型または外付け型および有線または無線装置であってもよいモデム1158は、直列ポートインターフェース1142を介してシステムバス1108に連結される。ネットワーク化された環境で、コンピュータ1102に対して説明されたプログラムモジュールまたはその一部分が遠隔メモリ/保存装置1150に保存され得る。図示のネットワーク連結は、例示的なものであり、コンピュータの間に通信リンクを設定するその他の手段が使用され得ることは自明である。
【0108】
コンピュータ1102は、無線通信に配置されて動作する任意の無線装置または個体、例えば、プリンタ、スキャナ、デスクトップおよび/または携帯用コンピュータ、PDA(portable data assistant)、通信衛星、無線で検出可能なタグと関連した任意の装備または場所、および電話と通信をする動作をする。これは、少なくともWi-Fi(登録商標)およびブルートゥース(登録商標)無線技術を含む。したがって、通信は、従来のネットワークのように、予め定義された構造であるか、単純に少なくとも2個の装置間のアドホック通信(ad hoc communication)であってもよい。
【0109】
Wi-Fi(登録商標)(Wireless Fidelity)は、有線で連結されず、インターネットなどへの連結を可能にする。Wi-Fi(登録商標)は、このような装置、例えば、コンピュータが、室内外を問わず、すなわち基地局の通話圏内のどこからも、データを送受信できるようにするセル電話のような無線技術である。Wi-Fi(登録商標)ネットワークは、安全で信頼性あり、高速の無線連結を提供するためにIEEE802.11(a、b、g、その他)という無線技術を使用する。コンピュータを互いに、インターネットにおよび有線ネットワーク(IEEE802.3またはイーサネットを使用する)に接続させるために、Wi-Fi(登録商標)が使用され得る。Wi-Fi(登録商標)ネットワークは、非認可2.4および5GHz無線帯域で、例えば、11Mbps(802.11a)または54Mbps(802.11b)データレートで動作したり、両帯域(デュアル帯域)を含む製品で動作することができる。
【0110】
本開示の技術分野における通常の知識を有する者は、情報及び信号が、任意の様々な相異なる技術及び手法を利用して表現されることができるということを理解することが可能である。例えば、上記の説明において参照できるデータ、指示、命令、情報、信号、ビット、シンボル及びチップは、電圧、電流、電磁気派、磁場又は粒子、光学場又は粒子、又はこれらの任意の組み合わせによって表現されることが可能である。
【0111】
また、コンピュータ1102は、ユーザ端末で具現可能になり得る。したがって、本開示の一実施形態による方法は、ソフトウェアを搭載できるハードウェアとして端末に対して制限なく適用され得る。本開示において説明されるユーザ端末は、携帯電話、スマートフォン(smart phone)、ノートブックコンピュータ(laptop computer)、デジタル放送用端末、PDA(personal digital assistants)、PMP(portable multimedia player)、ナビゲーション、スレートPC(slate PC)、タブレットPC(tablet PC)、ウルトラブック(ultrabook)、ウェラブルデバイス(wearable device、例えば、ウォッチ型端末(smartwatch)、ガラス型端末(smart glass)、HMD(head mounted display))等が含まれ得る。また、ユーザ端末は、ユーザによってデータ入出力が可能な装置とユーザにデータをディスプレーできる装置および有線または通信が可能な装置を含んでもよいし、これに限定されるものではない。例えば、コンピューティング装置100は、デスクトップ、ノートパソコン、タブレットPC、携帯用端末などが挙げられる。
【0112】
本開示の技術分野において通常の知識を有する者は、ここに開示されている実施形態に係る説明において取り挙げられた様々な例示的な論理ブロック、モジュール、プロセッサー、手段、回路及びアルゴリズム段階が、電子ハードウェア、(説明の便宜上、ここでは「ソフトウェア」と称する)様々な形のプログラム又は、設計コード、又はこれらすべての結合によって具現化されることができるということを理解することが可能である。ハードウェア及びソフトウェアのこのような相互互換性を明確に説明するために、様々な例示的なコンポーネント、ブロック、モジュール、回路、及び段階について、これらの機能に着目して上記で一般的に説明した。このような機能がハードウェアやソフトウェアとして実装されるかどうかは、特定のアプリケーション及び全体システムに対して加えられる設計上の制限によって決定される。本開示の技術分野において通常の知識を有する者は、個々の特定のアプリケーションについて様々な方法で説明された機能を具現化することができるが、このような具現化の決定は、本開示の範囲を逸脱するものと解釈すべきではない。
【0113】
ここに示されている様々な実施形態は、方法、装置、又は標準プログラミング及び/又はエンジニアリング技術を使った製造物品(article)によって実現されることが可能である。用語として、「製造物品」は、任意のコンピュータで読み出し可能な装置からアクセス可能なコンピュータプログラム、キャリアー、又は媒体(media)を含む。例えば、コンピュータで読み出し可能な保存媒体は、磁気保存装置(例えば、ハードディスク、フロッピーディスク、磁気ストリップ等)、光学ディスク(例えば、CD、DVD等)、スマートカード及びフラッシュメモリ装置(例えば、EEPROM、カード、スティック、キードライブ等)を含むが、これらに限定されるわけではない。また、ここに示されている様々な保存媒体は、情報を保存するための1つ以上の装置及び/又は他の機械で読み出し可能な媒体を含む。
【0114】
ここに示されたプロセスにおける複数の段階の特定の順番又は階層構造は、例示的なアプローチの一例であることを理解されたい。設計上の優先順位に基づき、本開示の範囲内で、プロセスにおける段階の特定の順番又は階層構造が再配列されることができることを理解されたい。添付の方法請求項は、サンプルとしての順番で、様々な段階のエレメントを提供するが、示された特定の順番又は階層構造に限定されることを意味するわけではない。
【0115】
ここに示された実施形態に関する説明は、任意の本開示の技術分野において通常の知識を有する者が、本開示を利用したり又は実施できるように提供される。このような実施形態に対する様々な変形は、本開示の技術分野において通常の知識を有する者には明確に理解できるものであり、ここに定義された一般的な原理は、本開示の範囲を逸脱することなく他の実施形態に適用されることが可能である。従って、本開示はここに示す実施形態によって限定されるものではなく、ここに示す原理及び新規な特徴と一貫する最広義の範囲で解釈されるべきである。