CN102541993A - 用于分布式计算的电子表格模型 - Google Patents

用于分布式计算的电子表格模型 Download PDF

Info

Publication number
CN102541993A
CN102541993A CN2011103644172A CN201110364417A CN102541993A CN 102541993 A CN102541993 A CN 102541993A CN 2011103644172 A CN2011103644172 A CN 2011103644172A CN 201110364417 A CN201110364417 A CN 201110364417A CN 102541993 A CN102541993 A CN 102541993A
Authority
CN
China
Prior art keywords
data
data source
source
value
distributed
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.)
Granted
Application number
CN2011103644172A
Other languages
English (en)
Other versions
CN102541993B (zh
Inventor
H·J·M·梅杰
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
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN102541993A publication Critical patent/CN102541993A/zh
Application granted granted Critical
Publication of CN102541993B publication Critical patent/CN102541993B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/177Editing, e.g. inserting or deleting of tables; using ruled lines
    • G06F40/18Editing, e.g. inserting or deleting of tables; using ruled lines of spreadsheets

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请是用于分布式计算的电子表格模型。使用电子表格模型来方便分布式计算。一般化电子表格和单元格以对应尤其可以彼此远离的任意数据源。可以相对于这些任意数据源指定函数以产生数据组合或混搭,并且改变启动相对于依赖数据源的重新计算。

Description

用于分布式计算的电子表格模型
技术领域
本申请涉及分布式计算,特别是用于分布式计算的电子表格模型。
背景技术
数据模型描述了可如何存储和访问数据。更正式地,数据模型定义数据实体以及各数据实体间的关系。数据模型的主要目的是提供数据的定义和格式,以便于管理和处理大量的数据。数据模型的一种应用是定义如何结构化和利用数据库或其他存储的数据库模型。数据库模型可以是关系型的或非关系型的。
在关系型模型中,或更具体地在关系型数据库中,根据一个或多个表来结构化数据。表是包括多个行和列的关系,其中所命名的列被称为属性,且行捕捉具体的实体实例的数据。例如,表可捕捉与诸如行(也称为元组)和列中的书籍等特定实体有关的信息。列标识实体的各种属性,诸如书籍的标题、作者、和出版年份等。行捕捉实体的实例,诸如特定的书籍。换言之,表中的每一行表示特定书籍的各属性。此外,表可包括使得两个或更多表能被链接在一起的主键和外键。
在非关系型模型的许多实现中,键值模型是最受欢迎中的一种。键值数据库或存储表示将唯一键映射成一个或多个值的集合的简单数据模型。更具体地,键值存储用于存储值和便于基于键来定位所存储的值的索引。例如,可以定位标识书籍的数据的标题、作者或出版中的一个的键。
关系型数据库通常被称为SQL数据库,而一些非关系型数据库则被称为NoSQL数据库或存储。SQL代表结构化查询语言,该结构化查询语言是被利用来查询和或者与关系型数据库中的数据进行交互的主要语言。当结合关系型数据库来利用SQL时,该数据库可被称为基于SQL的关系型数据库。然而,基于SQL的关系数据库更经常地被简称为SQL数据库,并且用作关系型数据库的同义词。NoSQL是用来指代与基于SQL的关系型数据库不同的数据库的一个术语。换言之,术语NoSQL被用作非关系型数据库或诸如但不限于键值存储的存储的同义词。
发明内容
下面呈现了简化的发明内容,以便提供对所公开主题的某些方面的基本概念。本发明内容不是广泛性的概观。它并不旨在标识关键/重要元素,也不旨在划定所要求保护主题的范围。其唯一目的是以简化形式呈现一些概念,作为稍后呈现的更具体实施例的序言。
简言之,本发明一般涉及用于分布式计算的电子表格模型。具体而言,通过用任意的数据源(例如SQL、NoSQL、基于推的交互、基于拉的交互……)来取代单元格以一般化电子表格范例(paradigm),所述任意的数据源可以是分布式的或彼此远离的。另外,可以相对于这样的任意数据源指定函数以产生组合的数据或混搭(mashup),并且改变可以启动相对于依赖数据源的重新计算。
为实现上述及相关目的,在此结合以下描述和附图描述了所要求保护主题的某些说明性方面。这些方面指示可实践本主题的各种方式,它们均落在所要求保护主题的范围之内。当结合附图阅读以下详细描述时,本发明的其他优点和新颖特征将变得显而易见。
附图说明
图1是方便分布式计算的系统的框图。
图2是代表性数据源的框图。
图3A示出了基于推的数据的示例。
图3B描绘了基于拉的数据的示例。
图4A是代表性推拉适配器的框图。
图4B是代表性推拉适配器的框图。
图5是示出数据源合成的框图。
图6是分布式处理的方法的流程图。
图7是方便跨数据源的数据交换的方法的流程图。
图8是方便跨数据源的数据交换的方法的流程图。
图9是提供异步性和最终一致性的方法的流程图。
图10是示出用于本公开各方面的合适操作环境的示意性框图。
具体实施方式
下面的详述通常针对用于分布式计算的电子表格模型。构建使用异步性且最终一致性的分布式应用是困难的,且对于大多数程序开发者来说是困难且不自然的,因为需要理解所有种类的低层细节和机制来组合数据源。然而,大多数开发者对于用于异步性和最终一致性计算的计算化范例,也即电子表格,都已经很熟悉。在电子表格中,可以依据用户输入异步地改变单元格,这会触发函数的重新计算,因而导致其它单元格的改变。尽管如此,电子表格将最终聚合为一稳定状态。
如在此所述,将电子表格的范例概括并应用于任意且分布式数据源,所述数据源包括关系型(例如SQL)和非关系型(例如NoSQL、coSQL)以及基于推和拉的数据交互。可以相对于这样的任意数据源指定函数以产生数据组合或混搭,例如通过全局异步且最终一致的计算。因此,用于分布式计算的电子表格模型实质性地减少了与分布式应用的开发相关联的负担,这些负担尤其包括异步性和最终一致性。
现在参考附图更详细地描述本公开的各个方面,在全部附图中用相似的标记来指示相似或相应的元素。然而应该理解,附图及其相关详细描述不旨在将所要求保护的主题限于所公开的具体形式。相反,其意图是覆盖落在所要求保护主题的精神和范围之内的所有修改、等价物和替换的方案。
首先参考图1,示出了分布式计算系统100。系统100包括第一数据源110和第二数据源120以及适配器组件130。第一数据源110和第二数据源120可以是功能上耦合的分布式数据源或换句话说是流。这样,第一数据源110和第二数据源120可以形成简单的混搭,其中,跨数据源组合数据以产生新的数据。在此,第二数据源120功能上依赖于第一数据源110,如从第一数据源110到第二数据源120的箭头所示。换句话说,第二数据源120的一个或多个值或元素可以作为来自第一数据源110的数据的函数被生成。例如,如果函数是简单的加1(例如f(x)=x+1),在第二数据源120中封装的值将是第一数据源110递增1的值。而且,第一数据源110的值可以异步地改变,并且因此,可以重新计算第二数据源120的值以反映这样的改变。
简要地参考图2,更详细地示出示例性的数据源210,包括输入组件212、计算组件214以及输出组件216。输入组件212能够接收、检索或以其它方式获得或取得数据,所述数据包括如在此后将描述的由适配器提供的数据。计算组件214可以作为至少输入数据的函数来计算某个结果或产生新的数据(例如单个值、值的流……)。输出组件216被配置为提供(例如推)数据或以其它方式使得数据可用(例如拉),所述数据包括输入数据或在涉及计算时的计算的结果。当然,示例性数据源210的值不需要被全部计算,并且如果它是一个经计算的值,这样的计算也不需要在数据源210本身之内发生。
换言之,示例性数据源可以按类似于电子表格单元格的方式操作,所述方式包括接受输入、基于相关联的函数计算值以及可选地担当到一个或多个其它单元格的输入。然而,在此,如同电子表格单元格的情况,示例性数据源210不需要被限制为数字或本地计算。
返回图1,第一数据源110和第二数据源120可以是任意数据源。换句话说,源可以支持各种数据模型(例如关系型的、非关系型的……)以及基于如何获取数据(例如基于推的、基于拉的)的数据分类。这样,分布式计算系统100一般化常规电子表格模型,其中,单元格可以是任意的数据源。而且,可以在任意的数据模型之间发生交互。例如,可以在关系型数据库上实现第一数据源110,同时在非关系型数据库(例如键值存储、NoSQL、SQL)上实现第二数据源120。适配器组件130可以被配置为方便在第一数据源110和第二数据源120之间供应数据,其中,所述源不同地与数据交互。
图3A和3B分别图形化地描述了数据的两个分类,即基于推的数据和基于拉的数据,以帮助对本主题公开的方面的清楚理解。图3A示出了随时间改变的连续的数据流300。例如,连续的数据流300可以表示温度或潮位。为了取得数据,可以以系统的频率来采样连续的数据流300,换句话说,可以在不同的时间从连续的数据流300中拉取数据。所拉取的数据310被表示为各种大小的圆圈,圆圈的大小指示了在特定时间点处数据的值(从左向右流)。图3B描述了从一个或多个源230拉取的、流传送的、或以其它方式提供的一系列异步事件220。例如,可以以这种方式来提供股票价格信息或操作系统警报。当然,一些数据源可以被配置为处理基于推或基于拉的数据交互之一而不是两个都处理。因此,相对于组合数据源会产生问题。
图1的适配器组件130可以用于在基于推和基于拉的数据源之间进行转换。具体而言,适配器组件130可以被具体化为图4A的推-拉适配器410或图4B的拉-推适配器420。如名字所暗示的,推-拉适配器410可以获取或以其它方式接收推数据,并且允许数据依靠拉机制被主动检索。特别地,推-拉适配器允许数据排成队列并随后从队列中拉出,例如基于“GetNext”或类似指令。例如,SMS(短消息服务)消息的流可以被订阅,并且,可以缓冲结果直到一个实体请求下一值。相对地,拉-推适配器420可以周期性地(例如每十分钟)从一个源拉取(换句话说是主动检索)数据,并将该数据推送(或换言之发送)到另一源。例如,可以周期性地采样RSS(真正简单聚合)订阅源,并且,当检测到改变时,可以将结果发布到基于推的流。
与传统的电子表格不同的是,根据在此公开的主题的实施例,数据源可以是完整合成的。出于有助于对这个方面的清楚理解的目的,在图5中示出了示例性数据源500,该数据源由多个其它数据源510、512、514和520构成。如所示,数据源500是两个嵌入或嵌套的数据源510和520。在电子表格的上下文中,这可以对应于将电子表格封装为其它电子表格。数据源510和520被链接在一起,使得数据源520可以接收来自数据源510的输入,类似于将一个电子表格链接到另一个电子表格。而且,数据源510由也被链接在一起的数据源512和数据源514构成,然而,在此,链接是双向的,这指示了数据源514使用了由数据源512提供的数据,而数据源512使用由数据源514提供的数据。换句话说,存在循环。而且,在特定数据源不具有合适形式的情况下,它可以被导入或改编并馈送给该基于电子表格的数据源世界。类似地,来自数据源的数据可以被导出到替换形式以便利于在该世界之外使用。
从全局层次来说,数据源(例如由图5所提供的那些数据源)的组合是异步的(例如独立于程序控制流)且最终是一致性的。这是电子表格模型的一般化,它是异步地(例如用户的单元格修改,依赖单元格更新)改变,但在传播改变之后,该电子表格从整体上看是最终一致性的。例如,用户可以改变对应于产品的零件的价格的单元格的值,所述改变随后可以被传播以借助于相关联的函数来改变通过将所有的零件的费用加起来表示产品的总费用的单元格。另外,如果存在循环,可以通过将循环的数目限制在某个限定数目(例如100个循环)来人为造就数据源或数据源集的一致性。而且,可以使用明确的重新计算指令来强迫更新并移动到新的一致性状态。
在本地层次上,计算可以是同步且事务性的。为了便于清楚理解,考虑一个场景,在其中,数据源“C”作为数据源“A”和“B”的总和被计算,并且,初始数据源“A”具有值“2”,而数据源“B”具有值“1”,并且这样,数据源“C”具有计算的值“3”。当数据源“A”从“2”改变到“3”时,数据源“C”被重新计算为“4”。然而,在完成对应于相对于数据源“A”的改变的第一计算之前,数据源“B”可以例如从“1”改变到“4”。在这种情况下,改变可以被同步执行,或换句话说,以它们发生的顺序执行。而且,改变可以作为事务执行,并且这样维护“原子性”、“一致性”、“隔离性”和“持久性”的ACID属性。换言之,修改是完全起作用的或完全不起作用的,事务将数据源从一种一致状态成为另一种一致状态,其它操作直到已经完成事务后才能访问已经由事务修改的数据,并且,提交的事务在存在系统故障时是可以恢复的。这样,在数据源“A”中的改变的影响首先被传播并且随后传播在数据源“B”中的改变的影响。换句话说,数据源“C”最初是“3”,当数据源“A”从“2”变为“3”时,它变成“4”,并且当数据源“B”从“1”变为“4”时,它变成“7”。
暂时再次回到全局层面,注意,使用如所述的异步且最终一致性的模型具有下述益处:异步返回,但读取操作可以返回旧的或失时效的值。如果这是个问题,作为替换,可以使用阻塞写,其中,只有当写已经被传播到整个数据源的网络中时所述写才成功,这样,后续的读将返回最新或当前的值。
作为电子表格模型的概括化的一部分,可以将单元格提升为或想成更高的抽象层处的数据流,而不是特定的数字值。而且,这些数据流可以是看得见的。换句话说,不是将单元格作为“整数”类型,所述单元格可以是“IObservable<Integer>”类型,如在例如
Figure BSA00000615389300061
和Visual
Figure BSA00000615389300062
的编程语言所定义的,例如,这样,无论何时出现相对于一个流的改变,可以基于所述改变自动重新计算依赖流(例如“IO<int>=IO<int>+IO<int>”)。更进一步,语言集成查询(LINQ)系统或基础架构支持使用看得见的或类似类型或界面,语言集成查询可以被用于指定函数,所述函数在某种意义上将数据源粘合在一起。
LINQ系统能够允许程序员使用方便且声明性的简写查询句法(例如象SQL)来指定语言集成查询或查询表达式,以便于在编程语言(例如,
Figure BSA00000615389300071
Visual
Figure BSA00000615389300072
)内部的查询说明。更具体而言,可以提供查询运算符,它们映射到较低层语言构造或原语,例如可以通过例如编译器被注入程序的方法和拉姆达表达式。提供用于各种运算(例如,过滤、投影、连接、分组、排序……)族的查询运算符,并且查询运算符可包括但不限于映射到实现这些名称所表示的运算符的方法的“where”和“select”运算符。作为示例,用户可以以诸如“from n innumbers where n<10select n”的形式指定查询,其中“numbers”是数据源并且查询从数据源返回小于10的整数。此外,可以以各种方式组合查询运算符以生成任意复杂度的查询。而且,LINQ系统可以允许指定这样的查询,并且随后便利于在任意数据源上执行,所述任意数据源包括例如但不局限于关系型存储,例如SQL数据库和非关系型存储,例如NoSQL数据库(诸如键值存储)或coSQL(例如SQL关系型数据库模型的数学对偶)。因此,生成组合不同种类的数据源或换句话说产生混搭的应用是非常容易的,因为程序员不需要理解所有种类的低层细节和机制。
参考若干组件之间的交互已经描述了上述系统、体系结构、环境等。应该理解,这样的系统和组件可以包括这些组件或其中指定的子组件,某些指定的组件或子组件,和/或附加的组件。子组件也可以被实现为在通信上被耦合到其他组件而不是被包括在父组件中的组件。此外,一个或多个组件和/或子组件可以结合成提供聚集功能的单个组件。系统、组件、和/或子组件之间的通信可以根据推送(push)和/或拉取(pull)模型来实现。各组件也可以与一个或多个其他组件进行交互,出于简要考虑在此未具体描述该组件但本领域的技术人员均已知。
此外,以上公开系统以及以下方法的各个部分可以包括或包含基于人工智能、机器学习或知识或规则的组件、子组件、进程、装置、方法或机制(例如,支持向量机、神经网络、专家系统、贝叶斯信任网络、模糊逻辑、数据融合引擎、分类器等)。这样的组件和其它组件可以自动化执行某些机制或进程,由此使得系统和方法的各部分更为自适应、高效及智能。作为示例而不是限制,相对于数据存储和计算组件214指定的函数可以使用这样的机制。
考虑到以上描述的示例性系统,参考图6-9的流程图将可以更好地理解依照所公开的主题实现的方法。尽管为了说明简洁起见,作为一系列框示出和描述了方法,但是,应该理解,所要求保护的主题不仅限于所描述框的顺序,一些框可以按与此处所描绘和描述的不同的顺序进行和/或与其它框并发地进行。此外,并非全部所示出的框都是实现下面所描述的方法所必需的。
参考图6,示出了分布式计算的方法600。在附图标记610处,获取来自至少第一数据源的数据。例如,第一数据源可以对应于数据流,其中所获取的数据对应于最新或最当前的数据,例如当前的温度或最新的股票价格。在标号620处,至少基于第一数据源触发相对于第二数据源的计算。换句话说,第二数据源依赖于第一数据源且作为所述至少第一数据源的函数变化。而且,所述计算可以作为事务同步执行,从而保留ACID属性。在附图标记630处,展示第二数据源以例如供其它依赖数据源使用。
图7说明了便于跨数据源的数据交换的方法700。在附图标记710处,例如从第一数据源接收数据。在720,将所接收的数据存储在例如队列中。在参考730处,作出是否有对例如来自第二数据源的数据的请求的确定。如果在730处不存在对数据的当前请求(“否”),则方法700循环回附图标记710,在那方法继续接收数据并在720随后保存数据。然而,如果存在对数据的请求(“是”),在标号740处将数据提供给作出请求的源,并且方法循环回附图标记710。换句话说,从第一源推出的数据排成队列,并且随后由第二数据源(即请求源)将其从队列中拉出。根据一个实施例,所述请求和提供数据的动作可以是递增的,这样,例如从先进先出(FIFO)队列的前部提供单个值。
图8是便于跨数据源的数据交换的方法800的流程图。在附图标记810处,请求来自第一数据源的数据。在820,作出是否有任何数据可用的确定。例如,所述确定可以注意自上次请求以来是否有任何新的数据可用。如果不存在可用的数据(“否”),方法800在840继续,在那方法等待一时间段。然而,如果数据可用(“是”),方法800前进到附图标记830,在那,将可用的数据提供给第二源。换句话说,以周期性间隔从第一源拉取数据,并将其推送到第二源。在等待一个时间段之后,在840,方法800在附图标记810继续,在那,再次请求来自第一源的数据。
图900是提供最终一致性的方法的流程图。在附图标记910,例如基于对依赖数据源的改变重新计算与两个或更多数据源相关联的数据。在一些情况下,存在循环,这样的重新计算可以在运转中设定无尽(non-terminating)的重新计算。例如,如果“A”依赖于“B”且“B”依赖于“A”,那么,对“A”的改变将引起连续的重新计算,因为,对“A”的改变引起“B”也改变,而对“B”的改变随后再次引起“A”改变。在附图标记920,作出是否出现循环的最大数目的检查。如果还没有达到循环的最大数目(“否”),方法900可以返回附图标记910。或者,方法900可以在达到循环的最大数目(“是”)时终止。在这种方式中,可以人为确保最终的一致性。而且,可以明确启动方法900来提供进一步的更新和后续一致性。
此处使用的术语“组件”和“系统”及其各种形式旨在表示与计算机相关的实体,其可以是硬件、硬件和软件的组合、软件、或执行中的软件。例如,组件可以是但不限于是,在处理器上运行的进程、处理器、对象、实例、可执行程序、执行的线程、程序和/或计算机。作为说明,在计算机上运行的应用和计算机都可以是组件。一个或多个组件可驻留在进程和/或执行的线程内,并且组件可位于一个计算机上和/或分布在两个或更多的计算机之间。
在本文中使用的词语“示例性”或其各种形式意味着用作示例、实例或说明。在此被描述为“示例性”的任何方面或设计并不一定要被解释为相比其它方面或设计更优选或有利。此外,各示例只是出于清楚和理解的目的来提供的并且并不意味着以任何方式限制或约束所要求保护主题或本发明的相关部分。可以理解,本来可呈现不同范围的多个附加或替换示例,但出于简明的目的已被省略。
术语“coSQL”旨在意指特定的非关系型、键值数据模型,它是关系型的或SQL数据模型的数学对偶。更具体地,“coSQL”对应于特定的“NoSQL”数据模型,当向其应用数学对偶时,导出关系型或SQL数据模型。
如此处所使用,术语“推论”或“推断”通常指的是从经由事件和/或数据捕捉的一组观察结果来推理或推断系统、环境、和/或用户的状态的过程。可以使用推断来标识特定上下文或动作,也可以生成例如状态上的概率分布。推断可以是概率性的,即,基于对数据和事件的考虑,计算在感兴趣状态上的概率分布。推断也可以是指用于从一组事件和/或数据构成较高级别的事件的技术。这样的推断导致从一组观察到的事件和/或存储的事件数据构建新的事件或动作,不管事件在时间上是否紧密相关,以及事件和数据是来自一个还是多个事件和数据源。可采用各种分类方案和/或系统(例如,支持向量机、神经网络、专家系统、贝叶斯信任网络、模糊逻辑、数据融合引擎……)来执行关于所要求保护主题的自动化和/或推断的动作。
而且,对于在详细描述或权利要求书中使用术语“包括”、“包含”、“具有”、“含有”或其它形式的变型而言,这样的术语旨在以类似于术语“包括”的方式体现包含性,如同“包括”在用作权利要求书中的过渡词时所解释的那样。
为了为所要求保护主题提供上下文,图10以及以下讨论旨在提供对其中可以实现本主题的各方面的合适环境的简要、概括描述。然而,合适的环境只是示例并且并非旨在对使用范围或功能提出任何限制。
尽管能够在可以在一台或多台计算机上运行的程序的计算机可执行指令的一般上下文中描述以上公开的系统和方法,但是,本领域的技术人员将认识到,各方面也可以与其他程序模块等相结合地实现。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件和数据结构等。此外,本领域技术人员可以理解,上述系统和方法可用各种计算机系统配置实现,包括单处理器、多处理器或多核处理器计算机系统、小型计算设备、大型计算机、以及个人计算机、手持式计算设备(例如,个人数字助理(PDA)、电话、手表……)、基于微处理器或可编程消费者或工业电子设备等。各方面也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实现。然而,所要求保护主题的某些方面,如果不是所有方面的话,可以在独立计算机上实施。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中的一个或两者中。
参考图10,示出了示例通用计算机1010或计算设备(例如,台式机、膝上型计算机、服务器、手持式设备、可编程消费或工业电子产品、机顶盒、游戏系统……)。计算机1010包括一个或多个处理器1020、存储器1030、系统总线1040、大容量存储1050、以及一个或多个接口组件1070。系统总线1040与至少上述系统组件通信地耦合。然而,可以理解,在其最简单的形式中,计算机1010可包括耦合到存储器1030的一个或多个处理器1020,该一个或多个处理器1020执行存储在存储器1030中的各种计算机可执行动作、指令和或组件。
处理器1020可以用通用处理器、数字信号处理器(DSP)、应用程序专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑设备、分立门或晶体管逻辑、分立硬件组件或被设计为执行此处描述的功能的其任意组合来实现。通用处理器可以是微处理器,但在替换方案中,处理器可以是任何处理器、控制器、微控制器、或状态机。处理器1020还可被实现为计算设备的组合,例如DSP和微处理器的组合、多个微处理器、多核处理器、结合一个DSP核的一个或多个微处理器、或任何其它这种配置。
计算机1010可包括各种计算机可读介质或以其他方式与各种计算机可读介质交互以便于控制计算机1010来实现所要求保护主题的一个或多个方面。计算机可读介质可以是能由计算机1010访问的任何可用介质,并包含易失性和非易失性介质以及可移动、不可移动介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。
计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据这样的信息的任意方法或技术来实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于,存储器设备(例如,随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)……)、磁存储设备(例如,硬盘、软盘、磁带盒、磁带……)、光盘(例如,紧致盘(CD)、数字多功能盘(DVD)……)、以及固态设备(例如,固态驱动器(SSD)、闪存驱动器(例如,卡、棒、键驱动器……)……)、或者可用于存储所需信息并且可由计算机1010访问的任何其它介质。
通信介质通常以诸如载波或其他传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据,并包括任何信息传送介质。术语“已调制数据信号”是指具有以在信号中编码信息的方式被设定或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、RF、红外及其他无线介质之类的无线介质。上面各项中的任何项的组合也应该包括在计算机可读介质的范围内。
存储器1030和大容量存储1050是计算机可读存储介质的示例。取决于计算设备的确切配置和类型,存储器1030可以是易失性的(例如RAM)、非易失性的(例如ROM、闪存……)或是两者的某种组合。作为示例,基本输入/输出系统(BIOS),包括诸如在启动期间在计算机1010内的元件之间传输信息的基本例程,可被存储在非易失性存储器中,而易失性存储器可担当外部高速缓存存储器以便于处理器1020的处理等。
大容量存储1050包括相对于存储器1030用于存储大量数据的可移动/不可移动、易失性/非易失性计算机存储介质。例如,大容量存储1050包括但不限于,诸如磁盘或光盘驱动器、软盘驱动器、闪存存储器、固态驱动器、或记忆棒的一个或多个设备。
存储器1030和大容量存储1050可包括或其中存储有操作系统1060、一个或多个应用1062、一个或多个程序模块1064和数据1066。操作系统1060用于控制和分配计算机1010的资源。应用1062包括系统和应用软件中的一个或两个,并且可通过存储在存储器1030和/或大容量存储1050中的程序模块1064和数据1066来利用操作系统1060对资源的管理以执行一个或多个动作。因此,应用1062可根据由此提供的逻辑来将通用计算机1010变成专用机器。
所要求保护主题的全部或各部分可以使用产生控制计算机以实现所公开功能的软件、固件、硬件或其任意组合的标准编程和/或工程技术来实现。作为示例而非限制,分布式计算系统100或其一部分可以是应用1062或形成应用1062的一部分,并且包括一个或多个模块1064以及存储在存储器和/或大容量存储1050中的数据1066,在由一个或多个处理器1020执行所述数据时可实现其功能性。
根据一个特定实施例,处理器1020可与片上系统(SOC)或在单个集成电路基座上包括或换言之集成硬件和软件的类似体系结构相对应。此处,处理器1020可包括至少与处理器1020和存储器1030相似的一个或多个处理器以及存储器等。常规处理器包括最少量的硬件和软件并且广泛依赖于外部硬件和软件。作为对比,处理器的SOC实现更强大,因为它将硬件和软件嵌入其中以能够用最少的硬件和软件或不依赖于外部硬件和软件来启用特定功能。例如,分布式计算系统100和/或相关联的功能可被嵌入到SOC体系结构中的硬件内。
计算机1010还包括通信地耦合到系统总线1040并方便与计算机1010的交互的一个或多个接口组件1070。作为示例,接口组件1070可以是端口(例如,串行、并行、PCMCIA、USB、火线……)或接口卡(例如,声音、视频……)等等。在一个示例实现中,接口组件1070可被具体化为用户输入/输出接口,该用户输入/输出接口使得用户能够通过一个或多个输入设备(例如,诸如鼠标的指向设备、跟踪球、指示笔、触摸垫、键盘、话筒、操纵杆、游戏垫、圆盘式卫星天线、扫描仪、相机、其他计算机……)来将命令和信息输入到计算机1010中。在另一示例实现中,接口组件1070可被具体化为输出外围接口,该输出外围接口向显示器(例如,CRT、LCD、等离子……)、扬声器、打印机和/或其它计算机等提供输出。此外,接口组件1070可被具体化为网络接口,该网络接口使得能够诸如通过有线或无线通信链路与其他计算设备(未示出)通信。
以上所已经描述的内容包括所要求保护主题的各方面的示例。当然,出于描绘所要求保护主题的目的而描述每一个可以想到的组件或方法的组合是不可能的,但本领域内的普通技术人员应该认识到,所要求保护主题的许多进一步的组合和排列都是可能的。从而,所公开的主题旨在涵盖落入所附权利要求书的精神和范围内的所有这样的变更、修改和变化。

