批量操作的制作方法

文档序号:6443123阅读:502来源:国知局

专利名称::批量操作的制作方法
技术领域
:本发明涉及批量操作。
背景技术
:数据处理是计算机编程的基本部分。可从各种编程语言中选择创建程序的编程语言。用于特定的应用程序的所选语言可取决于应用程序上下文、开发者的偏好、或公司策略,以及其他因素。无论所选语言如何,开发者最终将必须处理数据,即查询以及创建、更新和删除数据。已开发称为语言集成查询(LINQ)的技术以便于从编程语言内查询或者换言之读取数据。LINQ提供方便且声明性简写查询句法以在编程语言(例如,C#、VisualBasic...)内部允许对查询的指定。更具体而言,提供映射到较低层语言构造或原语的查询运算符,诸如方法和拉姆达表达式(lambdaexpression)。提供用于各种运算(例如,过滤、投影、连接、分组、排序……)族的查询运算符,并且查询运算符可包括但不限于映射到实现这些名称所表示的运算符的方法的“where”和“select”运算符。作为示例,用户可以以诸如“fromninnumberswheren<IOselectn”的形式指定查询,其中“numbers”是数据源并且查询从数据源返回小于10的整数。此外,可以以各种方式组合查询运算符以生成任意复杂度的查询。为了在编程语言内部执行创建、更新和删除操作,可利用LINQ的查询功能。更具体地,使用LINQ将在其上可执行创建、更新或删除操作的数据集合从持久数据存储(例如,数据的非易失性储存库)读取至存储器中。后续地,在存储器内表示上执行一个或多个操作并将变更推送回至持久数据存储。换言之,可跟踪对检索自数据库的实体的变更,并且当在数据库上调用“SubmitChangesO”或类似过程时,在底层数据结构(例如,表)上执行累积的变更。
发明内容下面呈现了简化的
发明内容,以便提供对所公开主题的某些方面的基本概念。本
发明内容不是广泛性的概观。它并不旨在标识关键/重要元素,也不旨在划定所要求保护主题的范围。其唯一目的是以简化形式呈现一些概念,作为稍后呈现的更具体实施例的序简言之,本发明一般涉及批量操作。可利用语言集成查询指定创建、读取、更新和删除操作。然而,例如,每一批量操作可与其他批量操作不同地来实现——与根据诸如读取操作之类的特定操作相反。此外,可将批量操作相关的功能可根据特定批量操作来约束,以防止或至少减少运行时错误。根据本发明的一个方面,批量操作可关于为操作(例如,IQuerable,IInsertable,IUpdatable,IDeletable)所特有的类型的专用集合来操作。此外,对集合的其他操作可基于集合类型来进行限制,包括但不限于用于定义集合的查询运算符。为实现上述及相关目的,在此结合以下描述和附图描述了所要求保护主题的某些说明性方面。这些方面指示可实践本主题的各种方式,它们均落在所要求保护主题的范围之内。当结合附图阅读以下详细描述时,本发明的其他优点和新颖特征将变得显而易见。图I是便于与持久数据存储处交互的系统的框图。图2是代表性LINQ批量操作的框图。图3A-C图形化地示出创建、更新和删除操作。图4是与持久数据存储交互的方法的流程图。图5是编码批量操作的方法的流程图。图6是验证批量操作的方法的流程图。图7是示出用于本公开各方面的合适操作环境的示意性框图。具体实施例方式以下细节大体针对包括在语言集成查询上下文中创建、更新和删除的批量操作。常规上,支持单个批量操作,即读取操作。可注入代码以利用读取操作来执行其他批量操作,例如,通过将数据从持久数据存储(例如,数据库)读取至存储器,允许对存储器内数据进行变更并将变更推送回持久数据存储。然而,关于上述方法至少有两个问题。首先,尽管对于读取操作将数据加载至存储器是合乎需要的,但是对于其他批量操作,至少由于效率原因优选直接在持久数据存储上执行操作而不创建存储器内表示(例如,对象)。例如,考虑涉及一百万个记录的情形。此处,从持久数据存储加载一百万个记录、跟踪变更并将数据推送回持久数据存储将是非常低效的。其次,由读取查询标识的集合对于其他操作可能是不兼容的,由此导致运行时错误。例如,如果对多个表执行“Join(联合)”查询运算符,则删除操作将难以(如果不是不可能的话)执行,因为接收特定数据所针对的表是未知的。本发明解决了这些和其他问题。更具体地,提供彼此不同的批量运算符,而非修改的读取操作。因此,创建、更新和删除操作可直接在持久数据存储上执行,而非间接地使用本地修改以及后续提交至数据存储。进一步地,在指定对其执行操作的集合之前可指定操作的意图,例如使用查询句法。根据一个实施例,可对于特定的集合类型(例如,IInsertable<T>,IUpdatable〈T>,IDeletable<T>)指定每一操作,其可尤其限制可用于定义集合的各种查询运算符。现在参考附图更详细地描述本公开的各个方面,在全部附图中用相似的标记来指示相似或相应的元素。然而应该理解,附图及其相关详细描述不旨在将所要求保护的主题限于所公开的具体形式。相反,其意图是覆盖落在所要求保护主题的精神和范围之内的所有修改、等价物和替换的方案。最初参考图1,示出了便于与诸如数据库之类的持久数据存储交互的系统100。系统100包括被配置为接收、检索、或以其他方式获得或获取计算机程序源代码的编辑器组件110。更具体地,编辑器组件110可启用语言集成(LINQ)批量操作的指定和/或编辑。批量操作对应于基本数据库操作,或者换言之,所谓的CRUD操作,即创建、读取、更新和删除。创建操作将一组一个或多个项目插入至集合中。因此,创建操作在本文中也称为插入操作。读取操作从集合中至少检索项目子集。有时读取操作被不严格地称为查询操作,因为查询指定了将要读取的数据。然而,如本文将进一步讨论的,查询可指定可对其执行多个操作的数据集合。更新操作至少修改集合中的项目子集,删除至少移除集合中的项目子集。常规语言集成查询涉及读取操作。使用“IQuerable”接口来提供这样的功能,顾名思义,“IQuerable”接口使用查询标识了一组项目。例如,给定专利数据库,可通过构造以下语言集成查询来标识作者字段中包含“JohnSmith”的那些专利varpatents=frompatentinUSPTO.GetTable<Patents>()wherepatent.Author.Includes(“JohnSmith,,)selectpatent;创建、更新和删除操作可实现为修改的读取操作。作为示例而并非限制,为了将名称“JohnSmith”变更为“JonathanSmith”,可结合以下代码片段使用以上的读取操作来获取具有作者“JohnSmith”的专利foreach(varpatentinpatents)Patent.Author=“JonathanSmith”USPTO.SubmitChangesO;换言之,更新操作可以和将全部项目读入至存储器的读取操作一起执行,之后是存储器内项目的修改,然后将累积的变更发送回数据库以实现对实际的底层数据结构(例如,表)的变更。尽管对于读取操作需要将标识的项目读取至存储器中,但是对于其他操作(创建、更新和删除)并不是必要的。结果,将其他操作实现为修改的读取操作(例如,读取加附加功能)可能是相当低效的。此外,这样的实现还可根据客户机计算机系统在操作上施加潜在的限制。作为说明性示例,假定在以上的示例中,有一百万个作者为“JohnSmith”的专利。从数据库取回一百万个专利、在存储器中创建专利、跟踪对它们的变更以及之后将变更推送回数据库中将是非常低效的。此外,如果客户机计算机系统不能创建和/或操纵存储器中的一百万个专利,那么操作将无法完成。再进一步,将读取操作用作其他批量操作的基础可导致问题,因为读取操作可支持比特定操作所支持的更多的查询运算符和/或相关联的功能。例如,考虑以下在读取操作之上实现的删除操作vardeleted=(frompatentinUSPTO.GetTable<Patents>()wherepatent.Author.Includes(“JohnSmith)selectpatent.Date).Delete();此处,通过不适当的投影来构造不标识底层表中的任何实际项目的删除操作。结果将生成运行时错误。因此,关于编辑器组件110的批量操作可以不同于在读取操作上方生成。此外,在包括一个或多个相关的查询运算符的语言集成查询表达式尤其用于标识将对其执行批量操作的集合的情况下,可提前指定意图以允许根据需要就每一批量操作(即创建、更新和删除)约束查询表达式。可通过对底层编程语言进行变更来注入这样的功能,例如通过添加对于特定关键词(例如,Insert(插入),Update(更新),Delete(删除))的支持以及支持代码。另选地,相对于类型系统可如下所述来实现该功能。注意力转向图2,图形地描绘了代表性LINQ批量操作200。每一LINQ批量操作(例如,创建、更新、删除)可包括为操作以及可对于特定集合及其类型操作的一个或多个允许的查询运算符220所特有的集合类型210。此外,可使用一个或多个输出运算符230来控制操作的输出。集合类型210是为特定操作所特有的,并操作用于至少标识关于就查询表达式所指定的集合的意图。此外,可通过限制查询运算符220及其相对于集合类型的使用来约束查询表达式。常规的读取操作支持“IQueryable”接口或“IQueryable〈T>”。如果集合实现了接口“IQueryableCD”(其中“T”是集合中的项目的类型(例如,串、整数……)),那么意味着集合实现了该接口规定的功能并且由此可以说该集合是“IQueryableCD”类型的。类似地,可实现创建操作并且是“IlnsertableCD”类型的,可实现更新操作并且是“IUpdatable〈T>”类型的,可实现删除操作并且是“IDeletableCD”类型的。这些集合类型现在可用于根据特定批量操作限制对集合的操作(例如,查询运算符(Select,Where,Join...))ο根据一个实施例,批量运算符类型“IlnsertableCD”、“IUpdatableCD”和“IDeletableCD”可从读取操作类型“IQueryableCD”导出或者是其子类型。由此,可存在用于在这样的类型之间转换的操作。作为示例而非限制,可使用从数据库返回“IDeletable〈T>”集合的“GetForDelete〈T>O”运算符等来指定删除运算符。vardeleted=frompatentinUSPTO.GetForDelete<Patents>()wherepatent.Author.Includes(“JohnSmith,,)selectpatent;此处,集合类型可限制可被应用的各种查询运算符。更具体地,集合类型可确保结果类型是“IDeletableCD”,以使得标识正确类型的项目来删除。类似地,对于创建或者换言之插入,可指定返回“IlnsertableCD”集合的“GetForlnsertionCD”运算符。此外,具体的值的集合或从可能不同的位置返回值的集合的查询可被提供来作为创建操作的输入。例如varinserted=USPTO.GetForInsertion<Patents>().Insert(frompatentinxxx.com.GetTable<Disclosure>()wherepatent.Author.Includes(“JohnSmith”)selectpatent);varinserted〗=inserted.Insert(newPatent{·.·,Author=“JohnSmith’’,Title=“Abettermousetrap”,...});最终,对于更新,可调用返回“IUpdatable〈T>”集合(不要与对象数据协议(Odata)可更新的概念混淆)的“GetForUpdates〈T>”运算符。例如varchanged=frompatentinUSPTO.GetForUpdates(old=>{old.Author=“JohnSmith”;})wherepatent.Author.Includes(“JohnSmith”)selectpatent;再次,对“IUpdatable〈T>”集合的查询运算符组维持其仅标识相同类型的子集的不变性。如图2所示,LINQ批量操作还可选地包括输出运算符230。这些运算符可用于指定对于批量操作的响应。对于读取操作,很清楚在返回满足查询的项目时操作已经被执行。对于其他批量操作,这较不清楚,例如,因为操作是直接在数据库上执行的。因此,例如可指定输出运算符230返回对应于受操作影响的项目数量的整数或者可返回实际的项目。例如,在执行使用查询指定的删除时,可返回被删除的项目的数量和/或可返回被删除的实际项目。图3A-C如先前所述图形地描绘了创建、更新和删除操作以进一步助于对于本发明各方面的清晰度和理解。图3A涉及创建或插入操作。如所示出的,可以对诸如关系数据库表之类的数据源300执行创建操作。可指定“GetForlnsertionO”操作302以产生“IInsertable”集合304。对于“IInsertable”集合304,可指定选择查询运算符306。可在目标数据源300上执行或运行(run)308创建操作,并且作为响应,可返回插入的项目的数量或实际插入的项目,如所示的“Int”或“IEnumerable〈T>”309。图3B涉及更新操作,其可再次对于数据源300执行。进一步地,可指定“GetForUpdate”运算符312以返回“IUpdatable”集合314。可指定对于“IUpdatable”集合314的可允许运算符316以声明性地表示将更新的特定项目。可在目标数据源300上执行或运行318更新的操作,并且可返回更新的项目的数量或实际更新的项目组,如“Int”或“IEnumerable〈T>”319所捕捉的。图3C涉及删除操作。再次地,数据源300中的项目可被定标以供删除。可指定返回“IDeletable”集合324的“GetForDeletion”运算符322,可对于“IDeletable”集合324指定特定的查询运算符326的组。可在数据源300上执行或运行328删除操作,并且可返回插入的项目的数量或实际删除的项目组,如“Int”或“IEnumerableCD”329指定的。回头参考图I的系统100,如所提及的,编辑器组件110可如前所述地允许LINQ批量操作的指定和编辑。系统100还包括可将包括LINQ批量操作的源代码变换为诸如另一计算机语言之类的另一种形式的编译器组件120。更具体地,编译器组件120可执行包括类型检查或者换言之类型错误的检查的语义分析。因此,编译器可检查为批量操作所特有的集合类型,并确定给定特定的集合类型,包括一个或多个运算符的查询表达式是否是可接受的。如果查询表达式是不可接受的,那么就可生成编译时错误。例如,对于“IDeletable〈T>”集合,如果指定了身份投影之外的投影(例如,“selectpatent.Date”而非“selectpatent”),那么编译器可指示发生了类型错误。因此,至少可减少(如果未被消除的话)关于批量操作的运行时错误的发生。此外,编辑器组件110和编译器组件120可进行协作来向程序员提供关于批量操作的指定的基本上实时的反馈。例如,可利用编译器组件120来根据类型提供非正确指定的批量操作的指示,诸如通过使用代码的非正确部分下的红色波浪线。进一步地,可使用编译器组件120来在输入源代码时提供提示或做出建议。例如,一旦提供或以其他方式确定或推断出了集合类型,那么查询运算符可根据其类型来过滤并在源代码指定期间被建议。系统100还包括被配置为生成目标专用批量运算符的翻译器组件130。更具体地,基于编译器组件120产生的批量操作的本地表示,翻译器组件130可将该表示变换为或者从该表示生成可由目标执行环境执行的批量操作。例如,如果批量操作将在关系数据库系统上执行,那么翻译器组件130可生成批量操作的结构化查询语言(SQL)表示以供关系数据库系统执行。参考若干组件之间的交互已经描述了上述系统、体系结构、环境等。应该理解,这样的系统和组件可以包括这些组件或其中指定的子组件,某些指定的组件或子组件,和/或附加的组件。子组件也可以被实现为在通信上被耦合到其他组件而不是被包括在父组件中的组件。此外,一个或多个组件和/或子组件可以结合成提供聚集功能的单个组件。系统、组件、和/或子组件之间的通信可以根据推送(push)和/或拉取(pull)模型来实现。各组件也可以与一个或多个其他组件进行交互,出于简要考虑在此未具体描述该组件,但本领域的技术人员均已知。此外,以上公开系统以及以下方法的各个部分可以包括或包含基于人工智能、机器学习或知识或规则的组件、子组件、进程、装置、方法或机制(例如,支持向量机、神经网络、专家系统、贝叶斯信任网络、模糊逻辑、数据融合引擎、分类器...)。这样的组件和其它组件可以自动化执行某些机制或进程,由此使得系统和方法的各部分更为自适应、高效及智能。作为示例而非限制,编译器组件120可特别地使用这样的对于执行类型推理的机制。考虑到以上描述的示例性系统,参考图4-6的流程图将可以更好地理解依照所公开的主题实现的方法。尽管为了说明简洁起见,作为一系列框示出和描述了方法,但是,应该理解,所要求保护的主题不仅限于所描述框的顺序,一些框可以按与此处所描绘和描述的不同的顺序进行和/或与其它框并发地进行。此外,并非全部所示出的框都是实现下面所描述的方法所必需的。参考图4,示出了与持久数据存储交互的方法400。在附图标记410处,标识语言集成查询批量操作。批量操作可对应于使用语言集成查询表达式等指定的创建、更新或删除操作。在附图标记420处,将操作变换为用于执行的目标语言。例如,如果可使用多用途编程语言(例如,C#,VisualBasic,Java)来指定批量操作,则该多用途编程语言之后可被用于产生关于诸如关系数据库系统之类的持久数据存储的可执行代码(例如,Τ-SQL)。在430处,至少发起批量操作的传输或者换言之通信以供执行。在附图标记440处,例如可获取指示受操作影响的数据库项数量和/或提供被影响的实际项目的响应。图5是编码批量操作的方法500的流程图。在附图标记510处,指定关于诸如创建、更新或删除之类的批量操作的集合类型。此外,指定的集合类型是唯一的或为特定批量操作所特有的(例如,“IlnsertableCD”->创建(也称为插入),“IUpdatable〈T>”->更新,以及“IDeletableCD”->删除)。在附图标记520处,对特定集合指定一个或多个可用操作。集合类型可限制可在集合上执行的操作。因此,可在批量操作的指定中使用并没有被有效过滤的那些操作。例如,可使用查询运算符来生成至少声明性地指定在其上可执行批量操作的数据子集的查询表达式——作为例如具体的值的集合的显式指定的替换或补充。因此,可指定规定是否返回受操作影响的项目的数量和/或提供特定项目的输出操作。图6示出一种验证批量操作的方法600。在附图标记610处,标识对于特定批量操作(例如,创建、更新、删除)的源集合类型,例如“IInsertabIe〈T>”、“IUpdatabIeCDIP“IDeletableCD”。在标记620处,标识为集合所特有的操作。例如,可对于声明性地定义集合值的查询表达式标识查询运算符及其使用。在标记630处,做出关于操作是否有效的判定。每一集合类型可定义对于集合可允许的一组操作。因此,在630处的判定可对应于可允许的操作与指定的操作的比较。如果批量操作如所指定的(“YES(是)”)(例如,没有类型错误)是有效的,那么方法600可终止。凌旋地,如果批量操作是无效的(“NO(否)”)(例如,类型错误),那么该方法在终结之前在附图标记640处生成错误。此处使用的术语“组件”和“系统”及其各种形式旨在表示与计算机相关的实体,其可以是硬件、硬件和软件的组合、软件、或执行中的软件。例如,组件可以是但不限于是,在处理器上运行的进程、处理器、对象、实例、可执行程序、执行的线程、程序和/或计算机。作为说明,在计算机上运行的应用和计算机都可以是组件。一个或多个组件可驻留在进程和/或执行的线程内,并且组件可位于一个计算机上和/或分布在两个或更多的计算机之间。在本文中使用的词语“示例性”或其各种形式意味着用作示例、实例或说明。在此被描述为“示例性”的任何方面或设计并不一定要被解释为相比其它方面或设计更优选或有利。此外,各示例只是出于清楚和理解的目的来提供的并且并不意味着以任何方式限制或约束所要求保护主题或本发明的相关部分。可以理解,本来可呈现不同范围的多个附加或替换示例,但出于简明的目的已被省略。如此处所使用,术语“推论”或“推断”通常指的是从经由事件和/或数据捕捉的一组观察结果来推理或推断系统、环境、和/或用户的状态的过程。可以使用推断来标识特定上下文或动作,也可以生成例如状态上的概率分布。推断可以是概率性的,即,基于对数据和事件的考虑,计算在感兴趣状态上的概率分布。推断也可以是指用于从一组事件和/或数据构成较高级别的事件的技术。这样的推断导致从一组观察到的事件和/或存储的事件数据构建新的事件或动作,不管事件在时间上是否紧密相关,以及事件和数据是来自一个还是多个事件和数据源。可采用各种分类方案和/或系统(例如,支持向量机、神经网络、专家系统、贝叶斯信任网络、模糊逻辑、数据融合引擎……)来执行关于所要求保护主题的自动化和/或推断的动作。而且,对于在详细描述或权利要求书中使用术语“包括”、“包含”、“具有”、“含有”或其它形式的变型而言,这样的术语旨在以类似于术语“包括”的方式体现包含性,如同“包括”在用作权利要求书中的过渡词时所解释的那样。为了为所要求保护主题提供上下文,图7以及以下讨论旨在提供对其中可以实现本主题的各方面的合适环境的简要、概括描述。然而,合适的环境只是示例并且并非旨在对使用范围或功能提出任何限制。尽管能够在可以在一台或多台计算机上运行的程序的计算机可执行指令的一般上下文中描述以上公开的系统和方法,但是,本领域的技术人员将认识到,各方面也可以与其他程序模块等相结合地实现。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件和数据结构等。此外,本领域技术人员可以理解,上述系统和方法可用各种计算机系统配置实现,包括单处理器、多处理器或多核处理器计算机系统、小型计算设备、大型计算机、以及个人计算机、手持式计算设备(例如,个人数字助理(PDA)、电话、手表……)、基于微处理器或可编程消费者或工业电子设备等。各方面也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实现。然而,所要求保护主题的某些方面,如果不是所有方面的话,可以在独立计算机上实施。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中的一个或两者中。参考图7,示出了示例通用计算机710或计算设备(例如,台式机、膝上型计算机、服务器、手持式设备、可编程消费或工业电子产品、机顶盒、游戏系统……)。计算机710包括一个或多个处理器720、存储器730、系统总线740、大容量存储750、以及一个或多个接口组件770。系统总线740与至少上述系统组件通信地耦合。然而,可以理解,在其最简单的形式中,计算机710可包括耦合到存储器730的一个或多个处理器720,该一个或多个处理器720执行存储在存储器730中的各种计算机可执行动作、指令和或组件。处理器720可以用通用处理器、数字信号处理器(DSP)、应用程序专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑设备、分立门或晶体管逻辑、分立硬件组件或被设计为执行此处描述的功能的其任意组合来实现。通用处理器可以是微处理器,但在替换方案中,处理器可以是任何处理器、控制器、微控制器、或状态机。处理器720还可被实现为计算设备的组合,例如DSP和微处理器的组合、多个微处理器、多核处理器、结合一个DSP核的一个或多个微处理器、或任何其它这种配置。计算机710可包括各种计算机可读介质或以其他方式与各种计算机可读介质交互以便于控制计算机710来实现所要求保护主题的一个或多个方面。计算机可读介质可以是能由计算机710访问的任何可用介质,并包含易失性和非易失性介质以及可移动和不可移动介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据这样的信息的任意方法或技术来实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,存储器设备(例如,随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)……)、磁存储设备(例如,硬盘、软盘、磁带盒、磁带……)、光盘(例如,紧致盘(CD)、数字多功能盘(DVD)……)、以及固态设备(例如,固态驱动器(SSD)、闪存驱动器(例如,卡、棒、键驱动器……)……)、或者可用于存储所需信息并且可由计算机710访问的任何其他介质。通信介质通常以诸如载波或其他传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据,并包括任何信息传送介质。术语“已调制数据信号”是指具有以在信号中编码信息的方式被设定或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、RF、红外及其他无线介质之类的无线介质。上述的任意组合也应包含在计算机可读介质的范围内。存储器730和大容量存储750是计算机可读存储介质的示例。取决于计算设备的确切配置和类型,存储器730可以是易失性的(例如RAM)、非易失性的(例如ROM、闪存……)或是两者的某种组合。作为示例,基本输入/输出系统(BIOS),包括诸如在启动期间在计算机710内的元件之间传输信息的基本例程,可被存储在非易失性存储器中,而易失性存储器可担当外部高速缓存存储器以便于处理器720的处理等。大容量存储750包括相对于存储器730用于存储大量数据的可移动/不可移动、易失性/非易失性计算机存储介质。例如,大容量存储750包括但不限于,诸如磁盘或光盘驱动器、软盘驱动器、闪存存储器、固态驱动器、或记忆棒的一个或多个设备。存储器730和大容量存储750可包括或其中存储有操作系统760、一个或多个应用762、一个或多个程序模块764和数据766。操作系统760用于控制和分配计算机710的资源。应用762包括系统和应用软件中的一个或两个,并且可利用操作系统760对资源的管理通过存储在存储器730和/或大容量存储750中的程序模块764和数据766来执行一个或多个动作。因此,应用762可根据由此提供的逻辑来将通用计算机710变成专用机器。所要求保护主题的全部或各部分可以使用产生控制计算机以实现所公开功能的软件、固件、硬件或其任意组合的标准编程和/或工程技术来实现。作为示例而非限制,系统100或其一部分可以是应用762或形成应用762的一部分,并且包括存储在存储器和/或大容量存储750中的一个或多个模块764和数据766,这些模块和数据的功能可在由一个或多个处理器720执行时可实现。根据一个特定实施例,处理器720可与片上系统(SOC)或在单个集成电路基座上包括或换言之集成硬件和软件的类似体系结构相对应。此处,处理器720可包括至少与处理器720和存储器730相似的一个或多个处理器以及存储器等。常规处理器包括最少量的硬件和软件并且广泛依赖于外部硬件和软件。作为对比,处理器的SOC实现更强大,因为它将硬件和软件嵌入其中以能够用最少的硬件和软件或不依赖于外部硬件和软件来启用特定功能。例如,系统100和/或相关联的功能可被嵌入到SOC体系结构中的硬件内。计算机710还包括通信地耦合到系统总线740并方便与计算机710的交互的一个或多个接口组件770。作为示例,接口组件770可以是端口(例如,串行、并行、PCMCIA、USB、火线......)或接口卡(例如,声音、视频......)等等。在一个示例实现中,接口组件770可被具体化为用户输入/输出接口,该用户输入/输出接口使得用户能够通过一个或多个输入设备(例如,诸如鼠标等定点设备、跟踪球、指示笔、触摸垫、键盘、话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪、照相机、其他计算机……)来将命令和信息输入到计算机710中。在另一示例实现中,接口组件770可被具体化为输出外围接口,该输出外围接口向显示器(例如,CRT、LCD、等离子……)、扬声器、打印机和/或其它计算机等提供输出。此外,接口组件770可被具体化为网络接口,该网络接口使得能够诸如通过有线或无线通信链路与其他计算设备(未示出)通信。以上所已经描述的内容包括所要求保护主题的各方面的示例。当然,出于描绘所要求保护主题的目的而描述每一个可以想到的组件或方法的组合是不可能的,但本领域内的普通技术人员应该认识到,所要求保护主题的许多进一步的组合和排列都是可能的。因此,所公开的主题旨在涵盖落入所附权利要求书的精神和范围内的所有这样的变更、修改和变化。权利要求1.一种便于与持久数据存储交互的方法,包括采用被配置来执行存储在存储器(730)中的计算机可执行指令以执行以下动作的至少一个处理器(720)限制与指定创建、更新或删除操作中的至少一个相关的一个或多个语言集成查询运算符的使用。2.如权利要求I所述的方法,其特征在于,还包括直接在持久数据存储上启动所述创建、更新或删除操作的执行。3.如权利要求2所述的方法,其特征在于,还包括接收对所述创建、更新或删除操作的执行的确认。4.如权利要求I所述的方法,其特征在于,还包括根据为所述创建、更新或删除操作所特有的集合类型限制所述一个或多个语言集成查询运算符的使用。5.如权利要求4所述的方法,其特征在于,根据读取操作集合类型的子类型限制所述使用。6.一种便于与持久数据存储交互的系统,包括耦合到存储器(730)的处理器(720),所述处理器(720)被配置来执行存储在所述存储器(730)中的以下计算机可执行组件第一组件,其被配置来分析对一集合的语言集成查询创建、更新或删除操作,所述操作是根据为所述操作所特有的集合类型用一个或多个查询运算符指定的。7.如权利要求6所述的系统,其特征在于,所述第一组件被配置为如果所述一个或多个查询运算符中的至少一个不被为对其指定所述查询运算符的所述操作所特有的集合类型支持,则生成错误。8.如权利要求6所述的系统,其特征在于,所述集合类型是读取操作集合类型的子类型。9.如权利要求6所述的系统,其特征在于,所述操作包括指定返回值的输出运算符。10.如权利要求6所述的系统,其特征在于,还包括第二组件,其被配置来将所述操作变换为目标查询语言。全文摘要本文描述了批量操作。在语言集成查询上下文内支持包括创建、更新和删除操作的批量操作。这样的批量操作可被实现为不同的操作。可根据特定批量操作来限制包括定义可对其执行批量操作的数据集合的查询运算符的其他操作。文档编号G06F17/30GK102591933SQ20111044011公开日2012年7月18日申请日期2011年12月16日优先权日2010年12月17日发明者H·J·M·梅杰申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1