【文献】
横山昌平,関係データベースを利用したXML版管理手法,第14回データ工学ワークショップ(DEWS2003)論文集[online],日本,電子情報通信学会データ工学研究専門委員会,2003年5月16日,インターネット
【文献】
末岡洋子,米Yahoo!がBOSSを有料化へ、SearchMonkey構造データへのアクセスも可能に,SourceForge.JP Magazine,[online],2009年2月12日,[検索日2014年4月8日],インターネット
【文献】
村田美友紀,仕様に基づいたRDBクエリ検索システム,電子情報通信学会技術研究報告,Vol.99,No.202,日本,社団法人電子情報通信学会,1999年7月22日,第99巻,第165−170ページ
(58)【調査した分野】(Int.Cl.,DB名)
前記結果にアクセスする前記クエリを発行したユーザに課金すべき価格が、前記結果を決定するために分析されるデータの列数に基づくべきでない場合に、前記ユーザに課金すべき価格を、前記サブセット内のデータの行数と、前記結果を決定するために分析されるデータの行数に基づいて決定するステップをさらに含む、請求項1に記載の方法。
【発明を実施するための形態】
【0014】
開示した技術の機能および利点は、以下で説明する詳細な説明を添付図面と関連して検討すればより明らかになろう。添付図面では、図面全体にわたって同じ参照文字は対応する要素を示す。添付図面では、同じ参照番号は一般に、同一の、機能的に類似の、かつ/または構造的に類似の要素を示す。要素が最初に出現する図面を、対応する参照番号の左端の数字(複数可)により示す。
【0015】
I.導入
以下の詳細な説明では、本発明の例示的な諸実施形態を示す添付図面を参照する。しかし、本発明の範囲はこれらの諸実施形態に限定されず、添付の特許請求の範囲により定義される。したがって、添付図面に示すものを越える諸実施形態、例えば、図示した諸実施形態の修正版は、添付図面に示すものを越えるものであっても、本発明により包含することができる。
【0016】
本明細書における「一実施形態」、「実施形態」、「実施形態の例」、等への参照は、説明した実施形態が特定の機能、構造、または特徴を含みうることを示すが、全ての実施形態が必ずしも当該特定の機能、構造、または特徴を含まなくともよい。さらに、かかる語句は必ずしも同一の実施形態に言及しない。さらに、特定の機能、構造、または特徴を一実施形態と関連して説明するとき、明示するとしないとに関わらずかかる特定の機能、構造、または特徴を他の実施形態と関連して実装することは当業者の知識の範囲内にあると考えている。
【0017】
II.寄与分析を用いた、データへのアクセスの価格設定
諸実施形態の例では、寄与分析を用いた、データへのアクセスに価格設定することができる。例えば、ユーザが、データを格納した記憶域に対してクエリを発行することができる。データを任意の適切な形式で表現してもよい。例えば、データを、プロパティを有するオブジェクトとして表現してもよい。この例によれば、オブジェクトが、XML(extensible markup language)ドキュメントの要素、関係データベースの行、列記憶域の列、等であってもよい。記憶域がデータのサブセットを分析して、クエリに応答してユーザに提供すべき結果を決定することができる。分析されるデータのサブセットを寄与データと称する。データ・アクセス価格計算器が寄与分析を行って、結果にアクセスするユーザに課金すべき価格を決定する。寄与分析では、寄与データに含まれるデータの行および/または列の数、結果に含まれるデータの行および/または列の数、記憶域が寄与データを分析している間に使用した関数、またはこれらの任意の組合せを考慮する。例えば、データ・アクセス価格計算器がかかる情報を、記憶域から受け取られるインジケータから導出してもよい。別の例では、データ・アクセス価格計算器が、結果に含まれるデータの行および/または列の数を当該結果自体から導出してもよい。
【0018】
本明細書で説明した寄与分析を用いた、データへのアクセスに価格設定するための技術はストアド・プロシージャに適用可能であるが、諸実施形態の例の範囲はこの点に限定されない。ストアド・プロシージャ(proc、sproc、StoPro、SP、等としても知られる)は、毎回クエリを記憶域に送信する必要がなく、かつ、毎回クエリを再コンパイルする必要がなく、複数回実行できる事前コンパイル型のクエリである。例えば、(他種のクエリと対照的に)ストアド・プロシージャを用いると、データ消費システムにおけるネットワーク・トラフィックおよび/またはプロセッサ負荷を軽減することができる。ストアド・プロシージャはクエリ・タイプの一例である。本明細書で説明した技法を任意の適切なクエリ・タイプに適用可能であることは理解されよう。
【0019】
本明細書で説明した技法には、データへのアクセスの価格設定に関して、従来の技法と比べて様々な利益がある。例えば、本明細書で説明した技法を用いるとより細かいレベルで(例えば、行単位、列単位、またはセル単位で)データを販売することができる。セルは、データの1行および1列に対応する。結果における列数および/もしくは行数ならびに/またはそれらの中のデータ・タイプを価格設定において考慮してもよい。比較的大量のデータにアクセスしたユーザに、比較的少量のデータにアクセスしたユーザよりも高く課金してもよい。例えば、大量の寄与データが分析されるクエリを送信したユーザに、少量の寄与データが分析されるクエリを送信したユーザよりも高く課金してもよい。クエリ・タイプ、当該クエリに応答して分析されるデータ・タイプ、等に基づいて価格設定を行ってもよい。指定の関数に対して価格を設定してもよい。当該指定の関数は、寄与データの分析中に実施可能な動作を定義する。指定の関数の価格が、当該関数に関して分析される寄与データの量と独立であってもよい。
【0020】
図1は、一実施形態に従うデータ消費システム100の例のブロック図である。一般的には、データ消費システム100は、プロバイダのデータをホストして当該システムのユーザが当該データにアクセスできるようにするように動作する。諸実施形態の例によれば、データ消費システム100は、データにアクセスするユーザに課金すべき価格を、寄与分析を用いて決定するように動作する。寄与分析を用いた、データへのアクセスに価格設定するための技法についてのさらなる詳細は後述する。
【0021】
図1に示すように、データ消費システム100は複数のユーザ・システム102A〜102M、ネットワーク104、データ・アクセス価格計算器106、および記憶域108を備える。ユーザ・システム102A〜102Mとデータ・アクセス価格計算器106の間の通信が、良く知られたネットワーク通信プロトコルを用いてネットワーク104上で実行される。ネットワーク104は広域ネットワーク(例えば、インターネット)、LAN(local area network)、別の種類のネットワーク、またはそれらの組合せであってもよい。データ・アクセス価格計算器106と記憶域108の間の通信は、SQL(Structured Query Language)、JPQL(Java Persistence Query Language)、等のような良く知られた問合せ言語を用いて実行される。
【0022】
ユーザ・システム102A〜102Mは、記憶域108に格納したデータを要求する(または記憶域108にアクセス可能な)データ・アクセス価格計算器106へクエリを提供できる処理システムである。処理システムの一例として、1組の命令に従ってデータを操作できる少なくとも1つのプロセッサを備えるシステムがある。例えば、処理システムが、コンピュータ、携帯情報端末、等であってもよい。例えば、ユーザが、当該ユーザが所有するかまたはアクセス可能なユーザ・システム102に展開したクライアント(例えば、ウェブ・ブラウザ、ウェブ・クローラ、または他種のクライアント)を用いて、データに対するクエリを開始してもよい。
【0023】
図1では、ユーザ・システム102A〜102Mをデスクトップ・コンピュータとして示しているが、ユーザ・システム102A〜102Mが任意のクライアント可能なシステムまたは装置であってもよいことは当業者には理解されよう。当該システムまたは装置には、ラップトップ・コンピュータ、携帯情報端末、携帯電話、等が含まれるがこれらに限らない。
【0024】
データ・アクセス価格計算器106は、記憶域108に格納された(または記憶域108にアクセス可能な)データにアクセスするためのクエリを発行したユーザに課金すべき価格を決定できる処理システムである。ユーザのクエリを受け取ると、データ・アクセス価格計算器106は、記憶域108に対するクエリを実行する。データ・アクセス価格計算器106は、当該クエリに基づく結果を記憶域108から受け取る。データ・アクセス価格計算器106が、寄与分析インジケータを記憶域108から受け取ってもよい。寄与分析インジケータは、データ・アクセス価格計算器106による寄与分析の実施を容易にするための情報を含む。例えば、寄与分析インジケータが、ユーザのクエリに関する寄与データに含まれるデータの行数および/または列数、結果に含まれるデータの行数および/または列数、寄与データの分析中に使用された関数、等を指定してもよい。データ・アクセス価格計算器106は、結果および/または寄与分析インジケータを分析して、当該結果にアクセスしたユーザに課金すべき価格を決定する。データ・アクセス価格計算器106は当該結果を、クエリが開始されたユーザ・システム102に転送する。
【0025】
記憶域108は、データを複数のテーブルに格納する記憶装置または記憶システムである。各テーブルには、それぞれ、データの行および列が含まれる。記憶域108が処理機能を備えてもよいが、諸実施形態の例の範囲はこの点に限定されることはない。例えば、記憶域108が、記憶域108に格納されている(または記憶域108にアクセス可能な)どのデータが、データ・アクセス価格計算器106により実行されるクエリに基づいて分析されるべきかを決定してもよい。この例によれば、記憶域108が、当該データを分析してクエリに基づいて結果を決定してもよい。分析されるデータを寄与データと称する。記憶域108が寄与分析インジケータを生成してもよいが、諸実施形態の例の範囲はこの点に限定されることはない。寄与分析インジケータは、寄与データに含まれるデータの行および/または列の数、結果に含まれるデータの行および/または列の数、記憶域が寄与データを分析している間に使用した関数、またはこれらの任意の組合せを指定する。記憶域108が結果を提供し、(適用可能ならば)寄与分析インジケータをデータ・アクセス価格計算器106に提供して、寄与分析に関してさらに処理を行う。
【0026】
図2は、一実施形態に従う寄与分析を用いてデータへのアクセスに価格設定するための方法の流れ
図200を示す。流れ
図200を、例えば
図1に示すデータ消費システム100のデータ・アクセス価格計算器106により実施してもよい。例示の目的のため、一実施形態に従って、流れ
図200を
図3に示すデータ・アクセス価格計算器300に関して説明する。データ・アクセス価格計算器300はデータ・アクセス価格計算器106の一例である。
図3に示すように、データ・アクセス価格計算器300はクエリ実行モジュール302、結果受領モジュール304、結果行決定モジュール306、価格コンポーネント決定モジュール308、結果列決定モジュール310、関係決定モジュール312、基本価格決定モジュール314、プレミアム価格決定モジュール316、およびアクセス価格決定モジュール318を備える。別の構造的および動作にかかる諸実施形態は、流れ
図200に関する議論を基にすれば当業者には明らかであろう。流れ
図200を以下で説明する。
【0027】
図2に示すように、流れ
図200の方法はステップ202で開始する。ステップ202で、データを複数のテーブルに格納する記憶域に対してクエリ実行する。各テーブルは、それぞれ、データの行および列を含む。記憶域に格納されたデータが様々なトピックに関するものであってもよい。例えば、第1のテーブルが、指定の地域で売りに出されている家に関するデータを含んでもよく、第2のテーブルが指定のジャンルの映画に関するデータを含んでもよく、第3のテーブルがレシピに関するデータを含んでもよい、等である。例示の目的のため、流れ
図200の各ステップを、ロサンゼルスにある全ての食料品店の一覧を要求するクエリの例に関して論ずる。この例を以下の議論では「食料品店の例」と称する。食料品店の例で実行されるクエリはクエリの一例にすぎず、任意の適切なクエリを記憶域に対して実行してもよいことは理解されよう。実施形態の例では、クエリ実行モジュール302がクエリを実行する。
【0028】
ステップ204で、クエリに基づいて結果を受け取る。当該結果はデータのサブセットを含む。食料品店の例によれば、当該結果が、要求されたロサンゼルスにある全ての食料品店の一覧を含んでもよい。当該結果における食料品店の一覧は記憶域に格納されるデータのサブセットであることは理解されよう。例えば、記憶域が他のデータ、例えば、売りに出されている家に関するデータ、映画に関するデータ、レシピに関するデータ、等を格納してもよい。実装形態の例では、結果受領モジュール304が当該結果を受け取る。
【0029】
ステップ206で、サブセット内のデータの行数を決定する。食料品店の例によれば、各行は、結果に含まれる食料品店の一覧内の各食料品店を表してもよい。実装形態の例では、結果行決定モジュール306がサブセット内のデータの行数を決定する。
【0030】
ステップ208で、結果にアクセスするためのクエリを発行したユーザに課金すべき価格がサブセット内のデータの列数に基づくべきかどうかを判定する。食料品店の例によれば、各列が食料品店の各特性を表してもよい。例えば、当該特性として、営業時間、電話番号、住所、顧客評価、等を含めてもよい。ユーザに課金すべき価格が、結果が含む特性の数に依存してもよい。実装形態の例では、価格コンポーネント決定モジュール308が、結果にアクセスするユーザに課金すべき価格がサブセット内のデータの列数に基づくべきかどうかを判定する。価格が当該サブセット内のデータの列数に基づくべき場合は、フローはステップ212に続く。そうでなければ、フローはステップ210に続く。
【0031】
ステップ210で、結果にアクセスするためのクエリを発行したユーザに課金すべき価格を決定したサブセット内のデータの行数に基づいて決定する。食料品店の例によれば、価格は結果の食料品店の一覧に含まれる食料品店の数に基づく。実装形態の例では、アクセス価格決定モジュール318が、価格を、決定したサブセット内のデータの行数に基づいて決定する。ステップ210が完了すると、流れ
図200は終了する。
【0032】
ステップ212で、サブセット内のデータの列数を決定する。食料品店の例によれば、結果に含まれる食料品店の特性の数を決定する。実装形態の例では、結果列決定モジュール310が、サブセット内のデータの列数を決定する。
【0033】
ステップ214で、プレミアム価格がサブセット内のデータの少なくとも1つの列に関連付けられているかどうかを判定する。食料品店の例によれば、例示のため、結果に含まれる食料品店の顧客評価に対してプレミアム価格を課金できると仮定する。実装形態の例では、関係決定モジュール312が、プレミアム価格がサブセット内のデータの少なくとも1つの列に関連付けられているかを判定する。プレミアム価格がサブセット内のデータの少なくとも1つの列に関連付けられている場合は、フローはステップ218に続く。そうでなければフローはステップ216に続く。
【0034】
ステップ216で、結果にアクセスしたユーザに課金すべき価格を、決定したサブセット内のデータの行数と決定したサブセット内のデータの列数に基づいて決定する。食料品店の例によれば、価格は、結果に含まれる食料品店の数と食料品店の特性の数に基づく。実装形態の例では、アクセス価格決定モジュール318が、価格を、決定したサブセット内のデータの行数と決定したサブセット内のデータの列数に基づいて決定する。ステップ216が完了すると、流れ
図200は終了する。
【0035】
ステップ218で、サブセット内のデータの列数に対する基本価格を決定する。例えば、基本価格が、サブセット内のデータの列数と独立な固定価格であってもよい。あるいは、基本価格がサブセット内のデータの列数に比例してもよい。食料品店の例によれば、基本価格は、結果に含まれる食料品店の特性の数に対して決まる。実装形態の例では、基本価格決定モジュール314が基本価格を決定する。
【0036】
ステップ220で、プレミアム価格を決定する。実装形態の例では、プレミアム価格決定モジュール316がプレミアム価格を決定する。
【0037】
ステップ222で、結果にアクセスするユーザに課金すべき価格を、決定したサブセット内のデータの行数に基づいて、決定したサブセット内のデータの列数に基づいて、基本価格、サブセット内のデータの少なくとも1つの列に関連付けられたプレミアム価格に基づいて、決定する。食料品店の例によると、価格は、結果に含まれる食料品店の数、結果に含まれる食料品店の特性の数、基本価格、およびプレミアム価格に基づく。実装形態の例では、アクセス価格決定モジュール318が、ユーザに課金すべき価格を、決定したサブセット内のデータの行数、決定したサブセット内のデータの列数、基本価格、およびプレミアム価格に基づいて決定する。ステップ222が完了すると、流れ
図200は終了する。
【0038】
一実施形態の例によれば、記憶域の幾つかのテーブルに含まれる行に、当該記憶域の他のテーブルに含まれる行よりも高い価格を関連付けてもよい。例えば、第1のテーブル内の行を第1の価格に関連付け、第2のテーブル内の行を第2の価格に関連付けてもよい、等である。ユーザに課金すべき価格を決定するときに、行の間のかかる価格差を考慮してもよい。
【0039】
幾つかの諸実施形態の例では、流れ
図200のステップ202、204、206、208、210、212,214、216、218、220、および/または222のうち1つまたは複数を実施しなくともよい。さらに、ステップ202、204、206、208、210、212、214、216、218、220、および/または222に対する追加または代替のステップを実施してもよい。
【0040】
データ・アクセス価格計算器300がクエリ実行モジュール302、結果受領モジュール304、結果行決定モジュール306、価格コンポーネント決定モジュール308、結果列決定モジュール310、関係決定モジュール312、基本価格決定モジュール314、プレミアム価格決定モジュール316、および/または価格決定モジュール318のうち1つまたは複数を備えなくともよい。さらに、データ・アクセス価格計算器300が、クエリ実行モジュール302、結果受領モジュール304、結果行決定モジュール306、価格コンポーネント決定モジュール308、結果列決定モジュール310、関係決定モジュール312、基本価格決定モジュール314、プレミアム価格決定モジュール316、および/またはアクセス価格決定モジュール318に対する追加または代替のモジュールを備えてもよい。
【0041】
一実施形態の例によれば、流れ
図200のステップ208、210、212、214、216、218、220、および/または222を、
図4の流れ
図400に示すステップで置き換えてもよい。一実施形態に従って、流れ
図400を
図5に示すデータ・アクセス価格計算器500に関して説明する。データ・アクセス価格計算器500はデータ・アクセス価格計算器106の一例である。
図5に示すように、データ・アクセス価格計算器500は第1の列価格決定モジュール502、第2の列価格決定モジュール504、およびアクセス価格決定モジュール318を備える。別の構造的および動作にかかる諸実施形態は、流れ
図400に関する議論を基にすれば当業者には明らかであろう。流れ
図400を以下で説明する。
【0042】
図4に示すように、流れ
図400の方法はステップ402で開始する。ステップ402で、サブセット内のデータの第1の列の第1の価格を決定する。実装形態の例では、第1の列価格決定モジュール502が当該第1の列の当該第1の価格を決定する。
【0043】
ステップ404で、サブセット内のデータの第2の列の第2の価格を決定する。第2の価格は第1の価格よりも高い。
図2を参照して食料品店の例で上述したように、食料品店の顧客評価の価格を、当該食料品店の電話番号よりも高く設定してもよい。したがって、データの第1の列の第1の価格は食料品店の電話番号の価格に対応し、データの第2の列の第2の価格は食料品店の顧客評価の価格に対応してもよい。実装形態の例では、第2の列価格決定モジュール504が第2の列の第2の価格を決定する。
【0044】
ステップ406で、結果にアクセスするユーザに課金すべき価格を、決定したサブセット内のデータの行数、第1の価格、および第2の価格に基づいて決定する。食料品店の例によれば、価格は、結果の食料品店の一覧に含まれる食料品店の数、食料品店の電話番号の価格、および食料品店の顧客評価の価格に基づく。実装形態の例では、アクセス価格決定モジュール308が、ユーザに課金すべき価格を、決定したサブセット内のデータの行数、第1の価格、および第2の価格に基づいて決定する。
【0045】
図2および
図4の流れ
図200および400に示した方法では、クエリに基づく結果に含まれるデータの量を考慮している。これらの方法によれば、大量のデータを含む結果へアクセスするユーザに、少量のデータを含む結果にアクセスするユーザよりも多く課金してもよい。しかし、クエリを実行するのに大量の寄与データを分析する必要があったかもしれないが、関連する結果に比較的ごくわずかな(例えば1行の)データが含まれるクエリもある。かかる事例では、結果にアクセスするユーザに課金すべき価格を決定するために寄与データの量を考慮する価格設定モデルを利用することが望ましいかもしれない。
【0046】
図6は、一実施形態に従ってクエリに関して分析される寄与データの量を考慮した、データへのアクセスに価格設定するための方法の流れ
図600を示す。例示の目的のため、一実施形態に従って、流れ
図600を
図7のデータ・アクセス価格計算器700に関して説明する。データ・アクセス価格計算器700はデータ・アクセス価格計算器106の一例である。
図7に示すように、データ・アクセス価格計算器700はクエリ実行モジュール302、インジケータ受領モジュール702、寄与行決定モジュール704、寄与列決定モジュール706、結果受領モジュール304、結果行決定モジュール306、価格コンポーネント決定モジュール308、およびアクセス価格決定モジュール318を備える。別の構造的および動作にかかる諸実施形態は、流れ
図600に関する議論を基にすれば当業者には明らかであろう。流れ
図600を以下で説明する。
【0047】
図6に示すように、流れ
図600の方法はステップ202で開始する。ステップ202で、データを複数のテーブルに格納する記憶域に対してクエリ実行する。各テーブルは、それぞれ、データの行および列を含む。例示の目的のため、流れ
図600の各ステップを、最も評価の高いロサンゼルスの中華レストランを要求するクエリの例に関して論ずる。本例を、以下の議論では「レストランの例」と称する。レストランの例で実行されるクエリはクエリの一例にすぎず、任意の適切なクエリを当該記憶域に対して実行できることは理解されよう。一実施形態の例では、クエリ実行モジュール302がクエリを実行する。
【0048】
ステップ602で、クエリの実行に関して分析されるデータの第1のサブセットに含まれるデータの行数を指定する、インジケータを受け取る。レストランの例では、データの第1のサブセットがロサンゼルスの全ての中華レストランの一覧を含んでもよい。例えば、データの第1のサブセットに含まれるデータの各行が各々の中華レストランを表してもよい。ロサンゼルスの全ての中華レストランの一覧を、本例では寄与データと称する。実装形態の例では、インジケータ受領モジュール702がインジケータを受け取る。
【0049】
一実施形態の例では、寄与行決定モジュール704が、第1のサブセットに含まれるデータの行数をインジケ一タに基づいて決定する。別の実施形態の例によれば、インジケータがさらに、データの第1のサブセットに含まれるデータの列数を指定する。本実施形態によれば、寄与列決定モジュール706が、第1のサブセットに含まれるデータの列数をインジケータに基づいて決定してもよい。
【0050】
別の実施形態の例では、インジケータが、記憶域から受け取ったクエリ・プランを含む。クエリ・プランとは、記憶域によって実施され、記憶域に対するクエリの実行に応答して結果を生成する1組の動作である。例えば、クエリ・プランにより、第1のテーブル内の第1の行数、第2のテーブル内の第2の行数、等がクエリの実行に関して記憶域により分析されると指定してもよい。本実施形態によれば、第1のサブセットに含まれるデータの行数は第1の行数、第2の行数、等の和である。
【0051】
ステップ604で、クエリに基づいて結果を受け取る。当該結果はデータの第2のサブセットを含む。第1のサブセットは、第2のサブセットよりも多くの、記憶域に格納されたデータを含む。例えば、データの第2のサブセットが、データの第1のサブセットのサブセットであってもよい。レストランの例によれば、当該結果に、最も評価の高いロサンゼルスの中華レストランが含まれる。最も評価の高いロサンゼルスの中華レストランが寄与データ(即ち、本例ではロサンゼルスの全ての中華レストランの一覧)のサブセットであることが分かる。実装形態の例では、結果受領モジュール304が結果を受け取る。
【0052】
ステップ606で、第2のサブセット内のデータの行数を決定する。レストランの例によれば、結果が、最も評価の高いロサンゼルスの中華レストランを表す1つのデータ行を含むと判定する。実装形態の例では、結果行決定モジュール306が第2のサブセット内のデータの行数を決定する。
【0053】
ステップ608で、結果にアクセスするためのクエリを発行したユーザに課金すべき価格が、第1のサブセットに含まれるデータの列数に基づくべきかどうかを判定する。レストランの例によれば、寄与データ内の各列が、中華レストランの各特性を表してもよい。例えば、当該特性として、営業時間、電話番号、住所、顧客評価、等を含めてもよい。ユーザに課金すべき価格が、結果が含む特性の数に依存してもよい。実装形態の例では、価格コンポーネント決定モジュール308が、結果にアクセスしたユーザに課金すべき価格を第1のサブセット内のデータの列数に基づくべきかどうかを判定する。価格が第1のサブセット内のデータの列数に基づくべき場合は、フローはステップ612に続く。そうでなければ、フローはステップ610に続く。
【0054】
ステップ610で、結果にアクセスするためのクエリを発行したユーザに課金すべき価格を、決定した第2のサブセット内のデータの行数と、第1のサブセットに含まれるデータの行数とに基づいて決定する。レストランの例によれば、価格は結果(即ち、本例における結果)に含まれる中華レストランの数と、寄与データに含まれる中華レストランの数とに基づく。実装形態の例では、アクセス価格決定モジュール318が価格を、決定した第2のサブセット内のデータの行数と第1のサブセットに含まれるデータの行数とに基づいて決定する。ステップ610が完了すると、流れ
図600は終了する。
【0055】
ステップ612で、結果にアクセスするためのクエリを発行したユーザに課金すべき価格を、決定した第2のサブセット内のデータの行数、第1のサブセットに含まれるデータの行数、および第1のサブセットに含まれるデータの列数に基づいて決定する。レストランの例によれば、価格は結果(即ち、本例における結果)に含まれる中華レストランの数と、寄与データに含まれる中華レストランの数と、寄与データに含まれる中華レストランの特性の数とに基づく。実装形態の例では、アクセス価格決定モジュール318が価格を、決定した第2のサブセット内のデータの行数、第1のサブセットに含まれるデータの行数、および第1のサブセットに含まれるデータの列数に基づいて決定する。ステップ612が完了すると、流れ
図600は終了する。
【0056】
幾つかの諸実施形態の例では、流れ
図600のステップ602、604、606、608、610、および/または612のうち1つまたは複数を実施しなくともよい。さらに、ステップ602、604、606、608、610、および/または612に対する追加または代替のステップを実施してもよい。
【0057】
データ・アクセス価格計算器700がクエリ実行モジュール302、インジケータ受領モジュール702、寄与行決定モジュール704、寄与列決定モジュール706、結果受領モジュール304、結果行決定モジュール306、価格コンポーネント決定モジュール308、および/またはアクセス価格決定モジュール318のうち1つまたは複数を備えなくともよいことは理解されよう。さらに、データ・アクセス価格計算器700がクエリ実行モジュール302、インジケータ受領モジュール702、寄与行決定モジュール704、寄与列決定モジュール706、結果受領モジュール304、結果行決定モジュール306、価格コンポーネント決定モジュール308、および/またはアクセス価格決定モジュール318に対して追加または代替のモジュールを備えてもよい。
【0058】
図6の流れ
図600に示した方法では、寄与データに含まれるデータの量を考慮している。当該寄与データは、結果を決定するためにクエリに関して記憶域により分析されるものである。本方法によれば、大量の寄与データが分析される結果へアクセスするユーザに、少量の寄与データが分析される結果にアクセスするユーザよりも多く課金してもよい。しかし、クエリに関して分析される寄与データの量と必ずしも関係しない当該クエリ内で参照される幾つかの関数に対して指定の価格を設定する価格設定モデルを使用することが望ましいかもしれない。例えば、関数ベースの価格設定により、寄与データが大量であるときに、寄与データの量を考慮に入れた割引を価格設定に関して提供してもよい。
【0059】
図8は、一実施形態に従ってクエリに関して実行される関数の関数価格を考慮した、データへのアクセスに価格設定するための方法の流れ
図800を示す。例示の目的のため、一実施形態に従って、流れ
図800を
図9のデータ・アクセス価格計算器900に関して説明する。データ・アクセス価格計算器900はデータ・アクセス価格計算器106の一例である。
図9に示すように、データ・アクセス価格計算器900はクエリ・プラン要求モジュール902、関数決定モジュール904、関数価格決定モジュール906、アクセス価格決定モジュール318、インジケータ決定モジュール908、および価格表示モジュール910を備える。別の構造的および動作にかかる諸実施形態は、流れ
図800に関する議論を基にすれば当業者には明らかであろう。流れ
図800を以下で説明する。
【0060】
図8に示すように、流れ
図800の方法はステップ802で開始する。ステップ802で、クエリに関する非インラインのクエリ・プランを記憶域から要求する。実装形態の例では、クエリ・プラン要求モジュール902が非インラインのクエリ・プランを要求する。クエリ・プランとは、記憶域によって実施され、記憶域に対するクエリの実行に応答して結果を生成する1組の動作である。非インラインのクエリ・プランとは、全ての関数がインライン化されるわけではないクエリ・プランである。関数とは、クエリ内で参照されるサブ・クエリである。その定義が記憶域によってクエリに取り込まれる(即ち、インライン化される)場合に関数はインライン化されるといい、クエリが記憶域に対して実行されるときに記憶域により呼び出される場合に関数は非インライン化されるという。このように、インライン化された関数は、当該関数の定義をクエリ・プランに取り込むことによってクエリ・プランに含まれ、非インライン化された関数はその関数に対する関数呼出しを列挙することによってクエリ・プランに含まれる。
【0061】
例示の目的のため、クエリが、「5マイル以内の関心点を取得」から全ての中華レストランを要求すると仮定する。「5マイル以内の関心点を取得」というフレーズは関数を表し、記憶域が、当該関数がインライン化または非インライン化されているとして扱ってもよい。記憶域が当該関数をインライン化されているとして扱う場合は、記憶域が当該クエリを修正して、中華レストランである関心点を選択し、ユーザのX座標をレストランのX座標から減じて各々のX距離を提供し、ユーザのY座標をレストランのY座標から減じて各々のY距離を提供し、当該X距離を二乗して各々の二乗X距離を提供し、当該Y距離を二乗して各々の二乗Y距離を提供し、各二乗X距離を対応する二乗Y距離に加算して、その和の平方根をとって各距離を提供し、5マイル未満の距離にある中華レストランを結果として提供してもよい。
【0062】
他方、記憶域が、当該関数が非インライン化されているとして扱う場合は、記憶域が関数呼出しを行って、ユーザの位置から5マイルの範囲内の全ての関心点を含む中間結果を取得してもよい。当該中間結果はデータの行および列を含むので、当該中間結果をテーブルとして記述してもよい。当該記憶域が当該クエリの他の態様を当該中間結果に対して実行してもよい。本例によれば、記憶域が、中間結果に含まれる関心点のうちどれが中華レストランであるかを判定してもよい。
【0063】
ステップ804で、クエリ・プランが、クエリに関して実行すべき関数を含むと決定する。例えば、クエリ・プランが当該関数に対する関数呼出しを含むと決定してもよい。実装形態の例では、関数決定モジュール904が、クエリ・プランがクエリに関して実行すべき関数を含むと決定する。
【0064】
ステップ806で、関数の関数価格を決定する。実装形態の例では、関数価格決定モジュール906が関数の関数価格を決定する。
【0065】
ステップ808で、クエリに対応する結果にアクセスするためのクエリを発行したユーザに課金すべき価格を、関数価格に基づいて決定する。実装形態の例では、アクセス価格決定モジュール318が、当該結果にアクセスしたユーザに課金すべき価格を関数価格に基づいて決定する。
【0066】
ステップ810で、結果にアクセスしたユーザに課金すべき価格を指定する価格インジケータをユーザに提供すべきかどうかを判定する。実装形態の例では、インジケータ決定モジュール908が、当該価格インジケータをユーザに提供すべきかどうかを判定する。価格インジケータをユーザに提供すべき場合は、フローはステップ812に続く。そうでなければ、流れ
図800は終了する。
【0067】
ステップ812で、結果にアクセスしたユーザに課金すべき価格を指定する価格インジケータをユーザに提供する。例えば、ユーザに対して、当該結果へのアクセスがユーザに与えられる前に当該価格を受け入れるオプションを与えてもよい。実装形態の例では、価格表示モジュール910が価格インジケータをユーザに提供する。ステップ812が完了すると、流れ
図800が終了する。
【0068】
記憶域が、インライン化された関数または非インライン化された関数を用いてクエリを処理してもよいことに留意されたい。非インライン化されたクエリ・プランは、記憶域がインライン化された関数を利用してクエリを処理する能力には影響を及ぼさない。実際、インライン化された関数を利用したクエリの処理は、非インライン化された関数を利用したクエリの処理よりも効率が良い。なぜならば、当該記憶域が、クエリに関して実施すべき動作の順序を選択できるからである。例えば、クエリがユーザの位置から5マイルの範囲内にある全ての中華レストランを要求する場合、ユーザの位置から5マイルの範囲内にある全ての関心点を決定した後にこれらの関心点のうちどれが中華レストランであるかを判定すればより迅速に結果を生成できると記憶域が判定してもよい。あるいは、全ての中華レストランを決定した後にこれらの中華レストランのうちどれがユーザの位置から5マイルの範囲内にあるかを判定すればより迅速に結果を生成できると記憶域が判定してもよい。インライン化された関数により、記憶域がかかる判定を行うことができる。
【0069】
幾つかの諸実施形態の例では、流れ
図800のステップ802、804、806、808、810、および/または812のうち1つまたは複数を実施しなくともよい。さらに、ステップ802、804、806、808、810、および/または812に対する追加または代替のステップを実施してもよい。
【0070】
データ・アクセス価格計算器900がクエリ・プラン要求モジュール902、関数決定モジュール904、関数価格決定モジュール906、アクセス価格決定モジュール318、インジケータ決定モジュール908、および/または価格表示モジュール910のうち1つまたは複数を備えなくともよいことは理解されよう。さらに、データ・アクセス価格計算器900がクエリ・プラン要求モジュール902、関数決定モジュール904、関数価格決定モジュール906、アクセス価格決定モジュール318、インジケータ決定モジュール908、および/または価格表示モジュール910に対して追加または代替のモジュールを備えてもよい。
【0071】
クエリ実行モジュール302、結果受領モジュール304、結果行決定モジュール306、価格コンポーネント決定モジュール308、結果列決定モジュール310、関係決定モジュール312、基本価格決定モジュール314、プレミアム価格決定モジュール316、アクセス価格決定モジュール318、第1の列価格決定モジュール502、第2の列価格決定モジュール504、インジケータ受領モジュール702、寄与行決定モジュール704、寄与列決定モジュール706、クエリ・プラン要求モジュール902、関数決定モジュール904、関数価格決定モジュール906、インジケータ決定モジュール908、および価格表示モジュール910をハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装してもよい。
【0072】
例えば、クエリ実行モジュール302、結果受領モジュール304、結果行決定モジュール306、価格コンポーネント決定モジュール308、結果列決定モジュール310、関係決定モジュール312、基本価格決定モジュール314、プレミアム価格決定モジュール316、アクセス価格決定モジュール318、第1の列価格決定モジュール502、第2の列価格決定モジュール504、インジケータ受領モジュール702、寄与行決定モジュール704、寄与列決定モジュール706、クエリ・プラン要求モジュール902、関数決定モジュール904、関数価格決定モジュール906、インジケータ決定モジュール908、および/または価格表示モジュール910を、1つまたは複数のプロセッサで実行されるように構成したコンピュータ・プログラム・コードとして実装してもよい。
【0073】
別の例では、クエリ実行モジュール302、結果受領モジュール304、結果行決定モジュール306、価格コンポーネント決定モジュール308、結果列決定モジュール310、関係決定モジュール312、基本価格決定モジュール314、プレミアム価格決定モジュール316、アクセス価格決定モジュール318、第1の列価格決定モジュール502、第2の列価格決定モジュール504、インジケータ受領モジュール702、寄与行決定モジュール704、寄与列決定モジュール706、クエリ・プラン要求モジュール902、関数決定モジュール904、関数価格決定モジュール906、インジケータ決定モジュール908、および/または価格表示モジュール910を、ハードウェア論理または電子回路として実装してもよい。
【0074】
図10は、諸実施形態を実装できるコンピュータの例1000を示す。
図1に示す、ユーザ・システム102A〜102M、データ・アクセス価格計算器106、または記憶域108のうち任意の1つまたは複数(または
図3、5、7、および9に示すそれらの任意の1つまたは複数のサブコンポーネント)を、コンピュータ1000の1つもしくは複数の機能および/または代替機能を含めて、コンピュータ1000を用いて実装してもよい。コンピュータ1000が、例えば従来型のパーソナル・コンピュータ、モバイル・コンピュータ、またはワークステーションの形の汎用目的のコンピューティング装置であってもよく、または、コンピュータ1000が特殊目的のコンピューティング装置であってもよい。本明細書で提供したコンピュータ1000の説明は例示の目的で提供したものであり、限定を意図したものではない。諸実施形態を別の種類のコンピュータ・システムで実装してもよく、これは当業者には明らかであろう。
【0075】
図10に示すように、コンピュータ1000は処理装置1002、システム・メモリ1004、システム・メモリ1004を含む様々なシステム・コンポーネントを処理装置1002に接続するバス1006を備える。バス1006は任意の数種のバス構造のうち1つまたは複数を表わす。当該バス構造には、メモリ・バスまたはメモリ・コントローラ、周辺バス、高速グラフィック・ポート、様々なバス構造のうち任意のものを利用したプロセッサまたはローカル・バスが含まれる。システム・メモリ1004には、ROM(read only memory)1008およびRAM(random access memory)1010が含まれる。BIOS(basic input/output system)1012がROM1008に格納される。
【0076】
コンピュータ1000はまた、1つまたは複数の以下のドライブ、即ち、ハードディスクを読書きするためのハードディスク・ドライブ1014、取外し可能磁気ディスク1018を読書きするための磁気ディスク・ドライブ1016、および、CD ROM、DVD ROM、または他の光媒体のような取外し可能光ディスク1022を読書きするための光ディスク・ドライブ1020を有する。ハードディスク・ドライブ1014、磁気ディスク・ドライブ1016、光ディスク・ドライブ1020は、それぞれ、ハードディスク・ドライブ・インタフェース1024、磁気ディスク・ドライブ・インタフェース1026、および光ドライブ・インタフェース1028によってバス1006に接続される。ドライブおよびその関連するコンピュータ可読記憶媒体により、コンピュータ可読命令、データ構造、プログラム・モジュールおよびコンピュータの他のデータの不揮発性記憶を提供する。ハードディスク、取外し可能磁気ディスクおよび取外し可能光ディスクを説明したが、フラッシュ・メモリ・カード、デジタル・ビデオ・ディスク、RAM(random access memory)、ROM(read only memory)、等のような他種のコンピュータ可読記憶媒体を使用してデータを記憶することができる。
【0077】
幾つかのプログラム・モジュールをハードディスク、磁気ディスク、光ディスク、ROM、またはRAMに格納してもよい。これらのプログラムは、オペレーティング・システム1030、1つまたは複数のアプリケーション・プログラム1032、他のプログラム・モジュール1034、およびプログラム・データ1036を備える。アプリケーション・プログラム1032またはプログラム・モジュール1034が、例えば、本明細書で説明した、クエリ実行モジュール302、結果受領モジュール304、結果行決定モジュール306、価格コンポーネント決定モジュール308、結果列決定モジュール310、関係決定モジュール312、基本価格決定モジュール314、プレミアム価格決定モジュール316、アクセス価格決定モジュール318、第1の列価格決定モジュール502、第2の列価格決定モジュール504、インジケータ受領モジュール702、寄与行決定モジュール704、寄与列決定モジュール706、クエリ・プラン要求モジュール902、関数決定モジュール904、関数価格決定モジュール906、インジケータ決定モジュール908、価格表示モジュール910、流れ
図200(流れ
図200の任意のステップを含む)、流れ
図400(流れ
図400の任意のステップを含む)、流れ
図600(流れ
図600の任意のステップを含む)、および/または流れ
図800(流れ
図800の任意のステップを含む)、を実装するためのコンピュータ・プログラム論理を備えてもよい。
【0078】
ユーザは、コマンドおよび情報を、キーボード1038およびポインティング・デバイス1040のような入力装置を介してコンピュータ1000に入力することができる。他の入力装置(図示せず)には、マイクロフォン、ジョイスティック、ゲーム・パッド、パラボラ・アンテナ、スキャナ、等を含めてもよい。これらおよび他の入力装置はしばしば、バス1006に接続されたシリアル・ポート・インタフェース1042を介して処理装置1002に接続されるが、パラレル・ポート、ゲーム・ポート、またはUSB(universal serial bus)のような他のインタフェースにより接続してもよい。
【0079】
ディスプレイ装置1044(例えば、モニタ)も、ビデオ・アダプタ1046のようなインタフェースを介してバス1006に接続される。ディスプレイ装置1044に加えて、コンピュータ1000がスピーカおよびプリンタのような他の周辺出力装置(図示せず)を備えてもよい。
【0080】
コンピュータ1000は、ネットワーク・インタフェースもしくはアダプタ1050、モデム1052、またはネットワーク上で通信を確立するための他の手段を介してネットワーク1048(例えば、インターネット)に接続される。モデム1052は、内部または外部にあることができ、シリアル・ポート・インタフェース1042を介してバス1006に接続される。
【0081】
本明細書で使用する際、「コンピュータ・プログラム媒体」および「コンピュータ可読媒体」という用語は、一般に、ハードディスク・ドライブ1014に関連付けられたハードディスク、取外し可能磁気ディスク1018、取外し可能光ディスク1022のような媒体、ならびにフラッシュ・メモリ・カード、デジタル・ビデオ・ディスク、RAM(random access memory)、ROM(read only memory)、等のような他の媒体を指す。
【0082】
上述したように、コンピュータ・プログラムおよびモジュール(アプリケーション・プログラム1032および他のプログラム・モジュール1034を含む)をハードディスク、磁気ディスク、光ディスク、ROM、またはRAMに格納してもよい。かかるコンピュータ・プログラムを、ネットワーク・インタフェース1050またはシリアル・ポート・インタフェース1042を介して受け取ってもよい。かかるコンピュータ・プログラムがアプリケーションによって実行またはロードされると、コンピュータ1000は本明細書で論じた諸実施形態の諸機能を実装することができる。したがって、かかるコンピュータ・プログラムはコンピュータ1000の制御装置を表す。
【0083】
諸実施形態の例はまた、コンピュータ使用可能媒体に格納したソフトウェア(例えば、コンピュータ可読命令)を含むコンピュータ・プログラム製品に関する。かかるソフトウェアが1つまたは複数のデータ処理装置で実行されると、データ処理装置(複数可)は本明細書で説明したように動作する。諸実施形態では、現在公知であるかまたは将来公知となる任意のコンピュータ使用可能媒体またはコンピュータ可読媒体を採用してもよい。コンピュータ可読媒体の例には、RAM、ハード・ドライブ、フロッピー・ディスク、CD ROM、DVD ROM、ジップ・ディスク、テープ、磁気記憶装置、光記憶装置、MEMSベースの記憶装置、ナノテクノロジ・ベースの記憶装置、等のような記憶装置が含まれるがこれらに限らない。
【0084】
III.結論
以上で様々な実施形態を説明したが、これらは例として提示したにすぎず限定ではないことは理解されよう。本発明の精神および範囲を逸脱することなく様々な変更を形態および詳細の点で加えることができることは当業者には明らかであろう。したがって、本発明の外延と範囲は上述した諸実施形態の例の何れによっても限定されず、添付の特許請求の範囲とその均等物によってのみ制限されるべきである。