Claims (10)

1.一种分布式计算的方法,包括:
采用被配置来执行存储在存储器(1030)中的计算机可执行指令以执行以下动作的至少一个处理器(1020):
触发作为第二数据源的函数的相对于第一数据源的计算,所述第一数据源和第二数据源是分布式数据源。
2.如权利要求1所述的方法,其特征在于,进一步包括:触发作为所述第一数据源的函数的所述第二数据源的计算。
3.如权利要求2所述的方法,其特征在于,进一步包括:将相对于所述第一数据源和第二数据源的计算限于有限数量的循环。
4.如权利要求1所述的方法,其特征在于,进一步包括:从所述第二数据源拉取数据,并将所述数据推送到所述第一数据源。
5.如权利要求1所述的方法,其特征在于,进一步包括:捕捉由所述第二数据源推送的数据,并且使得所述数据由所述第一数据源检索。
6.一种分布式计算的系统,包括:
耦合到存储器(1030)的处理器(1020),所述处理器(1020)被配置来执行存储在所述存储器(1030)中的以下计算机可执行组件:
第一组件(214),被配置成作为对第二数据源的值的改变的函数来计算第一数据源的值,其中,所述第一数据源和第二数据源是分布式数据源。
7.如权利要求6所述的系统,其特征在于,所述第一组件被配置成作为所述改变的函数来事务性地计算所述第一数据源的值。
8.如权利要求6所述的系统,其特征在于,所述第一数据源或所述第二数据源中的至少一个被键值数据模型所支持。
9.如权利要求6所述的系统,其特征在于,进一步包括适配器组件,被配置成从所述第二数据源接收值并基于请求将该值提供给所述第一数据源。
10.如权利要求6所述的系统,其特征在于,进一步包括适配器组件,被配置成从所述第二数据源检索值并将该值提供给所述第一数据源。
CN201110364417.2A 2010-11-03 2011-11-02 用于分布式计算的电子表格模型 Active CN102541993B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/939,139 2010-11-03
US12/939,139 US9952893B2 (en) 2010-11-03 2010-11-03 Spreadsheet model for distributed computations

