CN102436485B - 动态拆分多承租人数据库 - Google Patents

动态拆分多承租人数据库 Download PDF

Info

Publication number
CN102436485B
CN102436485B CN201110340455.4A CN201110340455A CN102436485B CN 102436485 B CN102436485 B CN 102436485B CN 201110340455 A CN201110340455 A CN 201110340455A CN 102436485 B CN102436485 B CN 102436485B
Authority
CN
China
Prior art keywords
database
content
lessee
split
fractionation
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.)
Active
Application number
CN201110340455.4A
Other languages
English (en)
Other versions
CN102436485A (zh
Inventor
J·M·加希尔
A·霍普曼
E·福克斯
B·马列
Z·罗森菲尔德
M·K·温德尔
P·西梅克
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 CN102436485A publication Critical patent/CN102436485A/zh
Application granted granted Critical
Publication of CN102436485B publication Critical patent/CN102436485B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/273Asynchronous replication or reconciliation
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及动态拆分多承租人数据库。在线服务包括受管理的数据库,该数据库包括一个或多个承租人(例如,消费者、用户)。多承租人数据库可在两个或更多数据库之间拆分,同时被拆分的数据库继续处理请求。例如,在内容被移动的同时,web服务器继续请求对该数据库进行操作。在移动内容之后,承租人流量(tenant traffic)被自动重定向到含有该承租人的内容的数据库。

Description

动态拆分多承租人数据库
技术领域
本发明涉及动态拆分多承租人数据库。
背景技术
基于web的服务包括位于web服务器上的文件和存储于数据库中的数据。例如,可以有大量位于不同网络中的服务器,以处理针对在线服务的流量。拆分在线服务中的数据库可能导致在一段时间内服务不可用。对在线服务而言,拆分过程可能给消费者带来严重干扰。
发明内容
提供本发明内容以便以简化形式介绍将在以下的具体实施方式中进一步描述的一些概念。本发明内容并非旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
多承租人数据库可能需要在两个或更多数据库之间拆分,同时被拆分的数据库继续处理请求。例如,在内容被移动的同时,web服务器继续请求对该数据库进行操作。在移动内容之后,承租人流量(tenant traffic)被自动重定向到含有该承租人的内容的数据库。
附图说明
图1示出了用于管理与诸如内容管理服务之类的在线服务相关联的网络的云管理器系统;
图2示出了包括管理器和相关联的数据库的云管理器;
图3示出了存储在数据库的行内的示例性作业记录;
图4示出了用于网络的示例系统,该网络包括用于在线服务的前端和后端服务器;
图5示出计算机的计算机体系结构;
图6示出用于控制和管理多承租人数据库的拆分的系统;以及
图7示出用于拆分在线服务中的多承租人数据库的过程。
具体实施方式
现将参考附图来描述各实施例,在附图中类似的标号代表类似的元素。
一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构和其他类型的结构。也可使用其他计算机系统配置,包括手持式设备、多处理器系统、基于微处理器或可编程消费电子产品、小型计算机、大型计算机等等。也可使用在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境。在分布式计算环境中,程序模块可位于本地和远程存储器存储设备两者中。
图1示出了用于管理与在线服务相关联的网络的云管理系统。系统100示出了云管理器105,该云管理器105被连接到可能分布在世界各地的不同网络并对其进行管理。网络中的每个被配置成为一个或多个承租人(例如客户机、消费者)提供内容服务。这些网络可以被主存(host)在云服务内和/或户内(on-premises)数据中心内。云管理器105用于部署、配置和管理这些网络。云管理器被配置为通过可容忍间歇性网络故障的幂等的且异步的应用web服务应用编程接口(API)150来接收请求。
如所示的,云管理器105包括工作管理器110、机器管理器115、应用专用管理器120、脚本130以及诸如数据存储140(例如数据库)之类的中央储存库。未包括在所示管理器之一内的功能可以驻留在云管理器的某个其他位置。根据一个实施例,应用管理器120是SharePoint承租人管理器,该管理器包括SharePoint专用逻辑。
工作管理器110管理任务的执行,并且实现对较长时间运行的任务的调度和重试。工作管理器110启动存储在作业队列112中的作业并且跟踪运行中的作业。当已经流逝了预定的时间时,工作管理器110可以自动地取消任务并且执行与该任务相关的某些进一步处理。根据一个实施例,作业队列112中的任务由工作管理器110通过调用一个或多个脚本130来执行。例如,可以使用诸如微软的的脚本语言来对由工作管理器110执行的任务进行编程。每个脚本可以作为新进程运行。尽管将每个脚本作为新进程来执行可以具有相当高的CPU开销,但是该系统是可伸缩的,并且帮助为每次脚本执行确保干净的环境,加上在脚本完成时进行完全的清理。
机器管理器115被配置为管理网络(例如网络1、网络2、网络3)中的物理机器。一般而言,机器管理器115理解网络、物理机器、虚拟机(VM)、VM镜像(VHD)等等。机器管理器不必牢固绑定于网络内运行的特定服务,而是在“角色”方面跟踪网络中的各种组件。例如,可以通过API 150请求机器管理器115在网络3上部署具有版本12.34.56.78的类型为“Foo”的VM。响应于对云管理器105的请求,机器管理器115对位于网络3上的合适物理机器进行定位,并且根据与VM的角色相关联的VM镜像来配置VM。使用具有版本12.34.56.78的类型为Foo的VHD来配置物理机器,该VHD存储在诸如数据存储140的数据存储内。在网络内使用的镜像也可以存储在其他位置处,诸如用于所述网络中的一个或多个网络的本地数据共享中。可以运行脚本来执行VHD在物理机器上的安装以及用于执行任何部署后的配置。机器管理器115跟踪每个网络的机器配置。例如,机器管理器115可以跟踪VM的角色(VM的类型)、VM的状态(供应中(Provisioning)、运行中、已停止、已故障)、版本以及VM是否存在于给定场(farm)中(这隐含了其网络)。
脚本130被配置为存储将要执行以便既本地地为云管理器105执行工作又远程地在所述网络中的一个或多个网络上执行工作的脚本。脚本130中的一个或多个还可以存储在其他位置。例如,将在网络(例如网络1、网络2、网络3)上执行的脚本可以被本地地存储到该网络。这些脚本可用于许多不同目的。例如,这些脚本可以用于执行:对该网络中的一个或多个网络中的机器的配置,改变之前配置的机器上的设定,添加新的VM,添加新的数据库,将数据从一个机器移动到另一个,移动承租人,改变模式等。根据一个实施例,这些脚本是微软的脚本。也可以使用其他编程实施方式。例如,可以使用编译和/或前期绑定编程语言来实现该功能。然而,脚本是一种表达将要执行的任务中的许多个的相当精确的语言。用诸如C#的编程语言对其等价物进行编程将常常需要冗长得多的实施方式。脚本还被后期绑定,这意味着可以以多个版本的底层代码库为目标,而不必不断地链接到不同的接口DLL。使用PowerShell脚本将允许进程由云管理器105本地地启动,云管理器105进而可以启动远程机器(即,所附连的网络之一中的物理机器)上的进程。还可以使用其他技术来启动远程机器上的进程,诸如安全Shell(SSH)等。
云管理器105正在管理的应用专用信息由应用管理器120来执行。根据一个实施例,应用专用信息与微软有关。由此,应用管理器120被配置为了解SharePoint承租人、站点集合等。
每个网络可以被配置成用于承租人的专用网络和/或服务于一个以上客户机的多承租人网络。网络可以包括变化数目的物理机/虚拟机,物理机/虚拟机的配置在部署之后也变化。一般而言,只要未超过联网极限(例如,负载平衡器和网络交换机),网络就可以继续增长。例如,网络可以从十个服务器开始,并且之后扩充为一百个或更多个服务器。可以给网络内的物理机器分配类或类型。例如,这些机器中的某些机器可以是计算机器(用于web前端和应用服务器),而其他机器可以是与计算机器相比配备有更多存储的存储机器。根据一实施例,云管理器105用多个版本的镜像文件来配置网络内的机器。根据一实施例,场常常具有相同版本的镜像文件。
根据一个实施例,在网络内由云管理器系统100通过虚拟化机器并且管理该网络内部独立地行动的“场”来管理软件极限。每个网络可以包括一个或多个场(例如,参见网络1)。根据一个实施例,网络被认为是经网络负载平衡的机器的单个群集,这些机器向外部世界展示一个或多个VIP(虚拟IP)并且可以将流量(traffic)路由到网络内的任何机器。网络中的机器通常是紧耦合的,并且具有最小等待时间(即<1ms查验(ping)等待时间)。
场是用于对需要紧密绑定关系的应用进行协调的机器的基本分组。例如,内容场可以部署在每个网络内以用于诸如Microsoft的内容管理应用。一般而言,每一个场中的那组机器一起提供web服务和应用服务器功能。通常,场内的机器运行相同构建(build)的应用(即SharePoint)并且共享公共配置数据库以服务特定的承租人和站点集合。
场可以包含异构的虚拟机组。云管理器105在数据存储140内维护“场目标”,该场目标是每个场的每种角色的机器的目标数目。一些角色包括内容前端(Content Front End)、内容中央管理员(Content Central Admin)、内容计时器服务(Content Timer Service)、联合中央管理员(Federated Central Admin)、联合应用服务器(Federated App Server)等。例如,内容场是处理传入的消费者请求的基本SharePoint场。联合服务场包含可以跨场运行的诸如搜索和简档存储这样的SharePoint服务。场可以用于主存大容量公共因特网站点。某些场可以包含一组活动目录服务器和供应端口监控程序(Provisioning Daemon)。云管理器105自动地部署网络中的虚拟机和/或停用网络中的虚拟机,以帮助满足所定义的目标。这些场目标可以自动地和/或手动地来配置。例如,场目标可以响应于活动和容量需求的改变而改变。网络场-每个网络存在一个包含可以作为整个网络的资源容易地横向扩展的所有VM角色的网络场。
云管理器web服务API 150被设计为在可大规模伸缩的全局服务的上下文中工作。该API假定:任何网络请求可能在传送中失败和/或挂起。对云管理器105的调用被配置为是幂等的。换言之,可以对云管理器105进行多次相同的调用(只要参数是相同的)而不改变结果。
云管理器105被设计为在向任何给定的请求返回响应之前进行非常少的处理(<10ms,<50ms)。云管理器105维护记录以跟踪当前请求。例如,云管理器105更新本地数据库中的记录,并且若需要则稍后调度“作业”以执行更长的活动。
云管理器跟踪作为用于在网络内部署新机器的模板的镜像(诸如,虚拟盘镜像)。镜像引用可以存储在诸如数据库140之类的数据库中和/或某个其他位置。镜像可以存储在对将在其上部署镜像的网络而言是本地的一个或多个共享数据存储中。根据一个实施例,每个镜像都包括:虚拟机(VM)角色类型,其指定镜像可以部署的VM的类型;该镜像应当使用的处理器的数目;将分配给该镜像的RAM的量;用于找出附近安装点的网络ID(使得它们不会通过跨数据中心链接被反复地复制);以及可以被部署代码用于访问VHD的共享路径。
一般而言,由云系统100所管理的网络中的机器不是以传统方式通过下载数据并且将该数据合并到机器上的现有软件中来升级的。相反,机器是通过用已更新的VHD替换VHD来更新的。例如,当场需要新版本的软件时,部署安装了该新版本的新场。当部署新场时,将承租人从旧场移动到该新场。以此方式,由于升级造成的停机时间被最小化,并且场中的每个机器具有已被测试的相同版本。当虚拟机需要升级时,机器上的VM可以被删除并且被配置为运行所需服务的VM所代替。
尽管对现有软件的升级不是最优的,但是网络内的某些服务器使用原地升级的传统更新过程。例如,活动目录域控制器是通过升级服务器上的当前软件而不完全替换机器上的镜像来升级的。在一些实例中,云管理器也可以原地升级。
图2示出了包括管理器和相关联的数据库的云管理器。如所示的,云管理器200包括工作管理器210、工作数据库215、机器管理器220、机器数据库225、承租人管理器230、承租人数据库235、私密数据库245、以及web服务API 240。
一般而言,将在云管理系统(例如系统100)内使用的数据库的大小调整为实现高性能。例如,数据库(诸如,工作数据库215、机器数据库225、承租人数据库235和私密数据库245)不能超过预定义的大小限制(例如30GB、50GB、100GB等)。根据一实施例,调整数据库的大小以使得其小得足以放入物理机器的存储器中。这有助于高读取I/O性能。还可以基于对于一应用程序(诸如,与SQL服务器交互时)的性能来选择数据库的大小。还可以调整用在场中的数据库的大小以实现高性能。例如,它们的大小可以被调整为能放入主机的存储器中和/或被调整为使得备份操作、移动操作、复制操作、恢复操作一般在预定的时间段内执行。
云管理器200将云管理器数据划分成四个数据库。工作数据库215用于工作管理器。机器数据库225用于机器管理器220。承租人数据库235用于承租人管理器230,并且私密数据库245用于存储敏感信息,诸如系统账户和口令信息、凭证、证书等。数据库可以位于相同的服务器上,或者跨服务器分割。根据一实施例,每个数据库被镜像以获得高可用性,并且是SQL数据库。
云管理器200被配置为使用缩减的SQL特征组与数据库交互以便有助于在数据库升级期间提供云管理器200的可用性。例如,尝试避免外键或已存储的过程。外键可能使模式变化变得困难并且导致意料之外的失效情况。已存储的过程将应用中的更多个放置在数据库本身中。
尝试最小化与SQL服务器的通信,因为与底层操作的成本相比,往返可能是昂贵的。例如,如果当前SQL服务器到单个数据库的全部交互被包装在单个往返中,则常常是效率高得多的。
极少在数据库(215,225,235)内使用限制条件。一般而言,限制条件在其有助于在没有额外查询的情况下提供具有正确类型的错误处理的简单更新时是有益的。例如,完全合格的域名(FQDN)表具有对“名称”施加的限制条件,以帮助防止承租人意外地试图主张与已经被分配给不同承租人的FQDN相同的FQDN。
当添加索引时使用警告。索引通常以写入操作的额外I/O为代价来改善读取性能。由于数据库内的数据主要是驻留在RAM上的,因此即使全表扫描仍然是相对快的。根据一实施例,一旦查询模式已经稳定就可以添加索引,并且可以根据所提出的索引来确定性能改善。根据一实施例,如果添加索引将可能花费长时间,则可以指定“ONLINE=ON(在线=开启)”选项,以使得在最初构该建索引时表不被锁定。
根据一实施例,可以执行对云管理器内数据库的升级而不导致云管理器系统停机。换言之,即使在云管理器升级期间,云管理器继续处理已接收的请求。由此,对模式作出的改变应与之前的方案兼容。在升级云管理器所使用的web服务器之前进行SQL模式升级。当web服务器被升级时,它们可以开始使用数据库中所启用的新特性。数据库升级被限制以使得升级中所涉及的操作是快速和有效的。例如,可以添加表,并且可以向现有列添加新的可空列。可以在表的结尾处添加新的列。一般而言,避免对数据库的耗时操作。例如,在存在大量数据时,在创建时间向新添加的列添加缺省值可能是非常耗时的操作。然而,添加可空列(nullable column)是非常快速的操作。如上面所讨论的,允许添加新的索引,但是在添加新的限制条件时应当采取警告,以帮助保证方案升级不会破除现有数据。例如,当添加限制条件时,该限制条件可以被设置为如下状态:该限制条件不被检查并且避免对现有行和潜在的错误进行高成本的验证。旧表和未使用的列在新版本被使用并且云管理器不访问这些表和列以后被移除。
一般而言,每个数据库中的单个行用于指示任务和/或所需状态。例如,承租人数据库235为每个承租人包括单个行。给定的承租人可以包括所需版本(Required Version)记录。该记录用于帮助保证:该承租人被放置在运行所需版本的场上。例如,对于要停留在SharePoint 14 SP1上的承租人1而言,该承租人的所需版本可以被设置为“14.1”,并且包括14.1的任何版本都将匹配并且任何其他版本(例如14.2.xxxx)都将不匹配。承租人记录可以包括其他项目,诸如已授权的用户数目、限额(例如所允许的总数据使用、每用户的数据使用等)、时间限制等。某个组织可能具有代表不同地理位置、组合或容量的多个承租人。根据一实施例,将承租人彼此隔开而没有(经由外联网或其他特性)对用户的显式邀请。
根据一个实施例,每个承租人都被锁定到一专用网络中。承租人被保持为相对于一小组数据库而言是本地化的。承租人或者是小的(小于将填充一个数据库的程度),在这种情况下,该承租人处于与其他承租人共享的恰好一个数据库中。这意味着共享该数据库的所有承租人需要同时升级。当承租人变大时,其可被移动到其自己的专用数据库,并且现在可以具有一个以上、但是不与其他承租人共享的数据库。在一个或多个专用数据库中维护大承租人有助于减少需要在单次升级中同时升级的数据库的数目。
类似地,工作数据库215为每个作业包括单个行。机器数据库225可以为每个物理机器、VM、场等包括行。例如,机器管理器数据库225可以包括版本字符串。根据一实施例,网络内的每个VHD、场和VM具有相关联的版本字符串。
根据一个实施例,云管理器包括简单日志系统,该简单日志系统可以被配置为为每个web服务调用记录日志条目。可以实现包括如所期望的那样少和/或多的特性的日志系统。一般而言,日志系统被用于度量使用和性能剖析。
根据实施例,web服务API 240是使用ASP.net的SOAP构建的。API中的各种web方法遵循两种主要模式——获取(Get)和更新(Update)。一般而言,更新方法将数据结构作为输入,并且返回相同的结构作为输出。输出结构返回数据库中底层对象的当前状态,其中如果验证或其他业务逻辑改变了某些性质或者以其他方式填充了附加的性质(例如记录ID或由云管理器计算出的其他值),则该底层对象可能不同于输入对象。更新方法用于初始对象创建以及随后的更新。换言之,对web服务API 240的调用者可以简单地请求它们想要的配置并且它们不需要跟踪对象是否已经存在。另外,这意味着更新是幂等的,因为相同的更新调用可以进行两次,其中效果相同使其仅仅发生一次。根据一实施例,更新方法可以包括LastUpdated(最近更新)属性。当存在LastUpdated属性时,若LastUpdated的值与当前存储在数据库中的值不匹配,则云管理器200拒绝更新。某些更新方法包括在对方法的第一次调用时被设置的并且在对方法的其他调用时未被设置的属性。
云管理器200被配置为避免使用回调(callback)。由于回调可能是不可靠的,因此与云管理器200交互的客户可以在他们想要检查更新的状态时使用web服务API来检查对象状态。根据实施例,对更新方法的调用导致云管理器200将底层对象的状态设置为“供应中(Provisioning)”,并且当更新完成时,状态被设置为“活动(Active)”。
图3示出了存储在数据库的行内的示例性作业记录。如所示的,记录300包括作业标识符302、类型304、数据306、所有者308、步骤310、上一次运行312、期满时间314、下次时间316、状态318以及状况320。
一般而言,针对所请求执行的每个任务,云管理器在数据库350(例如,图2中的工作数据库215)中创建记录。
作业标识符302用于为所请求的任务指定唯一标识符。
类型304指定要执行的任务。例如,类型可以包括将要执行的脚本的名称。例如,当任务是要运行名称为“DeployVM.ps1”的脚本时,则数据306可以包括标识符(例如“-VMID 123”)。这允许将新任务类型添加到系统,而不需要对该系统的已编译或其他二进制部分进行任何改变。
数据306用于存储与任务相关联的数据。例如,数据可以被设置为将在其上执行任务的承租人、机器、网络、VM等。数据306还可以存储数据库中的值被设置成的一个或多个值。执行任务的进程可以注意作业记录以查看所需机器数目被设置为何值。脚本使用数据库中的值来执行操作。
所有者308指定进程/执行该进程的机器。例如,当云管理器机器开始执行作业时,该机器使用机器的ID来更新记录的所有者308部分。
步骤310提供对当前脚本的步骤的指示。例如,脚本可以将任务划分成任何数目的步骤。当该进程完成该脚本的步骤时,步骤310被更新。进程还可以查看步骤310以确定在脚本中要执行什么步骤并且避免必须重新执行之前已完成的步骤。
上一次运行312提供上一次启动脚本的时间。每次启动脚本时,更新上一次运行时间。
期满时间314是指示该进程应当何时终止的时间。根据实施例,期满时间是在进程被启动之后的预定时间量(例如5分钟、10分钟...)。期满时间可以通过经由web服务API的请求进程来更新。
下次时间316是指示任务下次应当何时执行的时间。例如,进程可以在完成某步骤之后停止,并且被指令等待直到所指定的下次时间316以恢复处理。
状态318指示当前状态,并且状况320指示作业的状况(例如,已创建、已挂起、已恢复、执行中、已删除)。
如果数据库中的重复行具有相同的任务类型和数据值,则它们可以在执行之前被移除。例如,可以进行多个请求以执行存储在数据库的多个行中的相同的任务。
作业可以具有与其相关联的一个或多个锁355。如果锁不可用,则作业将不被调度运行,直到锁可用。这些锁可以以许多不同的方式来配置。例如,锁可以基于互斥、信号量等。一般而言,互斥防止代码被一个以上线程同时执行,并且信号量将共享资源的同时使用的数目限制在最大数目。根据实施例,锁是表示资源的字符串。该资源可以是任何类型的资源。例如,锁可以是场、机器、承租人等。一般而言,锁用于延迟一个或多个任务的执行。每个作业可以指定其在运行以前需要的一个或多个锁。作业可以在其操作期间的任何时间释放锁。当存在锁时,作业不被调度。需要一个以上锁的作业一次请求所需的全部锁。例如,已经持有锁的作业可以不请求附加的锁。这样的模式有助于防止由多个作业间的循环锁依赖性造成的可能的死锁情况。
图4示出了用于网络的示例系统400,该网络包括用于在线服务的前端和后端服务器。示例性系统400包括客户端402和404、网络406、负载平衡器408、WFE服务器410、412、414以及后端服务器416-419。可使用更多或更少的客户机、WFE、后端服务器、负载平衡器和网络。另外,由系统400中的组件所提供的功能中的某些可以由其他组件来执行。例如,某些负载平衡可以在WFE中执行。
在示例实施例中,客户端402和404是诸如台式计算机、膝上型计算机、终端计算机、个人数字助理或蜂窝电话设备的计算设备。客户机402和404可包括输入/输出设备、中央处理单元(“CPU”)、数据存储设备和网络设备。在本申请中,术语客户端和客户端计算机互换地使用。
WFE 410、412和414可由客户端402和404经由负载平衡器408通过网络406访问。如所讨论的,服务器可以在场中配置。后端服务器416对WFE 410、412和414是可访问的。负载平衡器408是专用网络设备和/或一个或多个服务器计算机。负载平衡器408、420、WFE 410、412和414以及后端服务器416可包括输入/输出设备、中央处理单元(“CPU”)、数据存储设备和网络设备。在示例实施例中,网络406是因特网,并且客户机402和404可以远程地访问WFE 410、412和414以及连接到WFE 410、412和414的资源。
在示例实施例中,系统400是在线的、基于浏览器的文档协作系统。在线的、基于浏览器的文档协作系统的一个示例是来自美国华盛顿州雷蒙德市的微软公司的Microsoft在系统400中,后端服务器416-419中的一个或多个是SQL服务器,例如,来自美国华盛顿州雷蒙德市的微软公司的SQL服务器。
WFE 410、412和414提供客户机402和404与后端服务器416-419之间的接口。负载平衡器408、420将请求从自客户机402和404引导到WFE 410、412和414,以及从WFF引导到后端服务器416-419。负载平衡器408使用诸如WFE利用率、到WFE的连接数目和总体WFE性能之类的因素来确定哪个WFE服务器接收客户机请求。类似地,负载平衡器420使用诸如后端服务器利用率、到服务器的连接数目和总体性能的因素来确定哪个后端服务器接收请求。
客户请求的示例可以是访问存储在后端服务器之一上的文档,编辑存储在后端服务器(例如416-419)上的文档,或者将文档存储在后端服务器上。当负载平衡器408通过网络406接收客户机请求时,负载平衡器408确定WFE服务器410、412和414中的哪个接收该客户机请求。类似地,负载平衡器420确定后端服务器416-419中的哪一个从WFE服务器接收请求。后端服务器可以被配置为存储一个或多个承租人(即消费者)的数据。
现在参考图5,将描述在各实施例中利用的计算机500的说明性计算机体系结构。图5所示的计算机体系结构可被配置为服务器、台式或移动计算机,并且包括中央处理单元5(“CPU”)、包括随机存取存储器9(“RAM”)和只读存储器(“ROM”)11的系统存储器7、以及将存储器耦合至中央处理单元(“CPU”)5的系统总线12。
基本输入/输出系统存储在ROM 11中,所述基本输入/输出系统包含帮助在诸如启动期间在计算机内元件之间传递信息的基本例程。计算机500还包括大容量存储设备14以用于存储操作系统16、应用程序10、数据存储24、文件、以及与云系统100的执行和同云系统100的交互相关的云程序26。
大容量存储设备14通过连接至总线12的大容量存储控制器(未示出)连接到CPU 5。大容量存储设备14及其相关联的计算机可读介质为计算机500提供非易失性存储。虽然此处包含的计算机可读介质的描述针对诸如硬盘或CD-ROM驱动器等大容量存储设备,但是计算机可读介质可以是计算机100可以访问的任何可用介质。
作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以存储如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术来实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质还包括,但不限于,RAM、ROM、可擦除可编程只读存储器(“EPROM”)、电可擦可编程只读存储器(“EEPROM”)、闪存或其他固态存储器技术、CD-ROM、数字多功能盘(“DVD”)或其他光存储、磁带盒、磁带、磁盘存储或其他磁性存储设备、或能用于存储所需信息且可以由计算机500访问的任何其他介质。
根据各实施例,计算机500可以使用通过诸如因特网的网络18至远程计算机的逻辑连接在联网环境中操作。计算机500可以通过连接至总线12的网络接口单元20来连接到网络18。网络连接可以是无线的和/或有线的。网络接口单元20也可用于连接到其他类型的网络和远程计算机系统。计算机500还可以包括用于接收和处理来自多个其他设备的输入的输入/输出控制器22,这些设备包括键盘、鼠标或者电子指示笔(图5中未示出)。类似地,输入/输出控制器22可以向显示屏28、打印机或其他类型的输出设备提供输出。
如上面简要提到的,多个程序模块和数据文件可以存储在计算机500的大容量存储设备14和RAM 9内,包括适于控制联网计算机的操作的操作系统16,比如华盛顿州雷蒙德市的微软公司的操作系统。大容量存储设备14和RAM 9还可以存储一个或多个程序模块。具体而言,大容量存储设备14和RAM 9可以存储诸如云程序26的执行与云系统相关的任务的一个或多个应用程序。
图6示出用于控制和管理多承租人数据库的拆分的系统。如所示出的,系统600示出云管理器605,云管理器605包括工作管理器110、机器管理器610、应用管理器120以及web服务API 620。机器管理器610用于拆分位于在线服务的各网络内的多承租人数据库。尽管仅示出了一个网络,但是一般可以管理多得多的网络(例如十个、一百个、一千个、一万个等)。云管理器605运行,并且可以与上面所示和所描述的云管理器系统类似地来配置。根据一实施例,机器管理器610被配置成管理在线内容协作服务(诸如SHAREPOINT ONLINE服务)中的机器。机器管理器610可以用于为其他在线服务管理机器。
机器管理器610理解网络的物理拓扑,并且跟踪作为每个网络内的成员的物理机器和虚拟机的位置。机器管理器610知道各网络内的每个机架的位置以及位于机架内的每个机器和数据库的位置。机器管理器610还跟踪在每个机器上正在使用的软件的具体版本以及安装在每个机器上的虚拟机(VM)镜像。每个VM镜像对应于不同的服务器角色。
机器管理器610可以取代网络内的机器,将流量引导到新的一组机器、数据库,和/或响应于对机器的管理而执行其他一些动作。例如,如果一个或多个场停工,则机器管理器610部署新的场并且将流量引导到新近部署的场。
在线服务可能经历承租人的重大改变。例如,在试用期期间,承租人可能指定10个人来最初使用该在线服务。该承租人在这个试用期期间的数据存储要求可能非常小。然而在使用期之后,该承租人可能极大地增加其使用。例如,该承租人可能从10个用户变为一万个用户,从而对存储系统提出大得多的要求。其他消费者也可能加入或离开该在线服务。这些情形可能带来碎片化的数据库和/或增长到超出指定限制以外的数据库。
消费者数据可被存储在专用数据库中和/或多承租人数据库中,诸如多承租人数据库630和多承租人数据库632。其中一些数据库可以是SQL数据库。多承租人数据库存储来自不同承租人的数据,同时针对对承租人数据中的每个数据的访问施加控制。
当数据库增长到超出特定大小时,对那个数据库的操作的效率可能会降低。例如,当数据库增长得过大和/或变得碎片化时,读取/写入操作可能花费更长的时间。根据一实施例,数据库的大小使得来自该数据库的内容被完全存储在不需要盘访问的机器的存储器内(例如,100GB)。数据库中的承租人的数目也可能增长到超出预定限制。例如,数据库可被限制到特定数目的承租人(即,一百、一千、一万等等)。
可以看出,由于许多原因,可能需要将一个数据库内的内容移动到另一个数据库。当作出要将内容从一个多承租人数据库移动到另一个数据库的确定时,云管理器605启动该内容当前位于其中的数据库的拆分过程。多承租人数据库(例如,数据库630)可被拆分到一个或多个其他数据库(例如,数据库632),同时数据库630继续处理请求。例如,在内容正在被拆分到数据库632的同时,网络1内的web服务器继续请求对数据库630的操作。来自一数据库的所有内容也可以被拆分到两个或更多个其他数据库。
在确定要拆分数据库之后,对要将什么内容拆分到新的数据库作出确定。要移动的内容可以以不同的方式确定。例如,内容可以按大小、按承租人、和/或按两者的组合划分。根据一实施例,内容被如此拆分:使得要移动的内容大致等于留在没有被拆分的数据库上的内容。在当前示例中,承租人1和承租人2的内容的大小大致等于数据库630中的承租人3的内容的大小。可以存在任意数目的承租人的被移动的内容。根据一实施例,内容的划分的部分的较小者被拆分。参考图6,可以看出,来自承租人1和承租人2的内容被拆分到数据库632。在被移动到新的数据库后,用于被拆分的内容的内容(即,承租人1和2)可保留在原始数据库中。此内容还可以在预定时间被擦除、盖写,或对该内容执行某种其他操作。
在确定要拆分到不同数据库的内容之后,云管理器在数据库630中将被移动的内容(承租人1和承租人2的内容)限制为只读操作。在移动承租人1和2的内容的过程中,他们每个人可以对他们的内容进行读取访问。对承租人3的内容的访问仍然与拆分过程开始之前相同。在将内容移动到数据库632之后,对于对已移动的承租人内容(即,承租人1和承租人2)的任何请求,云管理器605自动将请求重定向到数据库632。根据一实施例,要移动的内容相对小,因为数据库的大小受到适于放入主存(host)该数据库的机器的存储器内的大小的限制。例如,存储器大小可以是50、100、500GB等等。当存储器大小是100GB时,被移动到新的数据库的内容一般小于50GB,50GB的内容可被快速移动到新的数据库(例如,在几分钟内)。
云管理器605还可以在其他升级操作过程中拆分和/或移动多承租人数据库。例如,当新的场被部署在网络内时,来自多承租人数据库的内容可以被移动/拆分到新场中的数据库。在新的数据库在存储从另一多承租人数据库拆分的内容之后,对于驻留于新的数据库的承租人,机器管理器610自动将流量/负载移动到新的数据库并使流量停止去往存储该承租人的数据的前一数据库。
现在参考图7,描述了用于拆分在线服务中的多承租人数据库的过程。
当阅读对在此提供的例程的讨论时,应当理解,各实施例的逻辑操作被实现为(1)运行于计算系统上的一系列计算机实现的动作或程序模块,和/或(2)计算系统内互连的机器逻辑电路或电路模块。取决于实现本发明的计算系统的性能要求,可以选择不同的实现。因此,所例示的并且构成此处所描述的实施例的逻辑操作被不同地表示为操作、结构设备、动作或模块。这些操作、结构设备、动作和模块可用软件、固件、专用数字逻辑以及它们的任何组合来实现。
现在参考图7,在开始操作后,过程700流向操作710,在操作710中作出拆分多承租人数据库的确定。该确定可以出于许多不同原因而以许多不同方式进行。
可以通过许多不同源接收请求。例如,可以通过API(诸如Web服务API)、命令行接口、图形用户接口等等接收请求。
该确定还可以自动进行。该确定可使用与数据库(例如,大小、碎片)、承租人、在线服务要求等相关联的因素。例如,当数据库的大小增长得过大和/或预计会增长得过大时,可以作出拆分多承租人数据库的确定。数据库可能还没有超过触发自动拆分的预定大小,但是某种其他因素(例如,相关联的用户的数目增长到超出特定数目)可指示该数据库需要被拆分。数据库在变得碎片化时也可以被自动地/人工地拆分。
移动到操作720,开始对多承租人数据库的拆分。一般而言,来自多承租人数据库的内容被拆分以从该数据库移除一个或多个承租人。数据库可以基于承租人的大小、对承租人的分配等等来拆分。例如,当内容被拆分以划分该数据库时,则尝试将内容拆分为相等部分。当内容被拆分为N个数目的其他数据库时,则可以尝试将内容拆分为N个相等的部分。根据一实施例,根据承租人内容来拆分内容。例如,第一承租人可存储45GB的内容,而五个其他承租人可存储46GB的内容。在此情形中,第一承租人的内容会被拆分到新的数据库。一般选择拆分内容的较小部分以帮助减少移动内容的时间、对系统的影响和只读停机时间。在一些实例中,承租人可被分配不同的空间量,从而导致内容被拆分在不同的部分中。例如,小的承租人可能被分配100GB的内容,在这种情况下,该承租人可被从该数据库拆分并被移动到另一数据库。
流向操作730,正被从多承租人数据库拆分的内容被标记为只读。用这种方式,正被拆分的内容可以仍然继续由拥有被拆分的内容的承租人访问。保留在多承租人数据库中的其他承租人的内容仍然是可访问的,就像没有对数据库执行操作一样。换言之,只有正被拆分的承租人的内容是只读的,而其他不被拆分的承租人保持可写入。一旦要被从数据库拆分的内容被标记为只读之后,则要被拆分的内容被移动到另一数据库。与这个数据并列显示给用户、但是由另一后端系统伺服的数据(例如,用户简档数据、搜索数据、分类数据(taxonomydata)等)不受影响。
移动到操作740,被拆分的数据库继续接收对数据库操作的请求。例如,该数据库可以接收来自云管理器、来自WFE、或来自某个其他请求者的请求。正从数据库拆分出去的承租人得到锁,从而该承租人的新站点不被供应,直到移动已进行之后。
流向决策框750,针对对多承租人数据库的拆分是否完成作出确定。当拆分未完成时,拆分过程返回操作740。当拆分已完成时,该过程移至操作760。
转到操作760,为已拆分的内容的传入请求被自动重定向成访问现在存储该已拆分的内容的数据库。随后该过程移全结束框并返回以处理其他动作。
以上说明、示例和数据提供了对本发明的组成部分的制造和使用的全面描述。因为可以在不背离本发明的精神和范围的情况下做出本发明的许多实施例,所以本发明落在所附权利要求的范围内。

Claims (10)

1.一种用于拆分仍然正在在线服务中访问的多承租人数据库的方法,包括:
开始所述在线服务中使用的数据库的拆分过程以将所述数据库的内容的一部分拆分到不同的数据库,其中被拆分的所述数据库是在所述拆分过程期间继续接收并处理来自web服务器的对数据库操作的请求的多承租人数据库,所述多承租人数据库被用于存储来自不同承租人的数据;其中所述多承租人数据库包括两个或更多个承租人(710);
确定要从所述数据库拆分的拆分内容,其中所述拆分内容是来自所述数据库的内容的一部分,所述部分包括所述不同承租人中一部分的内容(720);
在将所述拆分内容移动到所述不同数据库的移动操作期间将所述拆分内容标记为只读(730);
在继续接收并处理对所述数据库的操作的同时,将所述拆分内容移动到所述不同数据库(740);以及
一旦移动所述拆分内容完成之后,就将对所述拆分内容的请求自动重定向到所述不同数据库(760)。
2.如权利要求1所述的方法,其特征在于,所述数据库的大小被限制为适于放入主存所述数据库的物理机器的存储器内的大小(710)。
3.如权利要求1所述的方法,其特征在于,所述数据库的所述拆分过程响应于以下至少一项而进行:被存储在所述数据库中的承租人的数量,以及对去碎片化所述数据库的请求(600)。
4.如权利要求1所述的方法,其特征在于,所述数据库的所述拆分过程响应于所述数据库内存储的所述内容的大小超过预定大小而进行(600)。
5.如权利要求1所述的方法,其特征在于,确定从所述数据库移动到所述不同数据库的所述拆分内容包括基于存储在所述数据库中的所述承租人的内容来将所述数据库划分为大致相等的部分,以及将所述部分中的较小者移动到所述不同数据库(720)。
6.如权利要求1所述的方法,其特征在于,所述拆分过程是响应于所述在线服务的网络中的场的升级操作而自动开始的(600)。
7.一种用于拆分当前正在在线服务中使用的多承租人数据库的方法,包括:
开始在所述在线服务中使用的SQL服务器的拆分过程以将所述数据库的内容拆分到不同数据库;其中被拆分的所述数据库是在所述拆分过程期间继续接收并处理对数据库操作的请求的多承租人数据库,所述多承租人数据库被用于存储来自不同承租人的数据(710);
自动地确定要从所述数据库拆分的拆分内容,其中所述拆分内容是来自所述数据库的内容的一部分,所述部分包括所述不同承租人中一部分的内容(720);
在将所述拆分内容移动到所述不同数据库的移动操作期间将所述拆分内容标记为只读(730);
在继续接收并处理对所述数据库的操作的同时,将所述拆分内容移动到所述不同数据库(740);以及
一旦移动所述拆分内容完成之后,就将对所述拆分内容的请求自动重定向到所述不同数据库(760)。
8.一种用于拆分当前正在在线服务中使用的多承租人数据库的系统,包括:
用于开始在所述在线服务中使用的数据库的拆分过程以将所述数据库的内容拆分到与所述数据库在相同网络上的不同的数据库的装置;所述拆分内容是来自所述数据库的内容的一部分,所述部分包括承租人中一部分的内容;其中所述数据库的大小适于放入主存所述数据库的web服务器的存储器中(710);
用于在将所述拆分内容移动到所述不同数据库的移动操作期间阻止对所述拆分内容的写访问,同时允许对所述数据库的不被拆分的内容的写访问(740)的装置;
用于在继续接收并处理对所述数据库的操作的同时,将所述拆分内容移动到所述不同数据库(740)的装置;以及
用于一旦移动所述拆分内容完成之后,就将对所述拆分内容的请求自动重定向到所述不同数据库(760)的装置。
9.如权利要求8所述的系统,其特征在于,所述拆分过程响应于以下至少一项而执行:对去碎片化所述数据库的请求;对将更多用户添加到承租人的请求;对存储在所述数据库内的所述内容的大小超过出预定大小的确定(710)。
10.如权利要求8所述的系统,其特征在于,用于确定从所述数据库移动到所述不同数据库的所述拆分内容的装置包括用于将所述数据库划分为存储在所述数据库中的大致相等的部分,以及将所述部分中的较小者移动到所述不同数据库(720)的装置。
CN201110340455.4A 2010-10-20 2011-10-19 动态拆分多承租人数据库 Active CN102436485B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/908,639 US8386501B2 (en) 2010-10-20 2010-10-20 Dynamically splitting multi-tenant databases
US12/908,639 2010-10-20

Publications (2)

Publication Number Publication Date
CN102436485A CN102436485A (zh) 2012-05-02
CN102436485B true CN102436485B (zh) 2015-06-03

Family

ID=45973863

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110340455.4A Active CN102436485B (zh) 2010-10-20 2011-10-19 动态拆分多承租人数据库

Country Status (4)

Country Link
US (2) US8386501B2 (zh)
CN (1) CN102436485B (zh)
SG (1) SG189386A1 (zh)
WO (1) WO2012054185A1 (zh)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8386501B2 (en) 2010-10-20 2013-02-26 Microsoft Corporation Dynamically splitting multi-tenant databases
US9075661B2 (en) 2010-10-20 2015-07-07 Microsoft Technology Licensing, Llc Placing objects on hosts using hard and soft constraints
US8296267B2 (en) 2010-10-20 2012-10-23 Microsoft Corporation Upgrade of highly available farm server groups
US8751656B2 (en) 2010-10-20 2014-06-10 Microsoft Corporation Machine manager for deploying and managing machines
US8417737B2 (en) 2010-10-20 2013-04-09 Microsoft Corporation Online database availability during upgrade
US8799453B2 (en) 2010-10-20 2014-08-05 Microsoft Corporation Managing networks and machines for an online service
US20120101985A1 (en) * 2010-10-25 2012-04-26 Salesforce.Com, Inc. Triggering actions in an information feed system
US8850550B2 (en) 2010-11-23 2014-09-30 Microsoft Corporation Using cached security tokens in an online service
US9721030B2 (en) 2010-12-09 2017-08-01 Microsoft Technology Licensing, Llc Codeless sharing of spreadsheet objects
US10417263B2 (en) * 2011-06-03 2019-09-17 Robert Mack Method and apparatus for implementing a set of integrated data systems
US8849887B2 (en) 2011-08-29 2014-09-30 Salesforce.Com, Inc. Mechanism for facilitating spin mode-based dynamic updating of application servers in an on-demand services environment
US9244951B2 (en) * 2012-03-08 2016-01-26 International Business Machines Corporation Managing tenant-specific data sets in a multi-tenant environment
CN104246761A (zh) * 2012-07-31 2014-12-24 惠普发展公司,有限责任合伙企业 在联合数据管理系统中支持多租用
US10706025B2 (en) * 2013-02-28 2020-07-07 Amazon Technologies, Inc. Database system providing single-tenant and multi-tenant environments
US9712608B2 (en) 2013-03-14 2017-07-18 Microsoft Technology Licensing, Llc Elastically scalable document-oriented storage services
US11314770B2 (en) * 2013-06-17 2022-04-26 Salesforce.Com, Inc. Database multiplexing architectures
US9298752B2 (en) * 2013-08-26 2016-03-29 Dropbox, Inc. Facilitating data migration between database clusters while the database continues operating
US10127118B1 (en) * 2013-12-27 2018-11-13 EMC IP Holding Company LLC Method and system for sharepoint server 2013 backup and restore
US9578091B2 (en) 2013-12-30 2017-02-21 Microsoft Technology Licensing, Llc Seamless cluster servicing
US11468470B1 (en) * 2014-09-19 2022-10-11 Force Events and Direct Marketing, LLC Process and system for digital lead sourcing
US10528525B2 (en) 2015-03-19 2020-01-07 International Business Machines Corporation Establishing connections in a multi-tenant environment
US9876676B1 (en) * 2015-03-27 2018-01-23 VCE IP Holding Company LLC Methods, systems, and computer readable mediums for managing computing systems by a management orchestration module
US9954949B2 (en) * 2015-04-30 2018-04-24 Hewlett Packard Enterprise Development Lp Cloud images
US10261943B2 (en) * 2015-05-01 2019-04-16 Microsoft Technology Licensing, Llc Securely moving data across boundaries
US10229124B2 (en) * 2015-05-01 2019-03-12 Microsoft Technology Licensing, Llc Re-directing tenants during a data move
US10678762B2 (en) * 2015-05-01 2020-06-09 Microsoft Technology Licensing, Llc Isolating data to be moved across boundaries
US20160321332A1 (en) * 2015-05-01 2016-11-03 Microsoft Technology Licensing, Llc Database scaling with isolation
US9990400B2 (en) 2015-10-26 2018-06-05 Salesforce.Com, Inc. Builder program code for in-memory cache
US9984002B2 (en) 2015-10-26 2018-05-29 Salesforce.Com, Inc. Visibility parameters for an in-memory cache
US10013501B2 (en) * 2015-10-26 2018-07-03 Salesforce.Com, Inc. In-memory cache for web application data
CN105915627A (zh) * 2016-05-30 2016-08-31 北京小米移动软件有限公司 业务请求处理方法及装置
US10216379B2 (en) 2016-10-25 2019-02-26 Microsoft Technology Licensing, Llc User interaction processing in an electronic mail system
US20180115600A1 (en) * 2016-10-26 2018-04-26 American Express Travel Related Services Company, Inc. System and method for health monitoring and task agility within network environments
US10719555B2 (en) * 2017-02-07 2020-07-21 Salesforce.Com, Inc. System and method in a database system for sharing a data item with an entity in another tenant domain
US10565202B2 (en) * 2017-02-08 2020-02-18 International Business Machines Corporation Data write/import performance in a database through distributed memory
US11256664B1 (en) * 2017-05-05 2022-02-22 Fannie Mae Systems and methods for memory management in source agnostic content staging
US10936596B2 (en) * 2017-11-30 2021-03-02 Salesforce.Com, Inc. Dynamic selection of data sources for streaming dynamic data
US10528592B2 (en) * 2018-01-04 2020-01-07 Sap Se Database scaling for multi-tenant applications
US10642745B2 (en) 2018-01-04 2020-05-05 Salesforce.Com, Inc. Key invalidation in cache systems
CN111708802B (zh) * 2020-06-02 2024-05-07 拉卡拉支付股份有限公司 网络请求防重处理方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101657804A (zh) * 2007-04-13 2010-02-24 微软公司 可扩展和可编程多承租人服务体系结构

Family Cites Families (182)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5402428A (en) 1989-12-25 1995-03-28 Hitachi, Ltd. Array disk subsystem
US5913032A (en) 1994-04-04 1999-06-15 Inprise Corporation System and methods for automatically distributing a particular shared data object through electronic mail
US5553215A (en) 1994-09-21 1996-09-03 Microsoft Corporation Method and system of sharing common formulas in a spreadsheet program and of adjusting the same to conform with editing operations
SG69956A1 (en) * 1994-10-04 2000-01-25 Motorola Ltd Method for handover in multicellular environment
US5835910A (en) 1994-11-10 1998-11-10 Cadis, Inc. Method and system for comparing attributes in an object-oriented management system
US6453325B1 (en) 1995-05-24 2002-09-17 International Business Machines Corporation Method and means for backup and restoration of a database system linked to a system for filing data
US6157934A (en) 1995-10-24 2000-12-05 Ultimus, L.L.C. Method and apparatus for using distributed spreadsheets in a client/server architecture for workflow automation
US5857211A (en) 1996-01-29 1999-01-05 Apple Computer, Inc. System for automatically detecting cyclical and recursive links between document components
US5983268A (en) 1997-01-14 1999-11-09 Netmind Technologies, Inc. Spreadsheet user-interface for an internet-document change-detection tool
US6363497B1 (en) 1997-05-13 2002-03-26 Micron Technology, Inc. System for clustering software applications
US6572662B2 (en) 1998-05-15 2003-06-03 International Business Machines Corporation Dynamic customized web tours
US6145000A (en) 1998-10-06 2000-11-07 Ameritech Corporation System and method for creating and navigating a linear hypermedia resource program
US6675226B1 (en) 1998-11-17 2004-01-06 Rockwell Automation Technologies, Inc. Network interface for industrial controller providing application programmer interface
US7200804B1 (en) 1998-12-08 2007-04-03 Yodlee.Com, Inc. Method and apparatus for providing automation to an internet navigation application
US6654746B1 (en) 1999-05-03 2003-11-25 Symantec Corporation Methods and apparatuses for single-connection file synchronization workgroup file update
US6574657B1 (en) 1999-05-03 2003-06-03 Symantec Corporation Methods and apparatuses for file synchronization and updating using a signature list
US7463648B1 (en) 1999-08-23 2008-12-09 Sun Microsystems, Inc. Approach for allocating resources to an apparatus based on optional resource requirements
US7103647B2 (en) 1999-08-23 2006-09-05 Terraspring, Inc. Symbolic definition of a computer system
US6578054B1 (en) 1999-10-04 2003-06-10 Microsoft Corporation Method and system for supporting off-line mode of operation and synchronization using resource state information
US6823384B1 (en) * 1999-10-15 2004-11-23 James Wilson Methods and apparatus for securely collecting customer service agent data in a multi-tenant environment
US6983311B1 (en) 1999-10-19 2006-01-03 Netzero, Inc. Access to internet search capabilities
US7035926B1 (en) 1999-11-30 2006-04-25 International Business Machines Corporation Real-time monitoring of web activities
US6571283B1 (en) 1999-12-29 2003-05-27 Unisys Corporation Method for server farm configuration optimization
WO2001059675A1 (en) 2000-02-11 2001-08-16 Ryan Mark H Method and system for distributing and collecting spreadsheet information
US6898727B1 (en) 2000-03-22 2005-05-24 Emc Corporation Method and apparatus for providing host resources for an electronic commerce site
US7562153B2 (en) 2000-05-12 2009-07-14 AT&T Intellectual Property II, L. P. Method and apparatus for content distribution network brokering and peering
US6341292B1 (en) 2000-05-30 2002-01-22 Outlooksoft Corporation Spreadsheet-based network information exchange with two-part cache
US7155667B1 (en) 2000-06-21 2006-12-26 Microsoft Corporation User interface for integrated spreadsheets and word processing tables
US6711593B1 (en) 2000-06-26 2004-03-23 Camstar Systems, Inc. System and method for live update of a manufacturing system
AU2001277868A1 (en) 2000-07-11 2002-01-21 Juice Software, Inc. A method and system for integrating network-based functionality into productivity applications and documents
US6934848B1 (en) 2000-07-19 2005-08-23 International Business Machines Corporation Technique for handling subsequent user identification and password requests within a certificate-based host session
US20020161814A1 (en) 2000-10-04 2002-10-31 Wical Kelly J. Batch processing system running in parallel on automated and distributed replication systems
US6988241B1 (en) 2000-10-16 2006-01-17 International Business Machines Corporation Client side, web-based spreadsheet
US6912690B2 (en) 2000-10-24 2005-06-28 International Business Machines Corporation Method and system in an electronic spreadsheet for persistently copy-pasting a source range of cells onto one or more destination ranges of cells
US7082569B2 (en) 2001-01-17 2006-07-25 Outlooksoft Corporation Systems and methods providing dynamic spreadsheet functionality
US20030061365A1 (en) 2001-03-14 2003-03-27 Microsoft Corporation Service-to-service communication for network services
JP4426736B2 (ja) 2001-04-27 2010-03-03 株式会社日立製作所 プログラム修正方法およびプログラム
US7647409B2 (en) 2001-06-28 2010-01-12 International Business Machines Corporation Gradual online subscription removal
US7251776B2 (en) 2001-07-13 2007-07-31 Netview Technologies, Inc. System and method for efficiently and flexibly utilizing spreadsheet information
US20030208527A1 (en) 2001-07-20 2003-11-06 Lino Lglesais Method for smart device network application infrastructure (SDNA)
FI20011651A (fi) 2001-08-15 2003-02-16 Nokia Corp Palveluklusterin kuormituksen tasapainoittaminen
GB2378782B (en) 2001-08-16 2005-04-13 Sun Microsystems Inc Message brokering
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
US7000228B2 (en) 2002-01-17 2006-02-14 Sun Microsystems, Inc. Online upgrade of container-based software components
US7188365B2 (en) 2002-04-04 2007-03-06 At&T Corp. Method and system for securely scanning network traffic
US6731323B2 (en) 2002-04-10 2004-05-04 International Business Machines Corporation Media-enhanced greetings and/or responses in communication systems
US20030204460A1 (en) 2002-04-30 2003-10-30 Rodney Robinson Data collection and transaction initiation using a financial messaging protocol
US20030221190A1 (en) 2002-05-22 2003-11-27 Sun Microsystems, Inc. System and method for performing patch installation on multiple devices
US7774473B2 (en) 2002-07-31 2010-08-10 Oracle America, Inc. System and method for sticky routing of requests within a server farm
US7549166B2 (en) 2002-12-05 2009-06-16 International Business Machines Corporation Defense mechanism for server farm
US7283465B2 (en) 2003-01-07 2007-10-16 Corrigent Systems Ltd. Hierarchical virtual private LAN service protection scheme
US7577964B2 (en) 2003-02-28 2009-08-18 Hewlett-Packard Development Company, L.P. System and methods for defining a binding for web-services
US20040210623A1 (en) 2003-03-06 2004-10-21 Aamer Hydrie Virtual network topology generation
US20040237045A1 (en) 2003-05-21 2004-11-25 Eintelligence, Inc. Method for asynchronous sharing of integrated spreadsheets using a network
US6973654B1 (en) 2003-05-27 2005-12-06 Microsoft Corporation Systems and methods for the repartitioning of data
US7203944B1 (en) 2003-07-09 2007-04-10 Veritas Operating Corporation Migrating virtual machines among computer systems to balance load caused by virtual machines
CA2438997A1 (en) 2003-08-28 2005-02-28 Ibm Canada Limited - Ibm Canada Limitee System and method for carrying out legacy application transitions
US7779039B2 (en) 2004-04-02 2010-08-17 Salesforce.Com, Inc. Custom entities and fields in a multi-tenant database system
US7529728B2 (en) 2003-09-23 2009-05-05 Salesforce.Com, Inc. Query optimization in a multi-tenant database system
JP4573126B2 (ja) 2003-09-24 2010-11-04 ソニー株式会社 データベーススキーマ更新方法、通信端末装置、更新情報提供方法、更新情報提供装置、データベーススキーマ更新プログラム及び更新情報提供プログラム
US7680933B2 (en) 2003-12-15 2010-03-16 International Business Machines Corporation Apparatus, system, and method for on-demand control of grid system resources
US7509636B2 (en) 2003-12-15 2009-03-24 Microsoft Corporation System and method for updating files utilizing delta compression patching
US20050262449A1 (en) 2004-05-03 2005-11-24 Microsoft Corporation Online service switching and customizations
US7360208B2 (en) 2004-05-17 2008-04-15 Oracle International Corp. Rolling upgrade of distributed software with automatic completion
US7587721B2 (en) 2004-05-20 2009-09-08 Sap Ag Sharing objects in runtime systems
US7657932B2 (en) 2004-07-14 2010-02-02 Microsoft Corporation Extendible security token management architecture and secure message handling methods
US7434252B2 (en) 2004-07-14 2008-10-07 Microsoft Corporation Role-based authorization of network services using diversified security tokens
US7779431B2 (en) 2004-07-16 2010-08-17 Wallace Robert G Networked spreadsheet template designer
US7454659B1 (en) 2004-08-24 2008-11-18 The Mathworks, Inc. Distributed systems in test environments
US8578399B2 (en) 2004-07-30 2013-11-05 Microsoft Corporation Method, system, and apparatus for providing access to workbook models through remote function cells
US7555751B1 (en) 2004-08-11 2009-06-30 3Com Corporation Method and system for performing a live system upgrade
US7668961B2 (en) 2004-09-23 2010-02-23 Microsoft Corporation Unilateral web services interaction contract
US7840911B2 (en) 2004-09-27 2010-11-23 Scott Milener Method and apparatus for enhanced browsing
US7496886B2 (en) 2004-09-30 2009-02-24 Microsoft Corporation Method and system for providing cross project commitments
US8146073B2 (en) 2004-09-30 2012-03-27 Microsoft Corporation Updating software while it is running
US7325156B1 (en) 2004-10-07 2008-01-29 Hewlett-Packard Development Company, L.P. Methods and apparatus for backing up data in a data center
US9329905B2 (en) 2004-10-15 2016-05-03 Emc Corporation Method and apparatus for configuring, monitoring and/or managing resource groups including a virtual machine
GB2419701A (en) 2004-10-29 2006-05-03 Hewlett Packard Development Co Virtual overlay infrastructure with dynamic control of mapping
US20060122469A1 (en) 2004-11-16 2006-06-08 Martel Normand M Remote medical monitoring system
US7899921B2 (en) 2004-12-08 2011-03-01 Microsoft Corporation Verifying and maintaining connection liveliness in a reliable messaging for web services environment
US7987225B2 (en) 2004-12-22 2011-07-26 International Business Machines Corporation Method for remembering resource allocation in grids
JP4555703B2 (ja) 2005-02-23 2010-10-06 株式会社日立製作所 領域集合設定方法、および、ネットワークシステム
US20070011667A1 (en) 2005-05-25 2007-01-11 Saravanan Subbiah Lock management for clustered virtual machines
US20060274695A1 (en) 2005-06-03 2006-12-07 Nokia Corporation System and method for effectuating a connection to a network
US20060277224A1 (en) 2005-06-07 2006-12-07 Microsoft Corporation Synchronizing arbitrary data using a flexible schema
US7577661B2 (en) 2005-06-30 2009-08-18 Microsoft Corporation Extensible and automatically replicating server farm configuration management infrastructure
US7558857B2 (en) 2005-06-30 2009-07-07 Microsoft Corporation Solution deployment in a server farm
US7720820B2 (en) 2005-07-12 2010-05-18 Microsoft Corporation Logless persistent components for enterprise applications
US20070033635A1 (en) 2005-08-02 2007-02-08 Hirsave Praveen P K Method, apparatus, and program product for autonomic patch deployment based on autonomic patch risk assessment and policies
US8799431B2 (en) 2005-08-15 2014-08-05 Toutvirtual Inc. Virtual systems management
US7636704B2 (en) * 2005-08-26 2009-12-22 Emc Corporation Methods and apparatus for scheduling an action on a computer
US7930736B2 (en) 2006-01-13 2011-04-19 Google, Inc. Providing selective access to a web site
US7603354B2 (en) 2006-02-09 2009-10-13 Cinnober Financial Technology Ab Method for enhancing the operation of a database
US20070198554A1 (en) 2006-02-10 2007-08-23 Sun Microsystems, Inc. Apparatus for business service oriented management infrastructure
US8117459B2 (en) 2006-02-24 2012-02-14 Microsoft Corporation Personal identification information schemas
US7941801B2 (en) 2006-03-07 2011-05-10 Oracle America Inc. Method and system for provisioning a virtual computer and scheduling resources of the provisioned virtual computer
US20070219956A1 (en) 2006-03-16 2007-09-20 Milton Michael L Excel spreadsheet parsing to share cells, formulas, tables, etc.
US20070220415A1 (en) 2006-03-16 2007-09-20 Morgan Mao Cheng Excel spreadsheet parsing to share cells, formulas, tables or entire spreadsheets across an enterprise with other users
US7823145B1 (en) 2006-03-31 2010-10-26 Vmware, Inc. Updating software on dormant disks
US20070245235A1 (en) 2006-03-31 2007-10-18 Microsoft Corporation Efficient storage of drawing objects in synchronizable electronic documents
US8307119B2 (en) 2006-03-31 2012-11-06 Google Inc. Collaborative online spreadsheet application
US8261277B2 (en) 2006-04-10 2012-09-04 General Electric Company System and method for dynamic allocation of resources in a computing grid
US7818740B2 (en) * 2006-05-05 2010-10-19 Microsoft Corporation Techniques to perform gradual upgrades
US20070271560A1 (en) 2006-05-18 2007-11-22 Microsoft Corporation Deploying virtual machine to host based on workload characterizations
US20070285501A1 (en) 2006-06-09 2007-12-13 Wai Yim Videoconference System Clustering
US7512639B2 (en) 2006-06-15 2009-03-31 International Business Machines Corporation Management of time-variant data schemas in data warehouses
CN100487701C (zh) 2006-08-02 2009-05-13 华为技术有限公司 一种嵌入式数据库的在线升级控制方法和装置
US8768332B2 (en) 2006-09-01 2014-07-01 At&T Mobility Ii Llc Interactive personal information management system
US7739219B2 (en) 2006-09-08 2010-06-15 Oracle International Corporation Techniques of optimizing queries using NULL expression analysis
US7730028B2 (en) 2006-09-22 2010-06-01 Research In Motion Limited Schema updating for synchronizing databases connected by wireless interface
US7870163B2 (en) 2006-09-28 2011-01-11 Oracle International Corporation Implementation of backward compatible XML schema evolution in a relational database system
CN101162988A (zh) 2006-10-11 2008-04-16 中兴通讯股份有限公司 一种采用主备用数据区实现不中断业务的数据同步方法
US8521706B2 (en) 2006-10-20 2013-08-27 Oracle International Corporation Low-downtime and zero-downtime upgrades of database-centric applications
US8909599B2 (en) 2006-11-16 2014-12-09 Oracle International Corporation Efficient migration of binary XML across databases
US7634505B2 (en) 2006-12-19 2009-12-15 Salesforce.Com, Inc. Methods and procedures to provide complete test copy environment of hosted applications
US7865556B2 (en) 2006-12-20 2011-01-04 International Business Machines Corporation Failover processing for automatic responder in mixed server environment
US8554981B2 (en) 2007-02-02 2013-10-08 Vmware, Inc. High availability virtual machine cluster
US20080243763A1 (en) 2007-03-27 2008-10-02 International Business Machines Corporation System, method and program to provide data to another program
US7680848B2 (en) 2007-03-29 2010-03-16 Microsoft Corporation Reliable and scalable multi-tenant asynchronous processing
US8095618B2 (en) 2007-03-30 2012-01-10 Microsoft Corporation In-memory caching of shared customizable multi-tenant data
US8479194B2 (en) 2007-04-25 2013-07-02 Microsoft Corporation Virtual machine migration
US9053162B2 (en) * 2007-04-26 2015-06-09 Microsoft Technology Licensing, Llc Multi-tenant hosted application system
US8122055B2 (en) 2007-04-26 2012-02-21 Microsoft Corporation Hosted multi-tenant application with per-tenant unshared private databases
US7996445B2 (en) * 2007-04-27 2011-08-09 Network Appliance, Inc. Block reallocation planning during read-ahead processing
US20080289020A1 (en) 2007-05-15 2008-11-20 Microsoft Corporation Identity Tokens Using Biometric Representations
US8244713B2 (en) 2007-07-12 2012-08-14 International Business Machines Corporation Content management system that retrieves data from an external data source and creates one or more objects in the repository
US20090083561A1 (en) * 2007-09-26 2009-03-26 Nikos Kaburlasos Dynamic power management of dimms
US8181173B2 (en) 2007-10-12 2012-05-15 International Business Machines Corporation Determining priority for installing a patch into multiple patch recipients of a network
US8190987B2 (en) 2007-10-25 2012-05-29 Microsoft Corporation Private views of data and local calculations during real time collaboration
US8185902B2 (en) 2007-10-31 2012-05-22 International Business Machines Corporation Method, system and computer program for distributing a plurality of jobs to a plurality of computers
US8275855B2 (en) 2007-12-20 2012-09-25 Yahoo! Inc. Method and system for monitoring rest web services
US8990360B2 (en) 2008-02-22 2015-03-24 Sonos, Inc. System, method, and computer program for remotely managing a digital device
JP5198584B2 (ja) 2008-02-26 2013-05-15 ヴイエムウェア インク 拡張されたサーバーベースのクライアント用デスクトップ仮想マシン構成
US8230069B2 (en) 2008-03-04 2012-07-24 International Business Machines Corporation Server and storage-aware method for selecting virtual machine migration targets
US8196175B2 (en) 2008-03-05 2012-06-05 Microsoft Corporation Self-describing authorization policy for accessing cloud-based resources
US7949636B2 (en) 2008-03-27 2011-05-24 Emc Corporation Systems and methods for a read only mode for a portion of a storage system
US9501124B2 (en) 2008-05-22 2016-11-22 Microsoft Technology Licensing, Llc Virtual machine placement based on power calculations
US8935692B2 (en) 2008-05-22 2015-01-13 Red Hat, Inc. Self-management of virtual machines in cloud-based networks
US7516367B1 (en) 2008-05-30 2009-04-07 International Business Machines Corporation Automated, distributed problem determination and upgrade planning tool
US8514868B2 (en) 2008-06-19 2013-08-20 Servicemesh, Inc. Cloud computing gateway, cloud computing hypervisor, and methods for implementing same
US20090327139A1 (en) 2008-06-27 2009-12-31 Microsoft Corporation Loosely coupled hosted application system
US20100011409A1 (en) 2008-07-09 2010-01-14 Novell, Inc. Non-interactive information card token generation
US8117410B2 (en) 2008-08-25 2012-02-14 Vmware, Inc. Tracking block-level changes using snapshots
US8370472B2 (en) 2008-09-02 2013-02-05 Ca, Inc. System and method for efficient machine selection for job provisioning
US20100070466A1 (en) 2008-09-15 2010-03-18 Anand Prahlad Data transfer techniques within data storage devices, such as network attached storage performing data migration
US20100082860A1 (en) 2008-09-26 2010-04-01 Yahoo! Inc. System and method for updating the status of an asynchronous, idempotent message channel
US8185897B2 (en) 2008-09-30 2012-05-22 Verizon Patent And Licensing Inc. Task management system
US20100095198A1 (en) 2008-10-15 2010-04-15 Apple Inc. Shared comments for online document collaboration
US9300532B2 (en) 2008-10-24 2016-03-29 Microsoft Technology Licensing, Llc Automating deployment of service applications by exposing hosting environment constraints
US20100113159A1 (en) 2008-11-06 2010-05-06 International Business Machines Corporation Method and apparatus for partitioning virtual worlds using prioritized topic spaces in virtual world systems
US7979512B2 (en) 2008-11-07 2011-07-12 Microsoft Corporation Service delivery online
US8271536B2 (en) 2008-11-14 2012-09-18 Microsoft Corporation Multi-tenancy using suite of authorization manager components
US9325695B2 (en) 2008-12-04 2016-04-26 International Business Machines Corporation Token caching in trust chain processing
US20100145861A1 (en) 2008-12-08 2010-06-10 Palm, Inc. Payment transaction processing for mobile computing devices
US8108779B1 (en) 2008-12-16 2012-01-31 Adobe Systems Incorporated Collaborative editing operations
US9229707B2 (en) 2008-12-18 2016-01-05 Sap Se Zero downtime mechanism for software upgrade of a distributed computer system
US9189221B2 (en) 2009-01-27 2015-11-17 Microsoft Technology Licensing, Llc Consistent operating system servicing for distributed nodes
US8918488B2 (en) 2009-02-04 2014-12-23 Citrix Systems, Inc. Methods and systems for automated management of virtual resources in a cloud computing environment
US9208188B2 (en) * 2009-02-17 2015-12-08 Microsoft Technology Licensing, Llc Tenant management of a hosted multi-tenant application
US8713060B2 (en) 2009-03-31 2014-04-29 Amazon Technologies, Inc. Control service for relational data management
US9705888B2 (en) 2009-03-31 2017-07-11 Amazon Technologies, Inc. Managing security groups for data instances
US20100262632A1 (en) 2009-04-14 2010-10-14 Microsoft Corporation Data transfer from on-line to on-premise deployment
US9274796B2 (en) * 2009-05-11 2016-03-01 Arm Finance Overseas Limited Variable register and immediate field encoding in an instruction set architecture
US20100312810A1 (en) 2009-06-09 2010-12-09 Christopher Horton Secure identification of music files
US8799322B2 (en) * 2009-07-24 2014-08-05 Cisco Technology, Inc. Policy driven cloud storage management and cloud storage policy router
US8490150B2 (en) 2009-09-23 2013-07-16 Ca, Inc. System, method, and software for enforcing access control policy rules on utility computing virtualization in cloud computing systems
US20110071856A1 (en) 2009-09-23 2011-03-24 Nasenbenny Mary B System and method for dynamic real time insurance litigation management
US8667028B2 (en) 2009-09-28 2014-03-04 At&T Global Network Services Deutschland Gmbh System and method to determine database schema impact
US8276148B2 (en) 2009-12-04 2012-09-25 International Business Machines Corporation Continuous optimization of archive management scheduling by use of integrated content-resource analytic model
US8875143B2 (en) 2009-12-31 2014-10-28 Bmc Software, Inc. Utility-optimized scheduling of time-sensitive tasks in a resource-constrained environment
KR100980599B1 (ko) 2010-01-19 2010-09-07 코아인텍주식회사 입출력 공유장치를 이용한 클라우드 서비스 시스템
US8103906B1 (en) 2010-10-01 2012-01-24 Massoud Alibakhsh System and method for providing total real-time redundancy for a plurality of client-server systems
US9075661B2 (en) 2010-10-20 2015-07-07 Microsoft Technology Licensing, Llc Placing objects on hosts using hard and soft constraints
US20120102506A1 (en) 2010-10-20 2012-04-26 Microsoft Corporation Web service patterns for globally distributed service fabric
US8417737B2 (en) 2010-10-20 2013-04-09 Microsoft Corporation Online database availability during upgrade
US8296267B2 (en) 2010-10-20 2012-10-23 Microsoft Corporation Upgrade of highly available farm server groups
US20120102480A1 (en) 2010-10-20 2012-04-26 Microsoft Corporation High availability of machines during patching
US8751656B2 (en) 2010-10-20 2014-06-10 Microsoft Corporation Machine manager for deploying and managing machines
US8386501B2 (en) * 2010-10-20 2013-02-26 Microsoft Corporation Dynamically splitting multi-tenant databases
US8799453B2 (en) 2010-10-20 2014-08-05 Microsoft Corporation Managing networks and machines for an online service
US8850550B2 (en) 2010-11-23 2014-09-30 Microsoft Corporation Using cached security tokens in an online service
US9721030B2 (en) 2010-12-09 2017-08-01 Microsoft Technology Licensing, Llc Codeless sharing of spreadsheet objects

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101657804A (zh) * 2007-04-13 2010-02-24 微软公司 可扩展和可编程多承租人服务体系结构

Also Published As

Publication number Publication date
US8386501B2 (en) 2013-02-26
US9015177B2 (en) 2015-04-21
US20120102067A1 (en) 2012-04-26
CN102436485A (zh) 2012-05-02
SG189386A1 (en) 2013-05-31
US20130159344A1 (en) 2013-06-20
WO2012054185A1 (en) 2012-04-26

Similar Documents

Publication Publication Date Title
CN102436485B (zh) 动态拆分多承租人数据库
CN102541987B (zh) 升级期间的在线数据库可用性
CN102426543B (zh) 使用硬和软限制将对象放置在主机上
CN102571905B (zh) 一种为在线服务管理网络和机器的方法和系统
CN102571906B (zh) 打补丁期间机器的高可用性
CN102438041B (zh) 高可用性场服务器组的升级
CN102521009B (zh) 创建并部署服务准备完毕虚拟硬盘
CN102523101B (zh) 机器管理器服务结构
CN102426530B (zh) 使用高特权过程远程安装软件
CN102420847B (zh) 在在线服务中以高可用性路由通信
CN102455937A (zh) 用于全局分布的服务结构的Web服务模式

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: 20150727

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

Effective date of registration: 20150727

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.