使用贡献分析对数据的访问进行定价背景技术
数据消费系统将提供商的数据主存在联网环境中以使该数据可被该系统
的用户访问。系统包括存储该数据的存储。存储是能够存储数据的存储系统(例
如,数据库)。用户可经由例如网络来向存储提交查询。存储可解析该查询以
确定要分析哪些数据来生成对用户查询的响应。所分析的数据可被称为贡献数
据。在根据用户的查询分析了贡献数据后,存储生成结果,该结果包括贡献数
据的子集。存储然后经由例如网络向用户提供结果。
可向用户收取访问存储在该存储中的数据的费用。然而,用于收取这种费
用的常规定价模型具有其限制。一种常规定价模型是订阅定价模型。根据订阅
定价模型,向用户收取订阅费用,这向用户授权在指定时间段(例如,一月、
一年等)内访问数据。通过支付附加的期限订阅费通常可以在连续期限内续订
订阅。然而,订阅定价模型一般不在访问大量数据的用户和访问较少量数据的
用户之间进行区分。例如,在订阅定价模型下用户通常被授权不受限制地访问
数据。
另一种常规定价模型是按请求的定价模型。根据按请求的定价模型,针对
用户向存储提交的每一请求向用户收取指定费用。然而,按请求的定价模型一
般不在用户可提交的查询的各种类型或者响应于这些查询而被访问的数据类
型之间进行区分。
发明内容
在此描述了用于使用贡献分析来定价对数据的访问等的各种方法。例如,
用户可向存储数据的存储发出查询。可以以任何合适的格式来表示数据。例如,
可将数据表示为具有属性的对象。根据这个示例,对象可以是可扩展标记语言
(XML)文档中的元素、关系数据库中的行、列存储中的列等。存储可分析数
据的子集以确定响应于查询而要提供给用户的结果。所分析的数据的子集被称
为贡献数据。
数据访问价格计算器执行贡献分析以确定要向访问结果的用户收取的价
格。贡献分析考虑该数据包括在贡献数据中的行和/或列的数目、该数据包括在
结果中的行和/或列的数目、在对贡献数据的存储分析期间所使用的函数或其任
何组合。例如,数据访问价格计算器可以从接收自存储的指示符导出这种信息。
在另一个示例中,数据访问价格计算器可以从结果本身导出该数据包括在结果
中的行和/或列的数目。
描述了对将数据存储在各表间的存储执行查询的一个示例方法。每一个表
包括该数据的相应行和列。基于该查询接收结果。结果包括数据的子集。确定
该数据在子集中的行的数目。基于所确定的该数据在子集中的行的数目来确定
向发出查询以访问结果的用户收取的价格。
描述了从存储处请求与查询有关的非内联查询计划的另一个示例方法。查
询计划是响应于对存储的查询的执行而由该存储执行来生成结果的一组操作。
非内联查询计划是其中不是所有函数都是内联的查询计划。函数是查询中所引
用的子查询。如果一函数的定义被存储结合(即,内联)到查询中,则该函数
被称为是内联的;然而,如果一函数在对存储执行查询时被该存储调用,则该
函数被称为是非内联的。由此,为内联的函数是通过将该函数的定义结合到查
询计划中而被包括在查询计划中的;而为非内联的函数是通过列出对该函数的
函数调用而被包括在查询计划中的。在请求了非内联的查询计划之后,确定该
查询计划包括针对查询而被执行的函数。确定该函数的函数价格。要向发出查
询以访问对应于该查询的结果的用户收取的价格是基于该函数价格来确定的。
描述了包括查询执行模块、结果行确定模块、和访问价格确定模块的示例
系统。查询执行模块被配置来对将数据存储在各表间的存储执行查询。每一个
表包括该数据的相应行和列。结果行确定模块被配置来确定该数据在响应于查
询的执行而被接收的结果中的行的数目。结果包括数据的子集。访问价格确定
模块被配置成基于所确定的数据在结果中的行的数目来确定要向发出查询以
访问结果的用户收取的价格。
描述了包括查询计划请求模块、函数确定模块、函数价格确定模块和访问
价格确定模块的另一示例系统。查询计划请求模块被配置成请求与来自存储的
查询有关的非内联查询计划。函数确定模块被配置成确定查询计划包括针对查
询而被执行的函数。函数价格确定模块被配置成确定函数的函数价格。访问价
格确定模块被配置成基于函数价格来确定要向发出查询以访问对应于该查询
的结果的用户收取的价格。
提供本发明内容以便以简化形式介绍将在以下的具体实施方式中进一步
描述的一些概念。本概述并不旨在标识所要求保护主题的关键特征或必要特
征,也不旨在用于限制所要求保护主题的范围。此外,注意到本发明不限于在
详细描述和/或本文的其它章节中所述的特定实施例。本文呈现这些实施例仅用
于说明性的用途。基于本文所包含的描述,其它实施例对于相关领域的技术人
员将是显而易见的。
附图说明
本文结合的并且组成本说明书的一部分的附图示出了本发明的各实施例,
并且还与本描述一起用于解释所涉及的原理以及使相关领域的技术人员能够
实现和使用所公开的技术。
图1是根据一实施例的示例数据消费系统的框图。
图2、4、6和8描绘了根据各实施例的用于使用贡献分析来定价对数据的
访问的各方法的流程图。
图3、5、7和9是根据各实施例的图1所示的数据访问价格计算器的示例
实现的框图。
图10描绘了其中可实现各实施例的示例计算机。
通过下面的结合附图对本发明进行的详细说明,所公开的技术的特点和优
点将变得更加显而易见,在附图中,类似的附图标记在整个说明书中标识对应
的元素。在附图中,相同的参考标号一般指相同的、功能上相似的和/或结构上
相似的元素。其中元素第一次出现的附图由对应的参考标号中最左侧的数字指
示。
具体实施方式
I.引言
以下详细描述参考示出本发明的示例性实施例的附图。但是,本发明的范
围不限于这些实施例,而是由所附权利要求书定义。因此,诸如所示实施例的
修改版本之类的在附图所示之外的实施例仍然由本发明所包含。
本说明书中对“一个实施例”、“实施例”、“示例实施例”等的引用指的是所
述实施例可包括特定的特征、结构或特点,但是每一实施例不一定包括该特定
的特征、结构或特点。此外,这些短语不一定指相同的实施例。此外,当结合
实施例描述具体特征、结构或特性时,应当理解在相关领域的技术人员的知识
范围内能够结合其他实施例来实现具体特征、结构或特性,无论是否被显式地
描述。
II.使用贡献分析来定价对数据的访问
各示例实施例能够使用贡献分析来定价对数据的访问。例如,用户可向存
储数据的存储发出查询。可以以任何合适的格式来表示数据。例如,可将数据
表示为具有属性的对象。根据这个示例,对象可以是可扩展标记语言(XML)
文档中的元素、关系数据库中的行、列存储中的列等。存储可分析数据的子集
以确定响应于查询而要提供给用户的结果。所分析的数据的子集可称为贡献数
据。数据访问价格计算器执行贡献分析以确定要向访问该结果的用户收取的价
格。贡献分析考虑了数据包括在贡献数据中的行和/或列的数目、数据包括在结
果中的行和/或列的数目、在对贡献数据的存储分析期间使用的函数或其任何组
合。例如,数据访问价格计算器可以从接收自存储的指示符导出这种信息。在
另一示例中,数据访问价格计算器可以从结果本身导出数据包括在该结果中的
行和/或列的数目。
在此描述的用于使用贡献分析来定价对数据访问的技术可应用于已存储
的过程,但是各示例实施例的范围并不限于这个方面。已存储的过程(又称为,
proc、sproc、StoPRO、SP等)是预编译查询,该预编译查询能够被执行多次,
而不需要每次都向存储发送该查询,并且不需要每次都重新编译该查询。例如,
使用已存储的过程(与其他类型的查询相反)可减少数据消费系统中的网络流
量和/或处理器负担。已存储的过程是查询的一种示例类型。应该意识到,在此
描述了可应用于任何合适类型的查询的技术。
与用于定价对数据的访问的传统技术比较,此处描述的技术具有各种益
处。例如,可以使用在此描述的技术按较细粒度的级别(例如,以每一行、每
一列或每一单元格为基础)销售数据。单元格对应于数据的单个行和单个列。
在定价中可考虑结果中的列的数目和/或行的数目和/或数据类型。访问相对较
大量数据的用户可被收取比访问相对较少量数据的用户更多的费用。例如,可
以向提交了要对其分析大量贡献数据的查询的用户收取比提交了要对其分析
较少量贡献数据的查询的用户更多的费用。可基于查询的类型、响应于查询而
被分析的数据的类型等定价。可建立指定函数的价格,这些指定函数定义可在
分析贡献数据期间执行的操作。指定函数的价格可以独立于针对这些函数而被
分析的贡献数据的量。
图1是根据一实施例的示例数据消费系统100的框图。一般而言,数据消
费系统100用于主存提供商的数据使得该数据可被系统的用户访问。根据示例
实施例,数据消费系统100用于使用贡献分析来确定要向用户收取的访问数据
的价格。以下讨论中提供了与用于使用贡献分析来定价对数据的访问的技术有
关的其他细节。
如图1所示,数据消费系统100包括多个用户系统102A-102M、网络104、
数据访问价格计算器106和存储108。用户系统102A-102M与数据访问价格计
算器106之间的通信是使用公知的网络通信协议通过网络104实施的。网络104
可以是广域网(如因特网)、局域网(LAN)、另一类型的网络、或它们的组
合。数据访问价格计算器106和存储108之间的通信是使用公知的查询语言来
实施的,公知的查询语言为诸如结构化查询语言(SQL)、Java持久查询语言
(JPQL)等。
用户系统102A-102M是处理系统,这些处理系统能够向数据访问价格计
算器106提供用于请求存储在存储108上(或者能以其他方式被存储108访问)
的数据的查询。处理系统的示例是包括至少一个能够根据指令集操纵数据的处
理器的系统。例如,处理系统可以是计算机、个人数字助理等。例如,用户可
以使用部署在用户所拥有的或者能以其他方式被用户访问的用户系统102上的
客户机(例如,Web浏览器、Web爬行器或其他类型的客户机)来启动对数据
的查询。
尽管图1中用户系统102A-102M被描绘为台式计算机,但是相关领域的
技术人员将理解用户系统102A-102M可包括任何启用客户机的系统或设备,包
括但不限于膝上型计算机、个人数字助理、蜂窝电话等等。
数据访问价格计算器106是一种处理系统,该处理系统能够确定向发出查
询以访问存储在存储108上(或者能以其他方式被存储108访问)的数据的用
户收取的价格。在接收到用户的查询后,数据访问价格计算器106执行对存储
108的查询。数据访问价格计算器106从存储108接收为基于该查询的结果。
数据访问价格计算器106还可从存储108接收贡献分析指示符。贡献分析指示
符包括便于贡献分析被数据访问价格计算器106执行的信息。例如,贡献分析
指示符可指定数据包括在与用户查询有关的贡献数据中的行和/或列的数目、数
据包括在结果中的行和/或列的数目、在贡献数据的分析期间使用的函数等。数
据访问价格计算器106分析结果和/或贡献分析指示符以确定要向访问结果的
用户收取的价格。数据访问价格计算器106可将结果从发起查询的地方转发至
用户系统102。
存储108是将数据存储在各表间的存储设备或系统。每一个表包括数据的
相应行和列。存储108可包括处理功能,但是各示例实施例的范围不限于这个
方面。例如,存储108可确定基于由数据访问价格计算器106执行的查询来确
定要分析存储在存储108上(或能以其他方式被存储108访问)的哪些数据。
根据这个示例,存储108可分析该数据以确定基于查询的结果。被分析的数据
被称为贡献数据。存储108可生成贡献分析指示符,但是各示例实施例的范围
不限于这个方面。贡献分析指示符指定数据包括在贡献数据中的行和/或列的数
目、该数据包括在结果中的行和/或列的数目、在贡献数据的分析期间使用的函
数或其任何组合。存储108向数据分析价格计算器106提供结果和贡献分析指
示符(如果可用的话),以供针对贡献分析而进一步进行处理。
图2描绘了根据一实施例的用于使用贡献分析来定价对数据的访问的方法
的流程图200。流程图200可以由例如图1所示的数据消费系统100的数据访
问价格计算器106来执行。为了说明的目的,根据一实施例,针对图3所示的
数据访问价格计算器300描述了流程图200,该数据访问价格计算器300是数
据访问价格计算器106的示例。如图3所示,数据访问价格计算器300包括查
询执行模块302、结果接收模块304、结果行确定模块306、价格成分确定模块
308、结果列确定模块310、关联确定模块312、基础价格确定模块314、额外
费用价格确定模块316和访问价格确定模块318。基于有关流程图200的讨论,
其他结构及操作的实施例对于相关领域的技术人员将是显而易见的。描述流程
图200如下。
如图2所示,流程图200的方法在步骤202处开始。在步骤202,对将数
据存储在各表间的存储执行查询。每一个表包括数据的相应行和列。由存储所
存储的数据可涉及各种主题。例如,第一表可包括与指定区域内待售的房屋有
关的数据,第二表可包括与指定的电影流派有关的数据,第三表可包括与菜谱
有关的数据,并以此类推。出于说明的目的,将针对请求位于洛杉矶的所有杂
货店的列表的示例查询来讨论流程图200中的各步骤。在以下讨论中这个示例
将被称为“杂货店示例”。在杂货店示例中执行的查询只是一个示例查询,并
且应意识到,可以对存储执行任何合适的查询。在一示例实施例中,查询执行
模块302执行查询。
在步骤204,接收基于查询的结果。结果包括数据的子集。根据杂货店示
例,结果可包括所请求的位于洛杉矶的所有杂货店的列表。应意识到,这个结
果中的杂货店的列表是存储所存储的数据的子集。例如,存储可存储其他数据,
诸如与待售房屋有关的数据、与电影有关的数据、与菜谱有关的数据等。在一
示例实现中,结果接收模块304接收结果。
在步骤206,确定数据在子集中的行的数目。根据该杂货店示例,每一个
行可表示在结果内所包括的杂货店的列表中的相应杂货店。在一示例实现中,
结果行确定模块306确定数据在子集中的行的数目。
在步骤208,确定向发出查询以访问结果的用户收取的价格是否要基于该
数据在该子集中的列的数目。根据杂货店示例,每一列可表示各杂货店的相应
属性。例如,属性可包括操作小时、电话号码、地址、消费者评级等。向用户
收取的价格可取决于结果所包括的属性的数目。在一示例实现中,价格成分确
定模块308确定要向访问结果的用户收取的价格是否要基于该数据在子集中的
列的数目。如果价格要基于该数据在子集中的列的数目,则流程继续至步骤
212。否则,流程继续至步骤210。
在步骤210,向发出查询以访问结果的用户收取的价格是基于所确定的该
数据在子集中的行的数目确定的。根据杂货店示例,价格基于包括在结果内的
杂货店列表中的杂货店的数目。在一示例实现中,访问价格确定模块318基于
所确定的该数据在子集中的行的数目来确定价格。在步骤210完成后,流程图
200结束。
在步骤212,确定数据在子集中的列的数目。根据杂货店示例,确定包括
在结果中的杂货店的属性的数目。在一示例实现中,结果列确定模块310确定
数据在子集中的列的数目。
在步骤214,确定额外费用价格是否与该数据在子集中的列中的至少一个
相关联。根据杂货店示例,出于说明的目的,假设可以对包括在结果中的各杂
货店的消费者评级来收取额外费用价格。在一示例实现中,关联确定模块312
确定额外费用价格是否与该数据在子集中的各列中的至少一个相关联。如果格
外费用价格与该数据在子集中的各列中的至少一个相关联,则流程继续至步骤
218。否则,操作继续至步骤216。
在步骤216,基于所确定的该数据在子集中的行的数目以及所确定的该数
据在子集中的列的数目来确定向访问结果的用户收取的价格。根据杂货店示
例,价格基于包括杂货店的数目以及结果中所包括的杂货店的属性的数目。在
一示例实现中,访问价格确定模块318基于所确定的该数据在子集中的行的数
目以及所确定的该数据在子集中的列的数目来确定价格。在步骤216完成后,
流程图200结束。
在步骤218,确定该数据在子集中的列的数目。例如,基础价格可以是与
该数据在子集中的列的数目无关的固定价格。或者,基础价格可以与该数据在
子集中的列的数目成比例。根据杂货店示例,为结果中所包括的杂货店的属性
的数目确定基础价格。在一示例实现中,基础价格确定模块314确定基础价格。
在步骤220,确定额外费用价格。在一示例实现中,额外费用价格确定模
块316确定额外费用价格。
在步骤222,基于所确定的该数据在子集中的行的数目、所确定的该数据
在子集中的列的数目、基础价格以及与数据在子集中的列中的至少一个相关联
的额外费用价格来确定向访问结果的用户收取的价格。根据杂货店示例,价格
基于包括在结果中的杂货店的数目、包括在结果中的杂货店的属性的数目、基
础价格以及额外费用价格。在一示例实现中,访问价格确定模块318基于所
确定的该数据在子集中的行的数目、所确定的该数据在子集中的列的数目、基
础价格以及额外费用价格来确定价格。在步骤222完成后,流程图200结束。
根据示例实施例,包括在存储的一些表中的行可以与比包括在该存储的其
他表中的行更高的价格相关联。例如,第一表中的行可以与第一价格相关联;
第二表中的行可以与第二价格相关联,并以此类推。可以在确定向用户收取的
价格时考虑各行间的价格中的这些区别。
在一些示例实施例中,可不执行流程图200的一个或多个步骤202、204、
206、208、210、212、214、216、218、220和/或222。而且,可执行除步骤
202、204、206、208、210、212、214、216、218、220和/或222之外的或代
替这些步骤的步骤。
将意识到,数据访问价格计算器300可以不包括查询执行模块302、结果
接收模块304、结果行确定模块306、价格成分确定模块308、结果列确定模块
310、关联确定模块312、基础价格确定模块314、额外费用价格确定模块316
和/或访问价格确定模块318中的一个或多个。此外,数据访问价格计算器300
可以包括除查询执行模块302、结果接收模块304、结果行确定模块306、价格
成分确定模块308、结果列确定模块310、关联确定模块312、基础价格确定模
块314、额外费用价格确定模块316和/或访问价格确定模块318之外的或代替
这些模块的模块。
根据一示例实施例,可以用图4的流程图400中示出的步骤来替换流程图
200中的步骤208、210、212、214、216、218、220和/或222。根据一实施例,
针对图5所示的数据访问价格计算器500描述了流程图400,该数据访问价格
计算器400是数据访问价格计算器106的示例。如图5所示,数据访问价格计
算器500包括第一列价格确定模块502、第二列价格确定模块504和访问价格
确定模块318。基于有关流程图400的讨论,其他结构及操作的实施例对于相
关领域的技术人员将是显而易见的。描述流程图400如下。如图4所示,流程
图400的方法在步骤402处开始。在步骤402,确定该数据在子集中的第一列
的第一价格。在一示例实现中,第一列价格确定模块502确定第一列的第一价
格。
在步骤404,确定该数据在子集中的第二列的第二价格。第二价格大于第
一价格。如以上在参考图2的杂货店示例中讨论的,消费者对杂货店的评级的
价格可以被定价得比杂货店的电话号码要高。因此,数据的第一列的第一价格
可以与杂货店的电话号码的价格相对应,数据的第二列的第二价格可以与消费
者对杂货店的评级的价格相对应。在一示例实现中,第二列价格确定模块504
确定第二列的第二价格。
在步骤406,基于所确定的该数据在子集中的行的数目、第一价格以及第
二价格来确定向访问结果的用户收取的价格。根据杂货店示例,该价格基于结
果内的杂货店列表中所包括的杂货店的数目、杂货店的电话号码的价格以及消
费者对杂货店的评级的价格。在一示例实现中,访问价格确定模块308基于所
确定的该数据在子集中的行的数目、第一价格和第二价格来确定向用户收取的
价格。
在相应的图2和图4的流程图200和400中示出的方法考虑了包括在基于
查询的结果中的数据的量。根据这些方法,可以对访问包括大量数据的结果向
用户收取比访问包括较少量数据的结果更多的费用。然而,与一些查询有关的
结果包括相对少量的(例如一行)数据,但是对这些查询的执行可能已涉及分
析大量的贡献数据。在这种实例中,使用考虑贡献数据的量来确定向访问结果
的用户收取的价格的定价模型可以是合乎需要的。
图6描绘了根据一实施例的用于定价对数据的访问的方法的流程图600,
该方法考虑了针对查询而被分析的贡献数据的量。出于说明的目的,根据一实
施例,针对图7所示的数据访问价格计算器700描述了流程图600,数据访问
价格计算器700是数据访问价格计算器106的示例。如图7所示,数据访问价
格计算器700包括查询执行模块302、指示符接收模块702、贡献行确定模块
704、贡献列确定模块706、结果接收模块304、结果行确定模块306、价格成
分确定模块308和访问价格确定模块318。基于有关流程图600的讨论,其他
结构及操作的实施例对于相关领域的技术人员将是显而易见的。描述流程图
600如下。
如图6所示,流程图600的方法在步骤202处开始。在步骤202,对将数
据存储在各表间的存储执行查询。每一个表包括该数据的相应行和列。出于说
明的目的,将针对请求洛杉矶得到最高评级的中国餐厅的示例查询来讨论流程
图600的各步骤。在以下讨论中这个示例将被称为“餐厅示例”。在餐厅示例
中执行的查询只是一个示例查询,并且应意识到,可以对存储执行任何合适的
查询。在一示例实施例中,查询执行模块302执行查询。
在步骤302,接收指示符,该指示符指定了该数据包括在针对查询的执行
而被分析的第一数据子集中的行的数目。根据该餐厅示例,第一数据子集可包
括洛杉矶所有中国餐厅的列表。例如,数据的包括在该数据的第一数据子集中
的每一行可以表示相应的中国餐厅。洛杉矶所有中国餐厅的列表在这个示例中
可以被称为贡献数据。在一示例实现中,指示符接收模块702接收指示符。
根据一示例实施例,贡献行确定模块704基于该指示符来确定该数据包括
在第一子集中的行的数目。根据另一示例实施例,指示符还指定数据包括在该
数据的第一数据子集中的列的数目。根据这个实施例,贡献列确定模块706可
以基于该指示符来确定该数据包括在第一子集中的列的数目。
根据另一示例实施例,指示符包括从存储处接收的查询计划。查询计划是
响应于对存储的查询的执行而由存储执行来生成结果的一组操作。例如,查询
计划可以指定针对查询的执行而被存储分析的第一表中的行的第一数目、第二
表中的行的第二数目等。根据这个实施例,该数据包括在第一子集中的行的数
目是第一数目、第二数目等的和。
在步骤604,接收基于查询的结果。该结果包括第二数据子集。第一子集
比第二子集包括更多存储中所存储的数据。例如,第二数据子集可以是第一数
据子集的子集。根据餐厅示例,结果包括洛杉矶得到最高评级的中国餐厅。应
当意识到,洛杉矶得到最高评级的中国餐厅是贡献数据(即,在这个示例中为
洛杉矶所有中国餐厅的列表)的子集。在一示例实现中,结果接收模块304接
收结果。
在步骤606,确定该数据在第二子集中的行的数目。根据餐厅示例,确定
结果包括数据中表示洛杉矶得到最高评级的餐厅的单个行。在一示例实现中,
结果行确定模块306确定该数据在第二子集中的行的数目。
在步骤608,确定向发出查询以访问结果的用户收取的价格是否基于该数
据包括在第一子集中的列的数目。根据餐厅示例,贡献数据中的每一列可表示
中国餐厅的相应属性。例如,属性可包括操作小时、电话号码、地址、消费者
评级等。向用户收取的价格可取决于结果所包括的属性的数目。在一示例实现
中,价格成分确定模块308确定向访问结果的用户收取的价格是否基于数据包
括在第一子集中的列的数目。如果价格基于数据包括在第一子集中的列的数
目,则流程继续至步骤612。否则,流程继续至步骤610。
在步骤610,基于所确定的该数据在第二子集中的行的数目以及该数据包
括在第一子集中的行的数目来确定向发出查询以访问结果的用户收取的价格。
根据餐厅示例,该价格基于结果中所包括的中国餐厅的数目(即,在本示例中
为一个)以及在贡献数据中所包括的中国餐厅的数目。在一示例实现中,访问
价格确定模块318基于所确定的数据在第二子集中的行的数目以及数据在第一
子集中的行的数目来确定该价格。在步骤610完成后,流程图600结束。
在步骤612,基于所确定的该数据在第二子集中的行的数目、该数据包括
在第一子集中的行的数目以及该数据包括在第一子集中的列的数目来确定向
发出查询以访问结果的用户收取的价格。根据餐厅示例,该价格基于结果中所
包括的中国餐厅的数目(即,在本示例中为一个)、在贡献数据中所包括的中
国餐厅的数目以及在贡献数据中所包括的中国餐厅的属性的数目。在一示例实
现中,访问价格确定模块318基于所确定的该数据在第二子集中的行的数目、
该数据包括在第一子集中的行的数目以及该数据包括在第一子集中的列的数
目来确定价格。在步骤612完成后,流程图600结束。
在某些实施例中,可不执行流程图600的一个或多个步骤602、604、606、
608、610和/或612。而且,可执行除步骤602、604、606、608、610和/或612
之外或代替这些步骤的步骤。
应意识到,数据访问价格计算器700可以不包括查询执行模块302、指示
符接收模块702、贡献行确定模块704、贡献列确定模块706、结果接收模块
304、结果行确定模块306、价格成分确定模块308和/或访问价格确定模块318
中的一个或多个。此外,数据访问价格计算器700可以包括查询执行模块302、
指示符接收模块702、贡献行确定模块704、贡献列确定模块706、结果接收模
块304、结果行确定模块306、价格成分确定模块308和/或访问价格确定模块
318之外或代替这些模块的模块。
图6的流程图600中示出的方法考虑了包括在贡献数据中的数据的量,该
贡献数据是由存储出于确定结果的目的而针对查询分析的。根据这个方法,可
以对访问为其分析了大量贡献数据的结果向用户收取比访问为其分析了较少
量贡献数据的结果更多的费用。然而,使用定价模型可以是合乎需要的,该定
价模型为查询中引用的一些函数设置指定价格,该指定价格并不必须涉及为这
些查询所分析的贡献数据的量。例如,基于函数的定价可以提供与贡献数据的
量很大时考虑了贡献数据的量的定价有关的折扣。
图8描绘了根据一实施例的用于定价对数据的访问的方法的流程图800,
该方法考虑了针对查询而被执行的函数的函数价格。出于说明的目的,根据一
实施例,针对图9所示的数据访问价格计算器900描述了流程图800,数据访
问价格计算器900是数据访问价格计算器106的示例。如图9所示,数据访问
价格计算器900包括查询计划请求模块902、函数确定模块904、函数价格确
定模块906、访问价格确定模块318、指示符确定模块908和价格指示模块910。
基于有关流程图800的讨论,其他结构及操作的实施例对于相关领域的技术人
员将是显而易见的。描述流程图800如下。
如图8所示,流程图800的方法在步骤802处开始。在步骤802,请求来
自存储的与查询有关的非内联查询计划。在示例实现中,查询计划请求模块902
请求非内联查询计划。查询计划是响应于对存储的查询的执行而由存储执行来
生成结果的一组操作。非内联查询计划是其中不是所有函数都是内联的查询计
划。功能是查询中所引用的子查询。如果一函数的定义被存储结合(即,内联)
到查询中,则该函数被称为是内联的;然而,如果一函数在对存储执行查询时
被该存储调用,则该函数被称为是非内联的。由此,为内联的函数是通过将该
函数的定义结合到查询计划中而被包括在查询计划中的;而为非内联的函数是
通过列出对该函数的函数调用而被包括在查询计划中的。
出于说明的目的,假设查询通过“获得五英里内的兴趣点”来请求所有中
国餐厅。短语“获得五英里内的兴趣点”表示一函数,存储可以将该函数看成
是内联的或非内联的。如果存储将该函数看成是内联的,则存储可以:修改查
询以选择是中国餐厅的兴趣点,从各餐厅的X坐标中减去用户的X坐标以提供
相应的X距离,从各餐厅的Y坐标中减去用户的Y坐标以提供相应的Y距离,
对各X距离求平方以提供相应的X距离的平方,对各Y距离求平方以提供相
应的Y距离的平方,将每一X距离的平方与相应的Y距离的平方相加并获取
该和的平方根以提供相应的距离,以及将具有小于五英里的距离的中国餐厅作
为结果来提供。
另一方面,如果存储将该函数看作是非内联的,则存储可调用该函数来获
得临时结果,该临时结果包括在用户位置的五英里之内的所有兴趣点。可以将
临时结果描述成表格,因为表格包括数据的行和列。存储可以对临时结果运行
查询的其他方面。根据这个示例,存储可以确定临时结果中所包括的兴趣点中
的哪些是中国餐厅。
在步骤804,确定查询计划包括针对查询而被执行的函数。例如,确定查
询计划包括对该函数的函数调用。在示例实现中,函数确定模块904确定查询
计划包括针对查询而被执行的函数。
在步骤806,确定函数的函数价格。在示例实现中,函数价格确定模块906
确定函数的函数价格。
在步骤808,基于该函数价格来确定要向发出查询以访问对应于该查询的
结果的用户收取的价格。在示例实现中,访问价格确定模块318基于该函数价
格确定要向访问结果的用户收取的价格。
在步骤810,确定是否要将指定了要向访问结果的用户收取的价格的价格
指示符提供给用户。在示例实现中,指示符确定模块908确定是否要将价格指
示符提供给用户。如果要将价格指示符提供给用户,则流程继续至步骤812。
否则,流程800结束。
在步骤812,将指定了要向访问结果的用户收取的价格的价格指示符提供
给用户。例如,在向用户提供对结果的访问之前,可以给予用户接受该价格的
选项。在示例实现中,价格指示模块910将价格指示符提供给用户。在步骤812
完成后,流程图800结束。
应当注意,存储可以使用为内联的函数或为非内联的函数来处理查询。提
供非内联的查询计划并不影响存储使用为内联的函数来处理查询的能力。事实
上,使用为内联的函数来处理查询可以比使用为非内联的函数来处理查询更高
效,因为可以允许存储选择针对查询而被执行的操作的次序。例如,如果查询
请求在用户位置五英里之内的所有中国餐厅,则存储可以确定在如下情况下可
以更快速地生成结果:先确定在用户位置五英里之内的所有兴趣点,然后确定
这些兴趣点中的哪些是中国餐厅。或者,存储可以确定在如下情况下可以更快
速地生成结果:先确定所有的中国餐厅,然后确定这些中国餐厅中的哪些在用
户位置的五英里之内。为内联的函数给予存储作出这种确定的能力。
在某些示例实施例中,可以不执行流程图800的一个或多个步骤802、804、
806、808、810和/或812。此外,可以执行除步骤802、804、806、808、810
和/或812以外的或代替这些步骤的步骤。
应当意识到,数据访问价格计算器900可以不包括查询计划请求模块902、
函数确定模块904、函数价格确定模块906、访问价格确定模块318、指示符确
定模块908和/或价格指示模块910中的一个或多个。此外,数据访问价格计算
器900可以包括除查询计划请求模块902、函数确定模块904、函数价格确定
模块906、访问价格确定模块318、指示符确定模块908和/或价格指示模块910
之外或代替这些模块的模块。
可以以硬件、软件、固件或其任何组合来实现查询执行模块302、结果接
收模块304、结果行确定模块306、价格成分确定模块308、结果列确定模块
310、关联确定模块312、基础价格确定模块314、额外费用价格确定模块316、
访问价格确定模块318、第一列价格确定模块502、第二列价格确定模块504、
指示符接收模块702、贡献行确定模块704、贡献列确定模块706、查询计划请
求模块902、函数确定模块904、函数价格确定模块906、指示符确定模块908
和价格指示模块910。
可以将查询执行模块302、结果接收模块304、结果行确定模块306、价格
成分确定模块308、结果列确定模块310、关联确定模块312、基础价格确定模
块314、额外费用价格确定模块316、访问价格确定模块318、第一列价格确定
模块502、第二列价格确定模块504、指示符接收模块702、贡献行确定模块
704、贡献列确定模块706、查询计划请求模块902、函数确定模块904、函数
价格确定模块906、指示符确定模块908和/或价格指示模块910实现成被配置
为在一个或多个处理器中执行的计算机程序代码。
在另一示例中,可以将查询执行模块302、结果接收模块304、结果行确
定模块306、价格成分确定模块308、结果列确定模块310、关联确定模块312、
基础价格确定模块314、额外费用价格确定模块316、访问价格确定模块318、
第一列价格确定模块502、第二列价格确定模块504、指示符接收模块702、贡
献行确定模块704、贡献列确定模块706、查询计划请求模块902、函数确定模
块904、函数价格确定模块906、指示符确定模块908和/或价格指示模块910
实现成硬件逻辑/电子电路。
图10描绘其中可实现各实施例的示例计算机1000。可以使用计算机1000
(包括计算机1000的一个或多个特征和/或替换特征)来实现图1所示的用户
系统102A-102M、数据访问价格计算器106或存储108中的任何一个或多个。
计算机1000可以是例如常规个人计算机、移动计算机或工作站形式的通用计
算设备,或者计算机1000可以是专用计算设备。此处所提供的对计算机1000
的描述只是为了说明,并不是限制性的。实施例也可以在相关领域的技术人员
所知的其它类型的计算机系统中实现。
如图10所示,计算机1000包括处理单元1002、系统存储器1004和总线
1006,总线1006将包括系统存储器1004在内的各种系统组件耦合到处理单元
1002。总线1006表示若干类型的总线结构中的任何一种总线结构的一个或多
个,包括存储器总线或存储器控制器、外围总线、加速图形端口,以及使用各
种总线体系结构中的任何一种的处理器或局部总线。系统存储器1004包括只
读存储器(ROM)1008和随机存取存储器(RAM)1010。基本输入/输出系统1012
(BIOS)储存在ROM 1008中。
计算机1000还具有一个或多个以下驱动器:用于读写硬盘的硬盘驱动器
1014、用于读或写可移动磁盘1016的磁盘驱动器1018、以及用于读或写诸如
CD ROM、DVD ROM或其他光介质之类的可移动光盘1020的光盘驱动器
1022。硬盘驱动器1014、磁盘驱动器1016,以及光驱动器1020分别通过硬盘
驱动器接口1006、磁盘驱动器接口1024,以及光学驱动器接口1026连接到总
线1028。驱动器以及它们相关联的计算机可读存储介质为计算机提供了对计算
机可读指令、数据结构、程序模块,及其他数据的非易失存储器。虽然描述了
硬盘、可移动磁盘和可移动光盘,但是,也可以使用诸如闪存卡、数字视频盘、
随机存取存储器(RAM)、只读存储器(ROM)等等之类的其他类型的计算
机可读存储介质来储存数据。
数个程序模块可被储存在硬盘、磁盘、光盘、ROM或RAM上。这些程序
包括操作系统1030、一个或多个应用程序1032、其他程序模块1034以及程序
数据1036。应用程序1032或程序模块1034可以包括例如用于实现如此所描述
的如下内容的计算机程序逻辑:查询执行模块302、结果接收模块304、结果
行确定模块306、价格成分确定模块308、结果列确定模块310、关联确定模块
312、基础价格确定模块314、额外费用价格确定模块316、访问价格确定模块
318、第一列价格确定模块502、第二列价格确定模块504、指示符接收模块702、
贡献行确定模块704、贡献列确定模块706、查询计划请求模块902、函数确定
模块904、函数价格确定模块906、指示符确定模块908、价格指示模块910、
流程图200(包括流程图200的任何步骤)、流程图400(包括流程图400的
任何步骤)、流程图600(包括流程图600的任何步骤)和/或流程图800(包
括流程图800的任何步骤)。
用户可以通过诸如键盘1038和定点设备1040之类的输入设备向计算机
1000中输入命令和信息。其他输入设备(未示出)可包括话筒、操纵杆、游戏
手柄、圆盘式卫星天线、扫描仪等。这些及其他输入设备常常通过耦合到总线
1002的串行端口接口1042连接到处理单元1006,但是,也可以通过其他接口,
诸如并行端口、游戏端口、通用串行总线(USB)端口,来进行连接。
显示设备1044(例如监视器)也通过诸如视频适配器1046之类的接口连
接到总线1006。除了显示设备1044之外,计算机1000还可包括其他外围输出
设备(未示出),如扬声器和打印机。
计算机1000通过网络接口或适配器1050、调制解调器1052、或用于通过
网络建立通信的其他装置连接到网络1048(例如,因特网)。调制解调器1052
(可以是内置的或外置的)通过串行端口接口1042连接到总线1006。
如此处所用的,术语“计算机程序介质”以及“计算机可读介质”用于泛指介
质,诸如与硬盘驱动器1014相关联的硬盘、可移动磁盘1018、可移动光盘1022,
以及其他介质,诸如闪存卡、数字视频盘、随机读取存储器(RAM)、只读存
储器(ROM)等。
如上文所指示的,计算机程序和模块(包括应用程序1032及其他程序模
块1034)可被储存在硬盘、磁盘、光盘、ROM或RAM上。这样的计算机程
序也可以通过网络接口1050或串行端口接口1042来接收。这些计算机程序在
由应用程序执行或加载时使得计算机1000能够实现此处所讨论的实施例的特
征。相应地,这样的计算机程序表示计算机1000的控制器。
示例实施例还涉及包括存储在任何计算机可用介质上的软件(例如计算机
可读指令)的计算机程序产品。这样的软件,当在一个或多个数据处理设备中
执行时,使数据处理设备如此处所描述的那样操作。实施例可使用现在已知或
将来知晓的任何计算机可使用或计算机可读介质。计算机可读介质的例子包括
但不限于存储设备,诸如RAM、硬盘、软盘、CD ROM、DVD ROM、Zip盘、
磁带、磁存储设备、光存储设备、基于MEMS的存储设备、基于纳米技术的存
储设备,等等。
III.结语
虽然以上描述了不同的实施例,但应当理解的是它们只是作为示例而非限
制。对于相关领域的技术人员显而易见的是,可以对其做出各种改变而不背离
本发明的精神和范围。因此,本发明的宽度和范围不应被上述所公开的示例性
实施例所限制,而应当仅根据所附权利要求书及其等同替换来定义。