Publications (2)

Publication Number Publication Date
CN102541993A true CN102541993A (zh) 2012-07-04
CN102541993B CN102541993B (zh) 2018-01-30

Family

ID=45998024

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110364417.2A Active CN102541993B (zh) 2010-11-03 2011-11-02 用于分布式计算的电子表格模型

Country Status (2)

Country Link
US (1) US9952893B2 (zh)
CN (1) CN102541993B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9141681B2 (en) * 2012-11-29 2015-09-22 Red Hat, Inc. Creating a column family in a database
CN103902698B (zh) * 2014-03-31 2018-04-13 北京皮尔布莱尼软件有限公司 一种数据存储系统和存储方法
US9569418B2 (en) * 2014-06-27 2017-02-14 International Busines Machines Corporation Stream-enabled spreadsheet as a circuit
US10216494B2 (en) 2016-12-03 2019-02-26 Thomas STACHURA Spreadsheet-based software application development
US10540153B2 (en) 2016-12-03 2020-01-21 Thomas STACHURA Spreadsheet-based software application development
US11726753B2 (en) 2016-12-03 2023-08-15 Thomas STACHURA Spreadsheet-based software application development
US10742442B2 (en) 2017-10-21 2020-08-11 Mordechai Teicher Cluster of smart devices operable in hub-based and hub-less modes
US10620798B2 (en) 2017-10-21 2020-04-14 Mordechai Teicher Autonomously cooperating smart devices
CA3216654A1 (en) * 2017-12-03 2019-06-06 Thomas Stachura Spreadsheet-based software application development

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6631497B1 (en) * 1999-07-19 2003-10-07 International Business Machines Corporation Binding data from data source to cells in a spreadsheet
CN1211746C (zh) * 2002-06-26 2005-07-20 联想(北京)有限公司 嵌入式系统与外部数据库进行数据交换的方法
CN1758247A (zh) * 2004-06-01 2006-04-12 微软公司 指定工作簿的行列作为数据源的方法、系统和设备
US20060095447A1 (en) * 2004-02-19 2006-05-04 Microsoft Corporation Offline multi-table data editing and storage
CN1794640A (zh) * 2004-12-20 2006-06-28 微软公司 来自服务器的实时数据
US20060212791A1 (en) * 2005-03-15 2006-09-21 Microsoft Corporation Method and computer-readable medium for providing spreadsheet-driven key performance indicators
CN101438276A (zh) * 2006-05-08 2009-05-20 微软公司 带有依赖性等级的多线程电子表格处理
CN101694665A (zh) * 2009-10-27 2010-04-14 中兴通讯股份有限公司 一种异构数据源数据查询方法及装置
US7761782B1 (en) * 2004-10-26 2010-07-20 Xsb, Inc. User programmable deductive spreadsheet apparatus which supports solutions to circular definitions

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5920697A (en) * 1996-07-11 1999-07-06 Microsoft Corporation Method of automatic updating and use of routing information by programmable and manual routing information configuration based on least lost routing
US6226694B1 (en) * 1998-04-29 2001-05-01 Hewlett-Packard Company Achieving consistency and synchronization among multiple data stores that cooperate within a single system in the absence of transaction monitoring
US20010047372A1 (en) * 2000-02-11 2001-11-29 Alexander Gorelik Nested relational data model
US7177870B2 (en) * 2001-05-30 2007-02-13 Accenture Global Services Gmbh Method of data block aggregation
US7047484B1 (en) * 2001-10-18 2006-05-16 Microsoft Corporation Method, system, and apparatus for providing access to asynchronous data in a spreadsheet application program
US7200720B1 (en) * 2001-12-28 2007-04-03 Oracle International Corporation System and method for efficiently performing memory intensive computations including a bidirectional synchronization mechanism for maintaining consistency of data
US20040044753A1 (en) * 2002-02-27 2004-03-04 Lucida, Inc. Method and system for dynamic business management of a network
US7203924B2 (en) * 2002-04-30 2007-04-10 Microsoft Corporation Behavioral analysis for message-passing application programs
US7301971B2 (en) * 2003-08-11 2007-11-27 Eastman Kodak Company Method and apparatus for continuous synchronization of a plurality of asynchronous data sources
US20080086716A1 (en) * 2003-09-04 2008-04-10 Lockheed Martin Corporation Method and apparatus for information display with intermediate datasource access
US7661096B2 (en) * 2004-02-13 2010-02-09 Microsoft Corporation Interaction with nested and non-nested streams
EP1740597A4 (en) * 2004-02-18 2009-02-18 Clark Yennie DATABASE MANAGEMENT SYSTEM INCLUDING A TIME ADDRESS
US7225189B1 (en) * 2004-02-19 2007-05-29 Microsoft Corporation Data source write back and offline data editing and storage in a spreadsheet
US7359908B2 (en) * 2004-12-06 2008-04-15 International Business Machines Corporation Techniques for managing interdependent data objects
US20060174170A1 (en) * 2005-01-28 2006-08-03 Peter Garland Integrated reporting of data
US7984371B2 (en) * 2005-02-18 2011-07-19 Andrew Joseph Zdenek Method and system for the graphical modeling of data and calculations of a spreadsheet
US7523444B2 (en) * 2005-06-27 2009-04-21 Microsoft Corporation Managed automation programming model
US20070038666A1 (en) * 2005-08-15 2007-02-15 Microsoft Corporation Independent explicit interface implementation
BRPI0617874A2 (pt) * 2005-10-14 2011-08-09 Carrier Web Llc sistema e método para gerenciamento de recursos móveis em tempo real
US8285677B2 (en) * 2006-06-30 2012-10-09 International Business Machines Corporation Method and apparatus for propagating tables while preserving cyclic foreign key relationships
US7657505B2 (en) * 2007-01-19 2010-02-02 Microsoft Corporation Data retrieval from a database utilizing efficient eager loading and customized queries
US7996786B2 (en) * 2007-03-05 2011-08-09 Microsoft Corporation Dynamically rendering visualizations of data sets
US8108848B2 (en) * 2007-08-15 2012-01-31 Microsoft Corporation Automatic and transparent memoization
US20100095197A1 (en) * 2008-10-13 2010-04-15 Sap Ag System and method for dynamic content publishing

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6631497B1 (en) * 1999-07-19 2003-10-07 International Business Machines Corporation Binding data from data source to cells in a spreadsheet
CN1211746C (zh) * 2002-06-26 2005-07-20 联想(北京)有限公司 嵌入式系统与外部数据库进行数据交换的方法
US20060095447A1 (en) * 2004-02-19 2006-05-04 Microsoft Corporation Offline multi-table data editing and storage
CN1758247A (zh) * 2004-06-01 2006-04-12 微软公司 指定工作簿的行列作为数据源的方法、系统和设备
US7761782B1 (en) * 2004-10-26 2010-07-20 Xsb, Inc. User programmable deductive spreadsheet apparatus which supports solutions to circular definitions
CN1794640A (zh) * 2004-12-20 2006-06-28 微软公司 来自服务器的实时数据
US20060212791A1 (en) * 2005-03-15 2006-09-21 Microsoft Corporation Method and computer-readable medium for providing spreadsheet-driven key performance indicators
CN101438276A (zh) * 2006-05-08 2009-05-20 微软公司 带有依赖性等级的多线程电子表格处理
CN101694665A (zh) * 2009-10-27 2010-04-14 中兴通讯股份有限公司 一种异构数据源数据查询方法及装置

