CN101432732B - 高效数据库查找操作 - Google Patents

高效数据库查找操作 Download PDF

Info

Publication number
CN101432732B
CN101432732B CN2007800150007A CN200780015000A CN101432732B CN 101432732 B CN101432732 B CN 101432732B CN 2007800150007 A CN2007800150007 A CN 2007800150007A CN 200780015000 A CN200780015000 A CN 200780015000A CN 101432732 B CN101432732 B CN 101432732B
Authority
CN
China
Prior art keywords
data
container
issue
scene
request
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.)
Expired - Fee Related
Application number
CN2007800150007A
Other languages
English (en)
Other versions
CN101432732A (zh
Inventor
S·D·考克斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=38649505&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=CN101432732(B) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN101432732A publication Critical patent/CN101432732A/zh
Application granted granted Critical
Publication of CN101432732B publication Critical patent/CN101432732B/zh
Expired - Fee Related 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
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24539Query rewriting; Transformation using cached or materialised query results
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/04Real-time or near real-time messaging, e.g. instant messaging [IM]

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Human Resources & Organizations (AREA)
  • Strategic Management (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Tourism & Hospitality (AREA)
  • Quality & Reliability (AREA)
  • Operations Research (AREA)
  • General Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Economics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computational Linguistics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

提供用于高效数据库查找操作的系统、装置、方法和计算机可读介质。按照该方法,将用于生成对数据库查询的响应的过程性检查转换成数据库操作的集合。在第一次收到对数据库的查询时执行这些数据库操作以生成查询的可能结果集合。随后存储查询的可能结果集合。根据可能结果集合生成对查询的具体答案。通过根据存储的可能结果集合生成对查询的回答来响应将来的数据库查询。

Description

高效数据库查找操作
背景
计算机程序越来越频繁地提供接收和显示有关另一计算机用户的在场信息的能力。在场信息通常是指描述用户的可用性以及他们的通信意愿的数据。例如,即时消息收发(“IM”)客户应用程序一般提供察看在“伙伴列表”中标识的个人的在线/离线状态以及他们的通信意愿诸如“可用”、“忙”或“离开”的能力。个人信息管理器(“PIM”)程序同样可显示电子邮件发送者或者在联系人列表或地址簿中标识的其他用户的在线/离线状态。另外,也可提供其它类型的在场信息。例如,在场信息可包括电话号码、会议信息、笔记或者其它与用户的可用性有关的消息。
在场信息的发布者通常可向不同的在场发布分派许可。许可的分派可基于如请求该发布的用户(“请求者”)的具体身份、请求者是否为该在场信息发布者的“伙伴”、请求者所属的域等等因素。用户也可以指定,当请求者匹配一具体身份时提供一种版本的在场发布,而在请求者是具体域的成员时提供同一发布的另一版本。在场发布及其相关联的许可通常由在场服务器存储在数据库中。在场服务器可集成到IM服务器计算机中或者集成到配置为与PIM一起运行的服务器计算机中。
当在在场服务器处收到对特定在场发布的请求时,必需以过程性方式执行多个数据库查找以响应该请求。这通常是必需的,因为请求者可能匹配若干许可。在该情形中,必须遵循一过程以确定应当提供发布的哪个版本给用户。作为一个示例,可将对一个在场发布的许可授予一列用户,而将对同一发布的另一版本的许可授予指定域中的用户。如果该请求者在该列表中被标识并且请求者还是指定域的成员,则就变得有必要对数据库评估多个过程性规则,以便确定应当提供在场信息的哪个版本。这些操作在计算上可能变得很昂贵,特别是在每秒钟必须为对在场信息的成百上千的请求进行评估的在场服务器的背景中。
下面关于这些和其他考虑描述了用于执行高效数据库查找的计算系统的诸方面等。
概述
提供一种用于高效数据库查找操作的系统、装置、方法和计算机可读介质。按照本文提供的方法的一个方面,将用于生成对数据库查询的响应的过程性检查转换成一组数据库操作。数据库操作是在第一次收到对数据库的查询时执行的,以生成该查询的可能结果集合。随后存储该查询的可能结果集合。随后根据该可能结果集合生成对该查询的具体回答。另外,通过根据所存储的可能结果集合生成对查询的回答来响应将来的数据库查询。如此,程序性检查不必在每次收到数据库查询时执行。
可接收对在场发布请求的形式的数据库查询。在此情形中,该查询的可能结果集合是包含一或多行的表。表中的每一行包括用于存储标识所请求的在场发布的发布者的数据的发布者数据字段和用于存储标识在场发布的请求者的数据的数据字段。表的每一行还包括用于存储标识可据其满足请求的容器的数据的容器数据字段和用于存储等级值的等级数据字段。容器是一种数据结构,它包括用于存储标识被授权接收在容器的发布字段中标识的在场发布的一或多个请求者的数据的成员资格数据字段。
可能结果集合可通过为所请求的发布的发布者所维护、在其成员资格数据字段中标识该请求者的每一个容器在表中创建新行来生成。对于每一个新行,在发布者数据字段中存储标识发布者的数据,在请求者数据字段中存储标识请求者的数据,在容器字段中存储标识容器的数据,以及在等级数据字段中存储基于成员资格数据字段标识请求者的方式的值。例如,与较不具体的标识相比,可为较具体的标识存储较大的值。
为了计算对查询的具体回答,在表上执行数据库“select(选择)”操作以标识候选行集合。随后在候选行集合与候选行中所标识的容器的发布数据字段之间执行数据库“join(联接)”操作以标识具体回答。随后响应于数据库查询提供该具体回答。
上述主题也可被实现为计算机控制的装置、计算机进程、计算系统或者诸如计算机程序产品或计算机可读介质的制品。计算机程序产品可以是计算机系统可读并且编码用于执行计算机进程的指令的计算机程序的计算机存储介质。计算机程序产品还可以是计算系统可读的并且编码用于执行计算机进程的指令的计算机程序的载波上的传播信号。通过阅读下面的详细描述并审阅相关联的附图,这些和各种其它特征将是显然的。
提供本概述以便用简化的形式介绍在下面的详细描述中进一步描述的一些概念。本概述不旨在标识要求保护主题的关键特征或基本特征,也不旨在用于限制要求保护主题的范围。
附图简述
图1是例示说明性操作环境的诸方面的网络图;
图2是适于实现诸如参考图1和3-7讨论的计算机系统的计算机体系结构图;
图3是例示容器数据结构的诸方面的数据结构图;
图4是例示高速缓存的容器成员表的诸方面的数据结构图;
图5是示出用于处理对在场发布的请求的说明性例程的流程图;
图6A-6C是示出用于更新参考图4讨论的高速缓存的容器成员表的内容的说明性例程的流程图;以及
图7是示出用于根据参考图4讨论的高速缓存的容器成员表满足对高速缓存的在场数据的请求的说明性例程的流程图。
详细描述
下面的详细描述针对的是用于高效数据库查找操作的系统、方法和计算机可读介质。尽管本文描述的主题是在结合计算机系统上操作系统的执行而执行的程序模块的一般上下文中提供的,但本领域的技术人员将认识到,可结合其它程序模块完成其它实现。
一般而言,程序模块包括例程、程序、组件、数据结构和其它类型的结构,它们执行特定的任务或者实现特定的抽象数据类型。而且,本领域的技术人员将了解到,本文描述的主题可用其它计算机系统配置实践,包括手持设备、多处理器系统、基于微处理器或可编程消费者电子产品、小型计算机、大型计算机等等。本文描述的主题还被描述为在分布式计算环境中实践,在其中任务由通过通信网络链接的远程处理设备执行,并且在其中程序模块可位于本地或远程存储器存储设备两者中。然而应当了解,本文描述的实现还可结合单独的计算机系统和其它类型的计算设备来使用。
在下面的详细描述中,对形成其一部分的附图进行参考,并且它们是作为说明来示出特定的实施例或示例的。现在参考附图(在其中相同的标号表示若干附图中相同的元素),将描述用于执行高效数据库查找操作的计算机系统的诸方面。具体地,图1示出用于本文描述的主题的说明性操作环境的各方面。
图1所示的说明性操作环境100包括计算机102A。计算机102A包括可连接至网络104诸如因特网的通用台式或膝上型计算机。计算机102A还可执行操作系统和客户应用程序,计算机102A的用户可通过它们发布在场信息。在场信息一般是指描述计算机102A的用户的可用性及其通信意愿的数据。例如,IM客户应用程序可在与IM服务器106通信的计算机102A上执行。除其它特征以外,IM客户应用程序为计算机102A的用户提供将在场信息发布至IM服务器106的能力。计算机102A的用户在本文中被称为在场信息的“发布者(publisher)”。
IM服务器106是用于在执行在计算机102A-102H中的二个或多个计算机上的IM客户应用程序之间启用即时消息收发通信的服务器计算机。IM服务器106也可在IM客户应用程序之间启用其它类型的交互,诸如语音或视频聊天。为启用这些特征,IM服务器106维护IM数据库108。IM数据库108用于存储IM服务器106的每一注册用户的用户概况。用户概况可包括诸如用户的身份、电子邮件地址、联系人首选项、兴趣以及其它信息的数据。按照诸实施例,每一用户概况还包括在场发布和对这些在场发布的许可。在场发布是在场信息的具体实例。
计算机102B-102H还可包括用于执行IM客户应用程序的通用台式或膝上型计算机。通过IM客户应用程序,可向IM服务器106作出对由计算机102A的用户发布的在场信息的请求。因此,计算机102B-102H的用户在本文中被称为“请求者(requestor)”。在计算机102B-102H上执行的IM客户应用程序用于从IM服务器106接收在场信息并显示该信息。例如,计算机102A的用户的在线/离线状态可连同其通信意愿诸如“可用”、“忙”或“离开”一起显示。另外,也可提供其它类型的在场信息。例如,在场信息可包括电话号码、会议信息、笔记或者其它与用户可用性有关的消息。应当了解,许多其它类型的应用程序也可用于向服务器计算机请求在场信息,诸如PIM应用程序。
在计算机102A上执行的IM客户应用程序允许用户将许可分派给不同的在场发布。许可的分派可基于象请求者的具体身份、请求者是否为在场信息发布者的“伙伴”、请求者所属的域等等因素。发布者也可指定,当请求者匹配一种具体身份时提供一种版本的在场发布,而当请求者是具体域的成员时则提供同一发布的另一版本。如上所述,在场发布及其相关联的许可通常由IM服务器106或者其它类型的在场服务器存储在数据库108中。
如图1所示,计算机102D-102E是公共云域的成员。公共云域是关联于公共消息收发系统的域。例如,域“msn.com”可被视为一个公共云域,因为MICROSOFT MESSENGER IM(微软信使IM)客户应用程序的用户常常使用该域。在图1中还示出,计算机102F-102H是联合域的成员。联合域是与计算机102A用户所属域相关联的域。例如,两个公司可具有紧密的业务关系,使得它们的域被认为是联合的。如下面将更详细地描述的,对在场信息的许可的分派也可基于请求者是否为公共域或者联合域的成员来作出。
如在下面将更详细地描述的,IM服务器106用于接收和响应请求者对发布者的在场发布的请求。这些请求一般以对数据库108的查询的形式到达。为了确定应将哪一在场发布提供给特定的请求者,IM服务器106用于执行一系列操作,这些操作在下面参考图3-7更完整地描述。
现在参考图2,提供有关计算机102A-102H和106的结构和操作的其它细节。具体地,图2示出计算机200的说明性计算机体系结构。该计算机体系结构可用于具体化上面参考图1例示和讨论的计算机系统。例如,图2所示的计算机体系结构可用于实现本文讨论的计算机102A-102H、IM服务器106和任何其它计算机系统。应当了解,尽管图2所示的计算机体系结构体现为标准的膝上型、台式或服务器计算机,但可使用其它类型的计算机体系结构和计算设备。具体地,本文描述的主题可以与常规的台式或“个人”计算机、膝上型计算机、手持或便携式计算设备、服务器计算机、无线手机如蜂窝或PCS电话、个人数字助理、定制硬件设备以及基本上任何其它类型的计算设备一起使用。
图2所示的计算机体系结构包括中央处理单元202(“CPU”)、系统存储器204(包括随机存取存储器206(“RAM”)和只读存储器(“ROM”)208)以及将存储器耦合至CPU202的系统总线210。基本输入/输出系统包含诸如在启动时在计算机内的元件之间传送信息的基本例程,它存储在ROM208中。计算机200还包括大容量存储设备212,用于存储操作系统214、应用程序和其它程序模块,下面将更详细地描述它们。
大容量存储设备212通过连接至总线210的大容量控制器216连接到CPU202。大容量存储设备212及其相关联的计算机可读介质为计算设备200提供非易失性存储。尽管本文包含的计算机可读介质的描述指的是大容量存储设备诸如硬盘或CD-ROM驱动器,但本领域技术人员应当了解,计算机可读介质可以是可由计算机200访问的任何可用介质。
作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括易失性与非易失性、可移动与不可移动介质,它们以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据的信息的任何方法或技术实现。计算机存储介质包括但不限于,RAM、ROM、EPROM、闪存或其它固态存储器技术,CD-ROM、数字多功能盘(“DVD”)、HD-DVD、BLU-RAY或者其它光存储,磁带盒、磁带、磁盘存储或者其它磁存储设备,或者任何其它可用于存储所需信息并且可由计算机200访问的介质。
按照本文描述主题的各种实施例,计算机200可通过网络110诸如因特网在使用至远程计算机的逻辑连接的网络化环境中运行。计算机200可通过连接至总线210的网络接口单元218连接到网络110。应当了解,网络接口单元218也可用于连接到其它类型的网络和远程计算机系统。计算机200也可包括输入/输出控制器224,用于接收和处理来自多个其它设备(包括键盘、鼠标或电子指示笔(未在图2中示出))的输入。同样,输入/输出控制器224可提供输出至显示屏、打印机或者其它类型的输出设备(也未在图2中示出)。
如上简述,多个程序模块和数据文件可存储在计算机200的大容量存储设备212和RAM206中,包括适于控制网络化个人或服务器计算机的操作的操作系统214,诸如华盛顿州雷德蒙市的微软公司的WINDOWS XP操作系统。也可使用其它操作系统,诸如LINUX操作系统、来自苹果计算机的OSX操作系统等等。
大容量存储设备212和RAM206也可存储一或多个程序模块。具体地,大容量存储设备212和RAM206可存储IM客户应用程序226。如上简述,IM客户应用程序226包括用于与IM服务器计算机106通信并且潜在地直接与其它IM客户应用程序通信的应用程序。IM客户应用程序226提供允许IM服务器计算机106的注册用户通过文本、音频或视频消息收发彼此通信的功能和用户界面。
按照一个实现,IM客户应用程序226也可用于允许用户定义和向IM服务器计算机106的其它用户发布在场信息。IM客户应用程序226也可允许用户定义如本文所述的在场发布的许可。IM客户应用程序226可包括来自微软公司的MSN MESSENGER(MSN信使)即时消息收发客户应用程序或者来自其它制造商的另一IM客户应用程序。应当了解,尽管用于定义在场发布和许可的功能性本文中描述为由IM客户应用程序226执行,但其它类型的应用程序可提供相似的功能。例如,PIM应用程序可用于定义供PIM应用程序的其它用户使用的在场发布和许可。其它类型的程序也可按相似的方式使用。
如图2所示,大容量存储设备212还可存储IM服务器应用程序228、数据库服务器应用程序230和IM概况数据库108。IM服务器应用程序228由IM服务器106执行,并且提供在IM客户应用程序之间启用即时消息收发通信的功能。如本文所述,IM服务器应用228也可用于接收和响应对在场信息的请求。为了以适当的方式评估这样的请求和响应,IM服务器应用程序228使用数据库服务器应用程序230的服务。数据库服务器应用程序230包括用于创建、维护和查询数据库诸如IM概况数据库108的服务器应用程序。按照实施例,数据库服务器应用程序230包括来自微软公司的SQL SERVER。然而,应当了解的是,可使用来自其它厂商的数据库服务器应用程序。还应当理解,在本文中描述为由IM服务器106执行的用于接收和响应对在场信息的请求的这些功能可由专门配置为接收和响应这样的在场信息的服务器(“在场服务器”)或其它类型的服务器计算机来执行。
现在参考图3,将描述用于存储在场发布及其相关联的许可的说明性数据结构。具体地,图3示出由IM服务器106维护且存储在IM概况数据库108中的若干容器数据结构300A-300D。每一容器300A-300D包括成员资格数据字段302,用于存储标识被授权接收存储在该容器中的在场发布的一或多个请求者的数据。被授权的请求者可在成员资格数据字段302中由具体的订阅者统一资源标识符(“URI”)的列表(诸如在容器300A和300C中)、发布者的全部联系人、与发布者处于同一域中的用户(诸如在容器300B中)、会话启动协议(“SIP”)域的列表、联合域中的用户或者公共云域中的用户来指定。应当了解,第一和第四项是列表,而“全部联系人”、相同域用户、联合用户和公共云用户可作为对其成员资格有作用的容器的布尔属性来指定。例如,如果容器的成员资格是要包括与发布者相同的域中的全部订阅者,则容器用于相同域用户的属性被设置为真。应当了解,容器300A-300D的内容是由与容器相关联的发布者来定义的。容器连同发布者的概况一起存储在IM概况数据库108中。
如图3所示,容器300A-300D每一个还分别包括发布数据字段304A-304D。发布数据字段304用于存储与该容器相关联的在场发布。用容器存储的在场发布是在成员资格数据字段302中标识的请求者被授权接收的在场发布。例如,容器300A包括发布“{状态}=‘忙’”和“[电话}=办公室:555-1212’,‘家庭:555-1234’”。在成员资格数据字段302A中具体标识的请求者被授权接收这些发布。
如图3还示出,容器300A-300D是以顺序编号的。容器编号用于在请求者是一个以上的容器的成员时确定应当用于满足对在场发布的请求的容器。具体地,当请求者请求在多个容器中发布的发布时,必须作出有关应当使用哪个容器来满足请求的判断。一般情况,仅需考虑包含所请求的在场发布的那些容器。如果仅有一个容器令订阅者作为成员,则没有多义性,并且使用该容器来响应请求。然而,当多个容器在其成员资格中具有该订阅者,则根据具有最高容器编号的容器来满足请求。这是应用基于其容器编号的的容器次序的情况。较高编号的容器在它们包含重叠的成员资格时与较低编号的容器相比优先。应当了解,容器300D是默认的容器,它包含给予没有落入较高编号容器中的任何人的默认发布。因此,容器300D不包含成员资格数据字段302。
应当了解,请求者可用不同方式包括在一个以上的容器的成员资格中。例如,一个容器可在其URI列表中指定joe@aol.com,而另一个容器指定公共云用户。在该情形中,认为joe@aol.com是两个容器的成员。同样,一个容器可指定全部联系人,它随后包含friend2@ms.com,而另一个容器指定相同域用户。如果发布者是ms.com域的成员,则friend2@ms.com是两个容器的成员。在这些情形中,使用哪个容器来满足订阅的问题是通过基于所分配的许可的特殊性给予优先级来回答的。例如,优先级可首先给予URI列表,然后给予全部联系人,然后给予相同域用户,然后给予域列表,然后给予联合域,而最后给予公共云用户。
根据上面所述,应当了解,通常必须执行一系列过程性检查以便确定应当根据哪个容器来满足对在场发布的请求。总之,选择既包含所请求的在场发布又在成员资格数据字段中包含请求者的最高编号容器。如果找到匹配的容器,则该过程停止。如果否,则作出请求者是否为具体联系人组的成员的判断。如果是,则选择既包含所请求的发布又包含匹配该组的联系人组成员资格的最高编号容器。如果找到匹配的容器,则过程可停止。如果请求者在发布者的联系人列表上,则选择具有所请求的发布并且其全部联系人布尔属性已被置位的最高编号容器。如果找到匹配的容器,则过程停止。否则,作出有关请求者是否处于与发布者相同的域中的判断。如果是,则选择包含所请求的发布并且其相同域布尔属性已被置位的最高编号容器。如果找到匹配的容器,则过程停止。否则,选择包含所请求的发布并且包含其中含有请求者的域的域成员资格列表的最高编号容器。如果没有找到这样的容器,并且请求者是联合域的成员,则使用包含所请求的发布并且其联合用户布尔属性已被置位的最高编号容器。如果没有找到这样的容器,并且请求者是公共云域的成员,则使用包含所请求的发布并且其公共云用户布尔属性已被置位的最高编号容器。如果没有找到任何容器,并且默认容器300D包含所请求的属性,则使用默认的容器。否则,阻塞该请求并且请求者将收到所请求的在场发布的空数据值。
应当了解,每当在IM服务器106收到对在场发布的请求时就执行上述过程性检查在计算上是极端昂贵的。因此,为了更有效地处理这些请求,本文描述的实施例首先将过程性检查转换成数据库操作。执行这些操作以生成查询的可能结果集合并且存储该可能结果集合供将来使用。当收到后续的查询时,使用该可能结果集合来计算对查询的具体回答而不再次执行程序性检查。有关该进程的细节在下面参考图4-7提供。
现在转到图4,将描述用于存储查询的可能结果集合的数据结构。具体地,图4示出由IM服务器106为以高效方式响应对在场发布的数据库查询而创建和使用的高速缓存的容器成员表400。表400包括用于存储标识所请求的在场发布的的发布者的数据的发布者数据字段402A、用于存储标识在场发布的请求者的数据的请求者数据字段402C、用于存储标识可据其满足请求的容器300的数据的容器数据字段402B以及用于存储等级值的等级数据字段402D。等级值是基于成员资格数据字段标识请求者的方式来确定的。例如,与较不具体的身份标识相比,较具体的身份标识具有较高的等级。按照实施例,具体标识的请求者被给予等级255,相同域用户被给予等级180,指定域用户被给予等级160,联合域用户被给予等级140,公共云用户被给予等级120,而默认容器被给予等级10。可使用其它等级值。应当了解,表400的说明性内容是基于其中请求者是friend2@ms.com而发布者是me@ms.com的容器300A-300D的。
按照实施例,表400可包括用于存储第二等级值的数据字段402E。第二等级值指定请求者的域和发布者的域之间的域匹配的字符数。该字段可用于在请求者是具体域的两个容器的成员的情形下进一步消除容器的多义性。在该情形下,使用域匹配较长的容器。用于填充和使用表400的说明性进程将在下面参考图5-7描述。
现在转到图5,将描述说明性例程500,它示出用于处理对在场发布的请求的IM服务器106的操作。应当了解,本文描述的逻辑操作被实现为(1)计算机实现的动作或者在计算机系统上运行的程序模块的序列和/或(2)计算系统内互连的机器逻辑电路或电路模块。实现是取决于计算系统的性能要求的一种选择。因此,本文描述的逻辑操作在不同地方不同地称为操作、结构设备、动作或模块。这些操作、结构设备、动作和模块可用软件、固件、专用数字逻辑和任何组合来实现。
例程500在处理操作502处开始,在其中服务器106接收对在场发布的请求。响应于该请求,服务器106确定在表400内是否存在用于该请求者和所请求的在场发布的发布者的行。这是通过检查存储在表400的字段402A和402C中的值来完成的。如果在表400内不存在行,则例程500分支到操作508。在操作508处,为该发布者生成并存储表400的内容。用于更新表400的内容的说明性例程在下面参考图6描述。从操作508,例程500继续至操作510。
在操作506处,如果确定在表400中存在用于请求者和发布者的行,则例程500从操作506继续至操作510。在操作510处,以高效方式使用表400中存储的对查询的可能响应集合来计算对查询的具体响应。用于使用表400的存储内容来计算响应和满足对在场发布的请求的说明性例程在下面详细地参考图7描述。一旦该操作已经完成,例程500就继续至操作512,在这里结束。在场发布的其它数据库查询以相似的方式处理。
现在转到图6A-6C,将描述用于生成和更新表400的内容的说明性例程600。应当了解,可执行该例程以便在最初为发布者生成表400的内容并且如果发布者修改其现有的发布和许可数据则更新表400的内容。还应当了解,参考图6A-6C描述的数据库操作包括上述过程性检查。这些过程性检查的结果以允许后续的数据库查询用高效的方式来执行的方式存储在表400中。
例程600在操作602处开始,在其中搜索关联于发布者的容器以查找其中的请求者是具体标识的成员的容器。如果找到任何这样的容器,则例程600分支到操作606,在这里为其中的请求者是具体标识的成员的每一个容器向表400插入行。对于新的行,发布者字段402A的值设置为发布者的身份,请求者数据字段402C的值设置为请求者,以及容器数据字段402B的值设置为所标识容器的容器编号。新行中的等级字段402D的值设置为255。否则,例如600从操作604继续到操作608。
在操作608,作出发布者和请求者是否处于同一域中的判断。如果是,则例程600从操作608继续至操作610。在操作610处,进行搜索以查找给予与请求者相同的域中的用户许可的容器。如果找到这样的容器,则例程600从操作612继续至操作614,对给予与请求者相同域中的用户访问权利的每一个容器在其中向表400插入行并且填充。新添加行中的等级字段402D的值设置为180。从操作614,例程600继续至操作616。
在操作616处,对与向指定域中的用户给予许可的发布者相关联的容器进行搜索。如果找到这样的容器,则例程600从操作618分支到操作620。在操作620处,作出请求者是否为指定域的成员的判断。如果是,则例程600从操作620继续至操作622,在其中对指定了请求者的域的每一个发布者的容器向表400中插入行并填充。新添加行中的等级字段402D的值设置为160。从操作622,例程600继续至操作624。
在操作624处,搜索发布者的容器以查找给予联合域中用户成员资格许可的容器。如果找到这样的容器,则例程600从操作626分支到操作628。在操作628处,作出请求者是否为指定的联合域的成员的判断。如果是,则例程600从操作628继续至操作630,在其中对请求者是指定的联合域的成员的每一个容器向表400中插入新行并且填充。新添加行中的等级字段402D的值设置为140。从操作630,例程600继续至操作632。
在操作632处,搜索发布者的容器以查找给予公共云域中用户成员资格许可的容器。如果找到这样的容器,则例程600从操作634分支到操作636。在操作636处,作出请求者是否为指定的公共云域的成员的判断。如果是,则例程600从操作636继续至操作638,在其中对请求者是指定的公共云域的成员的每一个容器向表400中插入新行并且填充。新添加行中的等级字段402D的值设置为120。从操作638,例程600继续至操作640。
在操作640,对默认容器向表400添加新行并且填充。新添加行中的等级字段402D的值设置为10。从操作640,例程600返回至上面参考图5讨论的操作510。
现在参考图7,将描述用于根据高速缓存的容器成员表400满足对高速缓存的在场数据的请求的说明性例程700。例程700开始于操作702,在其中从表400选择一或多个候选行。候选行是在请求者数据字段402C中标识了请求者并且在发布者数据字段402A中标识了发布者的行。候选行可以通过在表400上执行数据库“select(选择)”操作来标识。从操作702,例程700继续至操作704。
在操作704处,基于等级数据字段402D的内容以降序排列候选行。如果使用第二等级数据字段402E,则候选行基于第二等级数据字段402E的内容以降序行来排列。随后基于包含在容器数据字段402B中的值以降序排列这些经排序的候选行。如此,首先按等级然后按容器编号以降序排列候选行。应当了解,该功能性可通过使用数据库“order(排序)”操作来完成。从操作704,例程700继续至操作706。
在操作706处,标识应当用于满足请求的特定容器。具体地,通过将候选行集合与发布者容器的发布数据字段304联接来标识候选行中的一个具体的行。这导致选择在等级数据字段402D中具有最高等级并且引用包含所请求的发布的容器的候选行。使用由所选行的容器数据字段402B所标识的容器来满足请求。应当了解,在操作706处执行的功能可使用数据库“join(联接)”操作来完成。从操作706,例程700继续至操作708,在那里它返回至上面参考图5讨论的操作512。
基于上述内容,应当了解,本文提供用于高效数据库查找操作的系统、方法和计算机可读介质。尽管已经用专用于计算机结构特征、方法性动作和计算机可读介质的语言描述了本文提供的主题,但应当理解,所附权利要求书中定义的本发明不必限于本文描述的特定特征、动作或介质。相反,特定的特征、动作和介质是作为实现权利要求书的示例形式而公开的。上述主题仅作为说明而提供,并且不应当作为限制来解释。可在不遵循例示和描述的示例实施例和应用程序且不脱离在所附权利要求书中阐述的本发明的真正精神和范围的情况下,对本文描述的主题作出各种修改或改变。

Claims (19)

1.一种用于响应对数据库(108)的查询的方法,所述方法包括:
接收对所述数据库(108)的查询,其中对所述数据库的查询形成对在场发布的请求,其中所述在场发布是在场信息的具体实例,所述在场信息是描述用户的可用性及其通信意愿的数据;
响应于收到所述查询,将一或多个过程性检查转换成一或多个数据库操作,以及执行所述操作以生成所述查询的可能结果集合,其中所述一或多个过程性检查包括确定多个容器中的哪个容器满足对在场发布的请求,其中所述容器包括发布数据字段以及成员资格数据字段,所述发布数据字段用于存储与该容器相关联的在场发布,其中所述成员资格数据字段存储标识被授权接收存储在所述容器中的在场发布的一个或多个请求者的数据;
存储所述查询的所述可能结果集合;
根据所存储的可能结果集合计算对所述查询的具体回答;
用所述具体回答响应所述数据库查询(108);以及
通过根据所存储的可能结果集合计算对所述查询的回答来满足将来的数据库查询。
2.如权利要求1所述的方法,其特征在于,所述查询包括对在场发布的请求,其中,所述可能结果集合包括包含一或多个行的表(400),每一行具有用于存储标识所请求的在场发布的发布者的数据的发布者数据字段(402A)、用于存储标识所述在场发布的请求者的数据的请求者数据字段(402C)、用于存储标识可据其满足所述请求的容器(300)的数据的容器数据字段(402B)以及用于存储等级的等级数据字段(402D)。
3.如权利要求2所述的方法,其特征在于,所述发布数据字段(304)进一步用于存储所述成员资格数据字段(302)中标识的所述成员被授权接收的一或多个在场发布。
4.如权利要求3所述的方法,其特征在于,计算对所述查询的具体回答包括对所述表(400)执行选择操作以从所述表(400)标识候选行集合以及在所述候选行集合与在所述候选行集合中标识的所述容器(300)的所述发布数据字段(304)之间执行联接操作以标识所述具体回答。
5.如权利要求4所述的方法,其特征在于,执行生成所述查询的可能结果集合的操作包括:
为所述发布者维护的、在成员资格数据字段(302)中标识所述请求者的每一个容器(300)在所述表(400)中创建新行,对于每一个新行,在所述发布者数据字段(402A)中存储标识所述发布者的数据,在所述请求者数据字段(402C)中存储标识所述请求者的数据,在所述容器数据字段(402B)中存储标识所述容器(300)的数据,并且基于所述成员资格数据字段(302)标识所述请求者的方式在所述等级数据字段(402D)中存储值。
6.如权利要求5所述的方法,其特征在于,所述表(400)还包括用于存储指示所述请求者的域与在容器(300)的成员资格数据字段(302)中标识的域之间的匹配的长度的数据的第二等级数据字段(402E)。
7.一种响应于数据库查询的方法,包括:
接收数据库查询,其中所述数据库查询形成对在场发布的请求,其中所述在场发布是在场信息的具体实例,所述在场信息是描述用户的可用性及其通信意愿的数据;
响应于所述查询,根据先前存储的对所述查询的可能响应集合计算对所述查询的回答,其中所述先前存储的对所述查询的可能响应集合是通过将一或多个过程性计算转换成一或多个数据库操作并对数据库(108)执行所述操作以生成对所述查询的可能结果集合来创建的,其中所述一或多个过程性计算包括确定多个容器中的哪个容器满足对在场发布的请求,其中所述容器包括发布数据字段以及成员资格数据字段,所述发布数据字段用于存储与该容器相关联的在场发布,其中所述成员资格数据字段存储标识被授权接收存储在所述容器中的在场发布的一个或多个请求者的数据;以及
响应于所述数据库查询提供所述回答。
8.如权利要求7所述的方法,其特征在于,所述可能响应集合包括包含一或多个行的表(400),每一行包含标识所述在场发布的请求者、所述在场发布的发布者、包括一或多个在场发布的容器数据结构以及第一等级的数据。
9.如权利要求8所述的方法,其特征在于,所述请求者可由所述发布者基于所述请求者的具体身份或者与所述请求者相关联的域授权接收所述请求的发布。
10.如权利要求9所述的方法,其特征在于,所述表(400)还包括标识第二等级的数据,其中所述第二等级指示关联于所述请求者的域与由所述发布者指定的域之间匹配的长度。
11.如权利要求10所述的方法,其特征在于,所述发布数据字段(304)进一步用于存储所述成员资格数据字段中标识的所述成员被授权接收的一或多个在场发布。
12.如权利要求11所述的方法,其特征在于,将一或多个过程性计算转换成一或多个数据库操作并且在数据库(108)上执行所述操作以产生所述查询的所述可能结果集合包括:
为所述发布者维护的、在所述成员资格数据字段(302)中标识所述请求者的每一个容器(300)在所述表(400)中创建新行,在每一个新行中存储标识所述发布者、所述请求者、所述容器以及基于所述成员资格数据字段标识所述请求者的方式的等级的数据。
13.一种用于响应对在场发布的请求的方法,其特征在于,所述方法包括:
从请求者接收对所述在场发布的请求,其中所述在场发布是在场信息的具体实例,所述在场信息是描述用户的可用性及其通信意愿的数据;
响应于所述请求,确定对所述请求的先前计算的可能响应集合是否存在;
响应于确定对所述请求的所述先前计算的可能响应集合存在,使用所述先前计算的可能响应集合来生成对所述在场发布的所述请求的响应;以及
响应于确定对所述请求的所述先前计算的可能响应集合不存在,计算所述可能响应集合并且使用所述计算出的可能响应集合来生成对所述在场发布的所述请求的响应,其中所述计算包括确定多个容器中的哪个容器满足对在场发布的请求,其中所述容器包括发布数据字段以及成员资格数据字段,所述发布数据字段用于存储与该容器相关联的在场发布,其中所述成员资格数据字段存储标识被授权接收存储在所述容器中的在场发布的一个或多个请求者的数据。
14.如权利要求13所述的方法,其特征在于,所述可能响应集合包括包含一或多行的表(400),每一行具有用于存储标识所述请求的在场发布的发布者的数据的发布者数据字段(402A)、用于存储标识所述在场发布的请求者的数据的请求者数据字段(402C)、用于存储标识可据其满足所述请求的容器的数据的容器数据字段(402B)以及用于存储等级的等级数据字段(402D)。
15.如权利要求14所述的方法,其特征在于,所述发布数据字段(304)进一步用于存储所述成员资格数据字段中标识的成员被授权接收的一或多个在场发布。
16.如权利要求15所述的方法,其特征在于,计算所述可能响应集合包括:
为所述发布者的维护的、在所述成员资格数据字段(302)中标识所述请求者的每一个容器(300)在表(400)中创建新行,以及对于每一新行,在所述发布数据字段(402A)中存储标识所述发布者的数据,在所述请求者数据字段(402C)中存储标识所述请求者的数据,在所述容器数据字段(402B)中存储标识所述容器的数据,以及基于所述成员资格数据字段(302)标识所述请求者的方式在所述等级数据字段(402D)中存储值。
17.如权利要求16所述的方法,其特征在于,使用所述先前计算的可能响应集合来生成对所述在场发布的所述请求的响应包括:
从所述表(400)选择一或多个候选行,其中候选行包括所述表(400)中在所述发布者数据字段(402A)中存储对应于所述发布者的数据并在所述请求者数据字段(402C)中存储对应于所述请求者的数据的行;
基于所述等级数据字段(402D)的内容以降序排序所述候选行,以及随后基于所述容器数据字段(402B)的内容以降序排序所述候选行;
通过查找所述经排序候选行中具有最高等级并且在所述容器数据字段(402B)中还包含引用在其发布数据字段(304)中存储所请求的发布的容器(300)的数据的行来标识应当据其满足所述请求的容器(300);以及
使用存储在所述被标识的容器(300)的所述发布数据字段(304)中的所请求的发布的值来响应所述请求。
18.如权利要求17的方法,其特征在于,所述表还包括第二等级数据字段(402E),用于存储指示所述请求者的域与在容器(300)的所述成员资格数据字段(302)中标识的域之间匹配的长度的数据。
19.一种用于响应对在场发布的请求的系统,其特征在于,所述系统包括:
用于从请求者接收对所述在场发布的请求的装置,其中所述在场发布是在场信息的具体实例,所述在场信息是描述用户的可用性及其通信意愿的数据;
用于响应于所述请求,确定对所述请求的先前计算的可能响应集合是否存在的装置;
用于响应于确定对所述请求的所述先前计算的可能响应集合存在,使用所述先前计算的可能响应集合来生成对所述在场发布的所述请求的响应的装置;以及
用于响应于确定对所述请求的所述先前计算的可能响应集合不存在,计算所述可能响应集合并且使用所述计算出的可能响应集合来生成对所述在场发布的所述请求的响应的装置,其中所述用于计算的装置包括用于确定多个容器中的哪个容器满足对在场发布的请求的装置,其中所述容器包括发布数据字段以及成员资格数据字段,所述发布数据字段用于存储与该容器相关联的在场发布,其中所述成员资格数据字段存储标识被授权接收存储在所述容器中的在场发布的一个或多个请求者的数据。
CN2007800150007A 2006-04-28 2007-01-25 高效数据库查找操作 Expired - Fee Related CN101432732B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/413,231 US7805425B2 (en) 2006-04-28 2006-04-28 Efficient database lookup operations
US11/413,231 2006-04-28
PCT/US2007/001978 WO2007130175A1 (en) 2006-04-28 2007-01-25 Efficient database lookup operations

Publications (2)

Publication Number Publication Date
CN101432732A CN101432732A (zh) 2009-05-13
CN101432732B true CN101432732B (zh) 2011-12-14

Family

ID=38649505

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007800150007A Expired - Fee Related CN101432732B (zh) 2006-04-28 2007-01-25 高效数据库查找操作

Country Status (8)

Country Link
US (2) US7805425B2 (zh)
EP (1) EP2024877A4 (zh)
KR (1) KR101319753B1 (zh)
CN (1) CN101432732B (zh)
BR (1) BRPI0710731A2 (zh)
CA (1) CA2645220C (zh)
RU (1) RU2421801C2 (zh)
WO (1) WO2007130175A1 (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8384700B2 (en) 2007-01-26 2013-02-26 Microsoft Corporation Linked shell
US7483969B2 (en) * 2006-10-09 2009-01-27 Microsoft Corporation Managing presence based on relationship
US7822761B2 (en) * 2006-10-18 2010-10-26 International Business Machines Corporation Groupware system with improved contact data handling
US7836088B2 (en) * 2006-10-26 2010-11-16 Microsoft Corporation Relationship-based processing
US7925900B2 (en) 2007-01-26 2011-04-12 Microsoft Corporation I/O co-processor coupled hybrid computing device
US20080183816A1 (en) * 2007-01-31 2008-07-31 Morris Robert P Method and system for associating a tag with a status value of a principal associated with a presence client
US8301581B2 (en) * 2009-09-24 2012-10-30 Avaya Inc. Group compositing algorithms for presence
US20120304078A1 (en) * 2011-05-27 2012-11-29 Cisco Technology, Inc. Method and apparatus for joining a meeting using the presence status of a contact
US20130145280A1 (en) * 2011-12-06 2013-06-06 Jeffry Keith Green Relationship Centric Mobile Interface
CN103200545B (zh) * 2012-01-04 2016-03-02 中国移动通信集团公司 联系人在线状态的同步方法和系统
FR2991530A1 (fr) * 2012-05-29 2013-12-06 France Telecom Procede et entite de traitement d'un message
CN103761102B (zh) * 2014-01-26 2017-05-31 中国联合网络通信集团有限公司 一种统一数据服务平台及其实现方法
CN109033134A (zh) * 2018-06-06 2018-12-18 海尔优家智能科技(北京)有限公司 一种消息处理方法、装置、存储介质及计算机设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6301609B1 (en) * 1999-07-07 2001-10-09 Lucent Technologies Inc. Assignable associate priorities for user-definable instant messaging buddy groups
CN1571966A (zh) * 2001-10-17 2005-01-26 日本科学技术振兴机构 信息检索方法、信息检索程序、和记录有信息检索程序的计算机可读记录介质
CN1599906A (zh) * 2001-12-07 2005-03-23 诺基亚公司 提供数据库查询服务的方法和服务器

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CZ148199A3 (cs) * 1998-05-08 1999-11-17 International Business Machines Corporation Použití technologie dotazů v databázích pro přihlašování k účasti na zprávách v systémech pro zpracování zpráv
EP1449165A1 (en) * 2001-11-09 2004-08-25 Koninklijke Philips Electronics N.V. Data carrier having power dependent data processing modes
US7085758B2 (en) * 2002-08-22 2006-08-01 International Business Machines Corporation Database enabled messaging facility
US6950823B2 (en) * 2002-12-23 2005-09-27 International Business Machines Corporation Transparent edge-of-network data cache
US7158969B2 (en) * 2003-06-12 2007-01-02 International Business Machines Corporation Iterative data analysis process via query result augmentation and result data feedback
US7921368B2 (en) 2004-01-22 2011-04-05 International Business Machines Corporation Method and system for sensing and communicating updated status information for remote users accessible through an instant messaging system
KR100566263B1 (ko) 2004-03-26 2006-03-29 삼성전자주식회사 스케쥴 내용에 따라 메신저 상태 정보를 변경하는 메신저서비스 제공 시스템 및 방법
JP2005318503A (ja) * 2004-03-29 2005-11-10 Hitachi Ltd プレゼンスサーバ、セッション制御サーバ、パケット中継システム、サーバ、及びシステム
US20060047782A1 (en) * 2004-06-29 2006-03-02 Nokia Corporation Presence service
US20060064473A1 (en) 2004-09-21 2006-03-23 Utstarcom, Inc. Method and apparatus to facilitate inter-domain presence services
US20060080130A1 (en) * 2004-10-08 2006-04-13 Samit Choksi Method that uses enterprise application integration to provide real-time proactive post-sales and pre-sales service over SIP/SIMPLE/XMPP networks
US7801912B2 (en) * 2005-12-29 2010-09-21 Amazon Technologies, Inc. Method and apparatus for a searchable data service

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6301609B1 (en) * 1999-07-07 2001-10-09 Lucent Technologies Inc. Assignable associate priorities for user-definable instant messaging buddy groups
CN1571966A (zh) * 2001-10-17 2005-01-26 日本科学技术振兴机构 信息检索方法、信息检索程序、和记录有信息检索程序的计算机可读记录介质
CN1599906A (zh) * 2001-12-07 2005-03-23 诺基亚公司 提供数据库查询服务的方法和服务器

Also Published As

Publication number Publication date
EP2024877A1 (en) 2009-02-18
WO2007130175A1 (en) 2007-11-15
US20070255683A1 (en) 2007-11-01
EP2024877A4 (en) 2009-12-30
CA2645220C (en) 2013-10-15
RU2008142525A (ru) 2010-05-10
US7805425B2 (en) 2010-09-28
US20100318562A1 (en) 2010-12-16
KR101319753B1 (ko) 2013-10-17
CA2645220A1 (en) 2007-11-15
KR20090005053A (ko) 2009-01-12
RU2421801C2 (ru) 2011-06-20
CN101432732A (zh) 2009-05-13
BRPI0710731A2 (pt) 2012-03-13
US7933888B2 (en) 2011-04-26

Similar Documents

Publication Publication Date Title
CN101432732B (zh) 高效数据库查找操作
EP2158552B1 (en) Aggregating and searching profile data from multiple services
CN102890696B (zh) 基于社交网络的上下文排序
US9094359B2 (en) Method and system for inter-social network communications
US8713102B2 (en) Social community generated answer system with collaboration constraints
US8977698B2 (en) Tagging content within a networking environment based upon recipients receiving the content
US20130304830A1 (en) Method and system for social media cooperation protocol
US20130036117A1 (en) System and method for metadata capture, extraction and analysis
EP1457911A1 (en) System and method for social interaction
US8296372B2 (en) Method and system for merging electronic messages
US20100299340A1 (en) Distributed contact information discovery and sharing
US20190057297A1 (en) Leveraging knowledge base of groups in mining organizational data
US8122092B2 (en) Auto-resolve recipients cache
US11544720B2 (en) Client manager and router
US8392522B2 (en) Business inquiries and operations using messaging service
US20210297286A1 (en) Facilitating personas in communication exchange environments
Chenthati et al. A scalable relational database approach for web service matchmaking
Shakespeare Identity by Any Other Name
JP2003132066A (ja) 文書検索システム
JP2005025720A (ja) 会員情報管理装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150428

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150428

Address after: Washington State

Patentee after: MICROSOFT TECHNOLOGY LICENSING, LLC

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20111214

CF01 Termination of patent right due to non-payment of annual fee