Also Published As

Publication number Publication date
US20120110428A1 (en) 2012-05-03
CN102541993B (zh) 2018-01-30
US9952893B2 (en) 2018-04-24

Similar Documents

Publication Publication Date Title
CN102541993A (zh) 用于分布式计算的电子表格模型
US11657056B2 (en) Data serialization in a distributed event processing system
Sakr et al. Big data 2.0 processing systems
CN102508852B (zh) 数据模型对偶化
CN102567457A (zh) 对象模型到键值数据模型的映射
CN102541992A (zh) 用于高效地查询数据库的同态定理
CN102708121A (zh) 异构源上的动态分布式查询执行
AU2014233672A1 (en) System for metadata management
CN111061739B (zh) 海量医疗数据的入库方法及装置、电子设备、存储介质
Sjardin et al. Large scale machine learning with Python
Subotic et al. Parallelized cuckoo search algorithm for unconstrained optimization
CN102693263A (zh) 数据编程环境
Lehmann et al. Managing geospatial linked data in the GeoKnow project
Luu Beginning Apache Spark 2: with resilient distributed datasets, Spark SQL, structured streaming and Spark machine learning library
Kale Big data computing: a guide for business and technology managers
US20230259518A1 (en) Scalable metadata-driven data ingestion pipeline
Hussein Using hadoop technology to overcome big data problems by choosing proposed cost-efficient scheduler algorithm for heterogeneous hadoop system (BD3)
Nandi Spark for Python Developers
Krishnan Building big data applications
US8713015B2 (en) Expressive grouping for language integrated queries
Dhanda Big data storage and analysis
Gamble et al. Formal verification of pure production system programs
Pokorny Databases in the 3rd millennium: trends and research directions
Ginde et al. Big Data Acquisition, Preparation, and Analysis Using Apache Software Foundation Tools
Jiang et al. APCNN: Explore Multi-Layer Cooperation for CNN Optimization and Acceleration on FPGA

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1170578

Country of ref document: HK

ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150728

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

Effective date of registration: 20150728

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

GR01 Patent grant
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1170578

Country of ref document: HK