对数据库进行分区的制作方法

文档序号:12142122阅读:486来源:国知局
对数据库进行分区的制作方法与工艺

本申请要求在2014年5月31日提交的临时美国专利申请序列号62/006,129和在2014年7月22日提交的非临时美国专利申请序列号14/338,211的优先权,并且其被整体地通过引用并入本文中。

技术领域

在本文中公开的主题一般地涉及对数据库的分区。具体地,本公开一般地涉及用于将数据库分区成多个数据库碎片的技术。



背景技术:

数据库碎片可以是数据库或搜素引擎中的分区。每个单独的分区可以被称为碎片。例如,水平分区可以是数据库设计原理,由此数据库表的行被单独地保持。每个分区形成碎片的部分,其可能进而位于分离的数据库服务器或物理位置上。

通过将数据库分区成多个碎片,数据库表可以被划分并且分布到多个服务器中。作为结果,减少每个数据库中的每个表中的行的总数量。此外,每个数据库中的每个表中的行的数量中的减少可以减少索引大小,其可以改进搜索性能。

此外,数据库碎片可以被放置在分离的硬件上,并且多个碎片可以被放置在多个机器上。这使能数据库在大量机器上的分布,其意味着数据库性能可以分散在多个机器上,从而大大改进性能。

此外,如果仅使用与所有数据相关联的一个已知变量(例如,成员资格标识)对数据库碎片进行分片和查询,则推断适当的碎片成员资格可以是可能的。作为结果,可以基于已知变量对数据库进行自动地分片。

然而,在一些实现中,可以根据与数据相关联的多个变量而不是仅一个已知变量来查询一些数据库。在当前实现中,当不能基于一个已知变量对数据库进行分片时,可能需要通过用手编码进行的手动分区用于对数据库进行分片。

附图说明

在附图中的图中图示一些实施例作为示例而不是限制。

图1是图示根据一些示例实施例的适合于社交网络的网络环境的网络图。

图2是图示根据一些实施例的社交网络服务的各种模块的框图。

图3图示根据一些实施例的邀请档案系统的高层架构。

图4是图示根据一些实施例的针对图3的邀请档案流程的方法的流程图。

图5图示根据本发明的一些实施例的水轮式(waterwheel)分片的初始阶段。

图6图示根据本发明的一些实施例的水轮式分片的旋转阶段。

图7图示根据本发明的一些实施例的水轮式分片的稳定阶段。

图8是图示根据一些实施例的在图5-7中描述的水轮式分片方法的流程图。

图9是图示根据一些示例实施例的能够从机器可读介质读取指令并且执行在本文中讨论的方法中的任何一个或多个的机器的部件的框图。

具体实施方式

示例方法和系统针对用于对数据库进行自动地分区的技术。更具体地,本公开涉及用于不能基于一个已知变量对数据库进行分片时的分片技术的方法、系统和计算机程序产品。

诸如用于社交网络的邀请数据库之类的数据库在索引表达到硬件的物理限制时可以被分区成多个碎片。

例如,在社交网络中,当成员向另一个成员请求用以联系的邀请时,邀请可以被存储在邀请数据库中。

在常规实现中,邀请服务可以用一个单个(例如,未分片的)数据库实例进行通信。数据库(例如,邀请贮藏所(store))可以管理针对社交网络的所有邀请。作为结果,单个索引表连续增大,其可能达到硬件限制。因此,随着社交网络增大,与每个邀请相关联的索引表的数据大小可能达到数据库的存储限制。

然而,在一些实例中,数据库模式和数据的绝对大小可以达到物理硬件安装的限制。尽管邀请以字节计的大小是小的并且假设充足的经费,物理存储可以被无限地添加,但是由于要被维护的数据的索引,存储器和CPU容量可能是限制性的。

在常规实现中,当数据库的大小太大时,数据库被分片。例如,在社交网络系统中,数据库的另一个实例被添加,并且数据库查询可以基于特定关键字(例如,成员ID)。

然而,可能需要根据三个单独的关键字来对邀请服务进行分片。三个单独的关键字可以是邀请者标识符(ID)、被邀请者ID和邀请ID。邀请者ID可以是请求者的成员ID。被邀请者ID可以是被请求的成员ID或电子邮件地址。邀请ID可以是全局唯一邀请标识符。

例如,邀请电子邮件可以被发送到被邀请者的电子邮件地址。因此,当被邀请者接受邀请时,由(如在图2中所示的)(一个或多个)邀请模块206接收的仅有信息可以是被邀请者的电子邮件地址或唯一邀请ID。为了保护成员的隐私,可以不与邀请电子邮件一起发送邀请者ID,其可以是邀请者的成员ID,。

假如可以使用三个单独关键字来查询数据库,则对数据库进行分片的常规方法可能不正确地工作。当使用常规方法进行分片时,可能需要存储器中的多个映射表。此外,分片在使用常规方法时可能不被快速实现。

在一些实施例中,不能基于单个已知变量对邀请数据库进行分区。在一些实例中,每个邀请可以包括取决于邀请来自哪里的三个不同的标识。不同的标识可能归因于安全和隐私顾虑,以便保护成员数据。为了说明,每个邀请可以与请求联系(connection)的成员(即,被邀请者标识符(ID))、被请求联系的成员(即,邀请者ID)以及唯一邀请ID相关联。

如先前提及的那样,由于安全和隐私顾虑,可以不总是基于特定已知变量(例如,被邀请者ID、邀请者ID、唯一邀请ID)来查询邀请。例如,当第一用户想要查看所有未决邀请请求时,基于作为邀请者ID的第一用户的成员ID来查询数据库。替代地,当第二用户想要查看该第二用户已经发送出的所有未决邀请时,基于作为被邀请者ID的第二用户的成员ID来查询数据库。因此,在一些实例中,邀请数据库的当前实现可以不被自动地分区,由于社交网络可能能够容易地查询邀请数据库。

为了进一步说明,取决于邀请的类型,可以仅基于一个变量(例如,被邀请者ID、邀请者ID、唯一邀请ID)来查询邀请。如先前提及的那样,当第一用户想要查看所有未决邀请请求时,社交网络系统可以仅用邀请者ID 来查询邀请数据库。此外,第一用户可以是社交网络的部分(例如,使用第一用户的成员ID查询数据库),或者社交网络外部的成员(例如,使用与第一用户相关联的电子邮件地址查询数据库)。替代地,当第二用户想要查看由该第二用户发送出的所有邀请时,社交网络可以仅用被邀请者ID来查询邀请数据库(例如,使用第二用户的成员ID来查询数据库)。如由该示例说明的那样,假如数据库查询可以具有不同的非重叠的信息,则不能仅基于一个已知变量容易地对邀请数据库进行分区。

手动归档

在当前实现中,手动归档可以发生在邀请数据库达到归因于数据的索引的存储器和CPU容量限制时。例如,给定设置的时间段,可以从数据库移除比开始日期旧的所有邀请并且将其复制到档案。这可以是由数据库管理员执行的手动操作。手动归档可以是难以置信地复杂的,并且在归档过程中可能存在错误的风险。此外,对社交网络而言可能存在当机时间。此外,在一些实例中,被归档的旧未决邀请可能不起作用。例如,当用户在长时间段之后接受未决邀请时,邀请可能已经被归档,这可能不导致在数据库中更新邀请并且在被邀请者与邀请者之间形成关系链接。

自动积极归档

本发明的实施例可以提供对邀请的数据大小的自动管理。物理大小可以由服务控制,所述服务负责通过对数据归档从贮藏所扫除旧的或过期的数据。

图1是图示根据一些示例实施例的适合于社交网络服务的网络环境100的网络图。网络环境100包括服务器机器110、数据库115、第一用户132的第一设备130和第二用户152的第二设备150,所有都经由网络190通信地耦合到彼此。服务器机器110可以形成基于网络的系统105(例如,被配置成向设备130和150提供一个或多个服务的基于云的服务器系统)的全部或部分。数据库115可以是如在图2中图示的邀请贮藏所218。 如在本文中进一步描述的那样,可以实现用于对数据库115进行分片的技术。可以全部地或部分地在计算机系统中实现服务器机器110、第一设备130和第二设备150中的每个,如以下关于图9所描述的那样。

也在图1中示出了用户132和152。用户132和152中的一个或两个可以是人类用户(例如,人类)、机器用户(例如,由软件程序配置成与设备130交互的计算机)或者其任何适合的组合(例如,由机器辅助的人类或由人类监管的机器)。用户132不是网络环境100的部分,但是与设备130相关联并且可以是设备130的用户。例如,设备130可以是属于用户132的台式计算机、车辆计算机、平板计算机、导航设备、便携式媒体设备、智能电话或可穿戴设备(例如,智能手表或智能眼镜)。同样地,用户152不是网络环境100的部分,但是与设备150相关联。作为示例,设备150可以是属于用户152的台式计算机、车辆计算机、平板计算机、导航设备、便携式媒体设备、智能电话或可穿戴设备(例如,智能手表或智能眼镜)。在一些实例中,用户132可以向用户152发送邀请以在社交网络(例如,基于网络的系统105)中进行联系。

可以以通用计算机来实现在图1中示出的机器、数据库或设备中的任何,所述通用计算机被软件(例如,一个或多个软件模块)修改(例如,配置或编程)成用以执行在本文中针对该机器、数据库或设备描述的功能中的一个或多个的专用计算机。例如,以下关于图9讨论能够实现在本文中描述的方法中的任何一个或多个的计算机系统。 如在本文中使用的那样,“数据库”是数据存储资源并且可以存储被结构化为如下的数据:文本文件、表、电子表格、关系数据库(例如,对象关系数据库)、三元组贮藏所、分层数据贮藏所、邀请贮藏所218或其任何适合的组合。而且,在图1中图示的机器、数据库或设备中的任何两个或更多可以被组合成单个机器,并且可以在多个机器、数据库或设备之间再分在本文中针对任何单个机器、数据库或设备描述的功能。

网络190可以是使能在机器、数据库和设备(例如,服务器机器110和设备130)间或之间的通信的任何网络。因此,网络190可以是有线网络、无线网络(例如,移动或蜂窝网络)或其任何适合的组合。网络190可以包括构成私有网络、公用网络(例如,因特网)或其任何适合的组合的一个或多个部分。因此,网络190可以包括合并如下的一个或多个部分:局域网(LAN)、广域网(WAN)、因特网、移动电话网(例如,蜂窝网)、有线电话网(例如,简易老式电话系统(POTS)网)、无线数据网(例如,WiFi网或WiMax网)或其任何适合的组合。网络190的任何一个或多个部分可以经由传输介质传送信息。如在本文中使用的那样,“传输介质”指代能够传送(例如,传输)用于由机器(例如,由这样的机器的一个或多个处理器)执行的指令的任何无形(例如,瞬时)介质,并且包括数字或模拟通信信号或用来促进这样的软件的通信的其他无形介质。

图2是图示根据一些示例实施例的社交网络系统210的部件的框图。社交网络系统210是图1的基于网络的系统105的示例。 社交网络系统210可以包括用户接口202、(一个或多个)应用服务器模块204以及(一个或多个)邀请模块206,全部被配置成(例如,经由总线、共享存储器、交换机)与彼此通信。此外,社交网络系统210可以与图1的数据库115(诸如邀请贮藏所218)通信。邀请贮藏所218可以包括具有被邀请者ID 212、邀请者ID 214以及唯一邀请ID 216的邀请。

在本文中描述的模块中的任何一个或多个可以使用硬件(例如,机器的一个或多个处理器)或硬件和软件的组合来实现。例如,在本文中描述的任何模块可以将(例如,在机器的一个或多个处理器之中的)处理器配置成执行在本文中针对该模块描述的操作。此外,这些模块中的任何两个或更多可以被组合成单个模块,并且可以在多个模块之间再分在本文中针对单个模块描述的功能。此外,根据各种示例实施例,在本文中描述为被实现在单个机器、数据库或设备内的模块可以跨多个机器、数据库或设备分布。

在图2中,前端包括用户接口模块(例如,web服务器)202,其经由网络190从各种客户端-计算设备(例如,设备130和150)接收请求(例如,邀请请求),并且将适当的响应传送到请求客户端设备。例如,(一个或多个)用户接口模块202可以接收以超文本传输协议(HTTP)请求或者其他基于web的应用编程接口(API)请求的形式的邀请请求。应用逻辑层包括(一个或多个)各种应用服务器模块204,其结合(一个或多个)用户接口模块202用从数据层中的各种数据资源(例如,邀请贮藏所218)检索的数据生成各种用户接口(例如,web页面)。在一些实施例下,个别应用服务器模块204被用于实现与社交网络系统210的各种服务和特征相关联的功能。

邀请模块206结合(一个或多个)用户接口模块202以及(一个或多个)应用服务器模块204可以基于邀请查询向成员呈现未决邀请。取决于请求的类型,可以基于被邀请者ID 212、邀请者ID 214或唯一邀请ID 216查询未决邀请。

如先前提及的那样,邀请查询可能不具有所有三个标识符(例如,被邀请者ID 212、邀请者ID 214、唯一邀请ID 216)。因此,在一些实例中,邀请数据库查询可能必须是通用的以基于三个标识符中的任一个来返回邀请信息。

例如,取决于邀请的类型,可以仅基于一个变量(例如,被邀请者ID 212、邀请者ID 214、唯一邀请ID 216)来查询邀请。当第一成员想要查看所有未决邀请请求时,社交网络系统210可以仅用邀请者ID 214来查询邀请贮藏所218。替代地,当第二成员想要查看由该第二成员发送出的所有邀请时,社交网络系统210可以仅用被邀请者ID 212来查询邀请贮藏所218。

社交网络服务可以向它们的用户提供用于限定他们与其他人的关系(例如,第一程度联系、第二程度联系)的机制。真实世界关系的该数字表示经常被称为社交图数据。节点的联系可以基于用以在不同的实体之间联系的邀请。

在一些实例中,社交图数据可以由第三方社交网络服务维护。例如,用户可以指示与多种真实世界实体和/或对象的关系或关联。典型地,当用户与诸如按钮之类的特定图形用户接口元件交互时用户输入被捕捉,其一般与特定实体或对象结合地呈现并且经常被以某个有意义的方式(例如,“喜欢”、“+1”、“关注”)加标签。

一旦被登记,成员就可以邀请其他成员,或者被其他成员邀请以经由社交网络服务联系。“联系”可能要求成员的双边协议,使得两个成员确认联系的建立。根据一些实施例,成员的双边协议可以基于联系的邀请。

类似地,在一些实施例下,成员可以选择“关注”另一个成员。与建立联系形成对比,“关注”另一个成员的概念典型地是单边操作,并且至少在一些实施例下,不要求由被关注的成员的确认或批准。当一个成员关注另一个时,关注的成员可以接收由被关注的成员发布的或者涉及由被关注的成员从事的各种活动的状态更新或其他消息。在一些实例中,邀请可以被用于用户关注其他成员。此外,邀请贮藏所218可以存储与关注其他成员的成员相关联的数据。

在任何情况下,在邀请贮藏所218内存储并且维护针对第一成员与第二成员或与其他实体和对象之间的关联和/或关系的各种邀请的请求。

邀请归档系统

图3图示根据一些实施例的邀请档案系统的高层架构。在一些实例中,邀请档案系统可以使用自动积极归档技术。如在图3中图示的那样,本发明的实施例可以通过对来自邀请贮藏所218的旧邀请归档来提供对邀请的数据大小的自动管理。例如,邀请索引的物理大小可以由(一个或多个)邀请模块206控制。(一个或多个)邀请模块206可以对在某日期之前创建的来自邀请贮藏所218的邀请进行归档。替代地,当邀请在某日期之前被创建时,(一个或多个)邀请模块206可以从邀请贮藏所218删除所述邀请。

如在图3中图示的那样,(一个或多个)邀请模块206可以在305处创建邀请。邀请可以是被存储(例如,写入)在邀请贮藏所218中的邀请325中的一个。可以使用提取、变换和加载过程310将邀请复制到Hadoop 315。

此外,可以在Hadoop 315中执行离线工作以标识应该被归档或删除的邀请记录。标识可以基于邀请被创建的日期。例如,比一年旧的所有邀请可以自动地被归档。

此外,离线工作可以经由消息代理320(例如,Kafka事件)传输与邀请325相关联的消息。消息由(一个或多个)邀请模块206接收。随后,(一个或多个)邀请模块206可以将来自由消息代理320指定的邀请325的邀请复制到档案实例330并且将该邀请从邀请贮藏所218移除。

自动积极归档

图4是图示根据一些实施例的针对图3的邀请档案流程的方法400的流程图。

在操作410处,(一个或多个)邀请模块206可以创建邀请。邀请可以被写入到邀请贮藏所218。例如,当第一成员请求第二成员在社交网络中联系时,可以创建邀请。基于请求,(一个或多个)邀请模块206可以创建具有被邀请者ID 212、邀请者ID 214以及唯一邀请ID 216的邀请。可以使用这些标识符中的任一个从邀请贮藏所218查询邀请。

在操作420处,可以经由提取、变换和加载过程310将邀请复制到Hadoop 315。操作420可以与图3中的过程310相似。

在操作430处,可以在Hadoop 315中执行离线工作以标识应该被归档和/或删除的邀请记录。

在操作440处,离线Hadoop工作可以使用消息代理320发射由(一个或多个)邀请模块206(或其代表)接收的Kafka事件。

在操作450处,(一个或多个)邀请模块206可以将在操作440中在Kafka事件中指定的邀请记录复制到档案实例330并且将记录从邀请贮藏所218移除。

方法400可以具有不要求对档案邀请的手动介入(即,通过用手编码进行的手动分区)的益处。例如,一旦邀请被创建,归档过程就可以是完全自动化的。此外,如果服务在管理由Hadoop工作请求的邀请方面有任何问题,则可以在下一个执行中捕捉错失的邀请。

然而,假如有必须被管理以跟上创建的邀请的数量的大(例如,数百万、数十亿)量邀请,则方法400可能不是可行的。在方法400下,新的邀请可以产生附加负荷,其可能减小数据库中的信息的检索速度。此外,方法400可能具有连续增大的经归档的数据集,其可能最终达到存储介质的最大容量。

因此,在本文中(例如,图5-8)描述了用于水轮式分片的技术以克服用于对邀请归档的当前实现的不足。

水轮式分片

图5图示根据本发明的一些实施例的水轮式分片的初始阶段。水轮式分片可以使用邀请的有限生命期作为用于路由到碎片的机制。水轮式分片可以由碎片的连续移动窗表征,其表示邀请中的达特定时间量(例如,6个月、几年)的邀请,其中更旧的碎片被归档到离线档案中。

在一些实例中,初始阶段可以修改代码以支持多个数据库(DB)实例。在该场景下,两个实例可以被读取/写入,但是仅一个将是新邀请记录的接受者。现有碎片510可以包含具有在日期N当日或之前的创建时间的现有邀请的集合。新碎片505可以存储其中创建日期紧接在日期N之后开始的邀请325。所有新邀请325可以被写入到新碎片505。此外,当记录改变(例如,接受的邀请、拒绝的邀请、邀请请求被移除)时,在两个碎片510和505中的邀请325可以被更新。

假如新邀请325被存储在新碎片505中,则新碎片505可以被设置有读取、更新和创建功能。现有碎片510可以被设置有读取和更新功能。在针对邀请信息对邀请贮藏所218的查询期间,(一个或多个)邀请模块206可以向新碎片505和现有碎片510两者提交两个读取查询。

不像其中基于特定关键字查询特定碎片的常规分片方法,在水轮式分片方法中,两个新碎片都被查询。在一些实例中,时间戳可以不必定让(一个或多个)邀请模块206确定查询哪个碎片。作为结果,可以不存在确定查询哪个碎片的分片逻辑。因此,(一个或多个)邀请模块206可以将两个碎片(即,新碎片505、现有碎片510)看作可读储存器。

替代地,(一个或多个)邀请模块206可以基于确定的信息来确定查询哪个碎片。例如,如果(一个或多个)邀请模块206可以确定邀请在日期N之前被创建,则(一个或多个)邀请模块206可以查询现有碎片510。

一旦所请求的信息被接收到,(一个或多个)邀请模块206就可以更新传输了所请求的信息的碎片。例如,如果所请求的邀请信息被存储在新碎片505中,则所请求的邀请信息由新碎片505来传输。随后,如果邀请信息由被邀请者请求使得被邀请者可以接受邀请,则(一个或多个)邀请模块206可以更新新碎片505中的邀请信息以指示邀请已经被接受。

当邀请被接受、拒绝、撤回或明确地忽略时,邀请的状态可以被更新。被邀请者可以接受或拒绝邀请。此外,在被邀请者已经接受或拒绝邀请之前,邀请者可以撤回所述邀请。此外,被邀请者可以明确地忽略邀请。

应该指出的是,该场景的一个实现依赖于分散、聚集和读取策略。在分散、聚集和读取策略中,当邀请被请求时,现有碎片510和新碎片505两者都可以被查询。例如,当邀请325信息被请求时,(一个或多个)邀请模块206可以查询新碎片505和现有碎片510两者。

图6图示根据本发明的一些实施例的水轮式分片的旋转阶段。旋转阶段可以出现在特定时间量(例如,6个月、1年、2年)已经过去之后。

一旦指定的时间窗(例如,6个月、1年、2年)已经过去,水轮式分片过程就可以如其在初始阶段中所做的那样继续进行。诸如新碎片605之类的新数据库实例可以被添加到邀请贮藏所218。此外,来自图5的先前的新碎片505可以变成图6中的现有碎片610。此外,来自图5的先前的现有碎片510可以变成图6中的现有-1碎片615。

例如,在6个月增量实现中,新碎片605可以被添加到邀请贮藏所218,并且新碎片605可以存储所有新邀请325。现有碎片610可以存储来自过去6个月的所有先前创建的邀请325。此外,比6个月旧的所有邀请325可以被存储在现有-1碎片615中。

在一些实例中,现有-1碎片615可以被归档并且从在线访问(例如,邀请贮藏所218)移除。现有-1碎片615然后可以被手动归档而不害怕影响任何产生式系统(production system)。例如,基于经验数据,当邀请已经在日期N(例如,6个月、1年、2年)之前被创建时,邀请被接受的可能性非常极小。在一些实例中,如果邀请被归档并且被邀请者想要联系邀请者,则被邀请者可以向邀请者发送邀请请求。

图7图示根据本发明的一些实施例的水轮式分片的稳定阶段。

在一些实例中,随着时间前进,社交网络系统210中的邀请服务继续添加新存储实例(例如,新碎片705)并对较旧的存储实例(例如,现有-1碎片715、现有-2碎片720、现有-n碎片725)进行归档。

例如,当新碎片705被添加时,来自图6的先前的新碎片605可以变成现有碎片710。所有新创建的邀请325可以被存储在新碎片705中。此外,来自图6的现有碎片610可以被归档成现有-1碎片715。此外,图6中的现有-1碎片615现在变成现有-2碎片720,等等。

图8是图示根据一些实施例的在图5-7中描述的水轮式分片方法的流程图。

在操作810处,(一个或多个)邀请模块206可以维护多个数据库实例。邀请贮藏所218可以是多个数据库实例的示例。此外,多个数据库实例可以具有第一分区和第二分区。新碎片705、新碎片605和新碎片505可以是第一分区的示例。现有碎片710、现有碎片610和现有碎片510可以是第二分区的示例。

在操作820处,(一个或多个)邀请模块206可以将第一(例如,在第一日期之后创建的、新创建的)邀请分配到第一分区。第一邀请可以被新创建和/或在第一日期之后创建。例如,(一个或多个)邀请模块206可以将已经在第一日期(例如,2014年7月1日)之后创建的所有邀请325分配到第一分区。此外,在将来的某时间(例如,6个月、1年、2年),当另一个新碎片被创建时,新创建的邀请可以被存储在新碎片中。

在操作830处,(一个或多个)邀请模块206可以将现有邀请325分配到第二分区。现有邀请可以在第一日期(例如,2014年7月1日)之前并且在第二日期(例如,2014年1月1日)之后被创建,其中第二日期出现在第一日期之前。

在操作840处,(一个或多个)邀请模块206可以对旧邀请进行归档。该旧邀请可以在第二日期(例如,2014年1月1日)之前被创建。为了说明操作820-840,在先前描述的6个月增量实现中,新创建的邀请和在2014年7月1日之后创建的所有邀请被分配(例如,存储)到第一分区。此外,在2014年7月1日之前创建的现有邀请被分配到第二分区,并且在2014年1月1日之前创建的邀请被归档。

随后,当(一个或多个)邀请模块206在操作850处接收邀请请求时,(一个或多个)邀请模块206可以在操作860处向第一分区和第二分区请求信息。邀请请求可以包含被邀请者ID 212、邀请者ID 214和唯一邀请ID 216中的至少一个。在一些实例中,邀请请求可以仅包含ID 212-216中的一个。因此,邀请贮藏所218和(一个或多个)邀请模块206被设计成足够通用以基于被邀请者ID 212、邀请者ID 214和唯一邀请ID 216中的任一个来查询邀请信息。

一旦在操作860处接收到(例如,查询到)邀请信息,则(一个或多个)邀请模块206可以在操作870处接收所请求的邀请信息。接收到的信息可以用于更新在社交网络系统210中的成员之间的联系。

可选地,与传输邀请信息同时或者在其之后,(一个或多个)邀请模块206可以更新邀请贮藏所218。例如,如果成员已经接受用以联系的邀请,则邀请贮藏所218可以被用该新信息更新(例如,邀请请求可以在被接受时被更新)。

该方法的益处中的一个在于其不要求通过用手编码进行的手动分区。逐渐退休的基于时间的碎片虑及实现精巧中的灵活性。例如,实现可以采用分阶段的方法,而不用每个阶段增加数据库的复杂性。

此外,数据路由器技术可以与应用到数据被读取和写入的地方的自动操作一起使用。例如,数据库可以基于邀请的创建日期知道查询碎片中的哪一个来检索邀请信息。

此外,在新碎片被添加并且旧碎片被归档时,水轮式分片可以不要求由数据库管理团队进行的周期性维护。此外,在一些实例中,水轮式分片可能需要促使服务开发者注意经由服务配置使碎片位置增加。

根据各种示例实施例,在本文中描述的方法中的一个或多个可以促进对数据库进行分区。此外,在本文中描述的方法中的一个或多个可以促进用多个已知变量中的一个来查询分成部分的数据库。

当合起来考虑这些效果时,在本文中描述的方法中的一个或多个可以消除对在其他方面将在对数据库进行分区中涉及到的某些努力或资源的需要。可以类似地减少由(例如,在网络环境100内的)一个或多个机器、数据库或设备使用的计算资源。这样的计算资源的示例包括处理器周期、网络业务量、存储器使用、数据存储能力、功率消耗以及冷却能力。

在本文中描述的示例方法的各种操作可以至少部分由被临时配置(例如,通过软件)或者被永久配置成执行相关操作的一个或多个处理器来执行。无论是被临时地还是永久地配置,这样的处理器可以构成操作以执行一个或多个操作或功能的处理器实现模块或对象。在一些示例实施例中,在本文中提到的模块和对象包括处理器实现模块和/或对象。

类似地,在本文中描述的方法可以至少部分是处理器实现的。例如,方法的操作中的至少一些可以被一个或多个处理器或处理器实现模块执行。某些操作的性能可以在不仅驻留在单个机器或计算机内而且被跨许多机器或计算机部署的一个或多个处理器之间分布。在一些示例实施例中,一个或多个处理器可以位于单个位置中(例如,在家庭环境、办公环境内或在服务器机群处),而在其他实施例中处理器可以跨许多位置分布。

一个或多个处理器还可以操作以支持“云计算”环境中的或者“软件即服务”(SaaS)的背景内的相关操作的执行。例如,操作中的至少一些可以通过(作为包括处理器的机器的示例的)计算机的组来执行,这些操作经由网络(例如,因特网)和经由一个或多个适当的接口(例如,应用编程接口(API))可访问。

图9是图示根据一些示例实施例的机器900的部件的框图,所述机器900能够从机器可读介质922(例如,非瞬时机器可读介质、机器可读存储介质、计算机可读存储介质或其任何适合的组合)读取指令924并且全部或部分地执行在本文中讨论的方法中的任何一个或多个。具体地,图9示出以计算机系统(例如,计算机)的示例形式的机器900,在其内可以全部或部分地执行用于使机器900实行在本文中讨论的方法中的任何一个或多个的指令924(例如,软件、程序、应用、applet、app或其他可执行代码)。

在替代的实施例中,机器900作为独立的设备进行操作或者可以被连接(例如,被联网)到其他机器。在联网部署中,机器900可以以服务器-客户端网络环境中的服务器机器或客户端机器的身份或者作为分布式(例如,端对端)网络环境中的对等机器进行操作。机器900可以是服务器计算机、客户端计算机、个人计算机(PC)、平板计算机、膝上型计算机、上网本、蜂窝电话、智能电话、机顶盒(STB)、个人数字助理(PDA)、web器具、网络路由器、网络交换机、网桥或能够顺序地或以其他方式执行指定要由该机器采取的动作的指令924的任何机器。进一步地,虽然仅单个机器被图示,但是术语“机器”还将被理解成包括单独地或联合地执行指令924以实行在本文中讨论的方法中的任何一个或多个中的全部或部分的机器的任何集合。

机器900包括处理器902(例如,中央处理器单元(CPU)、图形处理单元(GPU)、数字信号处理器(DSP)、专用集成电路(ASIC)、射频集成电路(RFIC)或其任何适合的组合)、主存储器904和静态存储器906,其被配置成经由总线908与彼此通信。处理器902可以包含微电路,其是通过指令924中的一些或全部而临时地或永久地可配置的,使得处理器902可配置成全部或部分地执行在本文中描述的方法中的任何一个或多个。例如,处理器902的一个或多个微电路的集合可以可配置成执行在本文中描述的一个或多个模块(例如,软件模块)。

机器900可以进一步包括图形显示器910(例如,等离子体显示器面板(PDP)、发光二极管(LED)显示器、液晶显示器(LCD)、投影仪、阴极射线管(CRT)或能够显示图形或视频的任何其他显示器)。机器900还可以包括字母数字输入设备912(例如,键盘或小键盘)、光标控制设备914(例如,鼠标、触摸板、追踪球、操纵杆、运动传感器、眼追踪设备或其他定点仪器)、存储单元916、音频生成设备918(例如,声卡、放大器、扬声器、耳机插孔或其任何适合的组合)以及网络接口设备920。

存储单元916包括机器可读介质922(例如,有形且非瞬时机器可读存储介质),使在本文中描述的方法或功能中的任何一个或多个具体化的指令924存储在其上。指令924在由机器900执行其之前或期间还可以完全或至少部分地驻留在主存储器904内、在处理器902内(例如,在处理器的高速缓冲存储器内)或两者。因此,主存储器904和处理器902可以被认为是机器可读介质(例如,有形且非瞬时机器可读介质)。可以经由网络接口设备920通过网络190传输或接收指令924。例如,网络接口设备920可以使用任何一个或多个传输协议(例如,HTTP)来传送指令924。

在一些示例实施例中,机器900可以是便携式计算设备,诸如智能电话或平板计算机,并且具有一个或多个附加的输入部件930(例如,传感器或测量仪器)。这样的输入部件930的示例包括图像输入部件(例如,一个或多个照相机)、音频输入部件(例如,麦克风)、方向输入部件(例如,罗盘)、位置输入部件(例如,全球定位系统(GPS)接收器)、定向部件(例如,陀螺仪)、运动检测部件(例如,一个或多个加速计)、高度检测部件(例如,测高计)以及气体检测部件(例如,气体传感器)。由这些输入部件930中的任何一个或多个收获的输入可以是可访问的且可用的,供由在本文中描述的任何模块使用。

如在本文中使用的那样,术语“存储器”指代能够临时地或永久地存储数据的机器可读介质,并且可以被理解成包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、缓冲存储器、闪存和高速缓冲存储器。虽然机器可读介质922在示例实施例中被示出是单个介质,但是术语“机器可读介质”应该被理解成包括能够存储指令924的单个介质或多个介质(例如,集中式或分布式数据库或相关联的高速缓冲存储器和服务器)。术语“机器可读介质”还将被理解成包括任何介质或者多个介质的组合,其能够存储用于由机器900执行的指令924,使得指令924在被机器900的一个或多个处理器(例如,处理器902)执行时使机器900全部或部分地实行在本文中描述的方法中的任何一个或多个。因此,“机器可读介质”指代单个存储装置或设备以及包括多个存储装置或设备的基于云的存储系统或存储网络。术语“机器可读介质”因此将被理解成包括但不限于以固态存储器、光学介质、磁介质或其任何适合的组合的形式的一个或多个有形(例如,非瞬时)数据仓库。

贯穿本说明书,复数实例可以将描述的部件、操作或结构实现为单个实例。尽管一个或多个方法中的个别操作被图示和描述为单独的操作,但是个别操作中的一个或多个可以被同时执行,并且没有什么要求以图示的顺序来执行操作。被呈现为示例配置中的单独的部件的结构和功能可以被实现为组合的结构或部件。类似地,被呈现为单个部件的结构和功能可以被实现为单独的部件。

某些实施例在本文中被描述为包括逻辑或许多部件、模块或机构。模块可以构成软件模块(例如,存储或以其他方式具体化在机器可读介质上或传输介质中的代码)、硬件模块或其任何适合的组合。“硬件模块”是能够执行某些操作的有形(例如,非瞬时)单元并且可以被以某物理方式配置或布置。在各种示例实施例中,可以通过软件(例如,应用或应用部分)将一个或多个计算机系统(例如,独立的计算机系统、客户端计算机系统或服务器计算机系统)或者计算机系统的一个或多个硬件模块(例如,处理器或处理器组)配置为操作以执行如在本文中描述的某些操作的硬件模块。

在一些实施例中,可以机械地、电子地或其任何适合的组合来实现硬件模块。例如,硬件模块可以包括被永久地配置成执行某些操作的专用电路或逻辑。例如,硬件模块可以是专用处理器,诸如现场可编程门阵列(FPGA)或ASIC。硬件模块还可以包括被通过软件临时配置成执行某些操作的可编程逻辑或电路。例如,硬件模块可以包括被涵盖在通用处理器或其他可编程处理器内的软件。将领会到,可以通过成本和时间考虑来驱动在专用且被永久配置的电路中或者在被临时配置(例如,被通过软件配置)的电路中机械地实现硬件模块的决定。

因此,短语“硬件模块”应该被理解成涵盖有形的实体并且这样的有形的实体可以被物理上构造、被永久地配置(例如,被硬接线)或者被临时地配置(例如,被编程)来以某方式操作或者来执行在本文中描述的某些操作。如在本文中使用的那样,“硬件实现模块”指代硬件模块。考虑其中硬件模块被临时地配置(例如,被编程)的实施例,硬件模块中的每个在时间中的任一个实例处不需要被配置或例示。例如,在硬件模块包括被通过软件配置成变成专用处理器的通用处理器的情况下下,可以在不同时间将该通用处理器配置为相应地不同的专用处理器(例如,包括不同的硬件模块)。软件(例如,软件模块)可以因此例如在时间的一个实例处将一个或多个处理器配置成构成特定硬件模块并且在时间的不同实例处将一个或多个处理器配置成构成不同的硬件模块。

硬件模块可以将信息提供到其他硬件模块并且可以从其他硬件模块接收信息。因此,可以认为描述的硬件模块被通信地耦合。在多个硬件模块同时存在的情况下,可以通过在硬件模块中的两个或更多个间或之间的(例如,在适当的电路和总线上的)信号传输来实现通信。在其中多个硬件模块被在不同时间配置或例示的实施例中,可以例如通过在多个硬件模块能够访问的存储器结构中对信息的存储和检索来实现这样的硬件模块之间的通信。例如,一个硬件模块可以执行操作并且将该操作的输出存储在所述硬件模块被通信地耦合到的存储器设备中。进一步的硬件模块然后可以在稍后的时间处访问存储器设备以检索和处理所存储的输出。硬件模块还可以发起与输入或输出设备的通信,并且可以对资源(例如,信息的集合)进行操作。

某些操作的执行可以分布在不仅驻留在单个机器内而且被跨许多机器部署的一个或多个处理器之间。在一些示例实施例中,一个或多个处理器或处理器实现模块可以位于单个地理位置中(例如,在家庭环境、办公环境或服务器机群内)。在其他示例实施例中,一个或多个处理器或处理器实现模块可以跨许多地理位置分布。

可以在操作的算法或符号表示方面将在本文中讨论的主题中的一些部分呈现在被存储为机器存储器(例如,计算机存储器)内的位或二进制数字信号的数据上。这样的算法或符号表示是由数据处理领域中的那些普通技术人员使用以将他们的工作的主旨传达给本领域中的其他技术人员的技术的示例。如在本文中使用的那样,“算法”是引起期望的结果的操作或类似处理的自洽序列。在此上下文中,算法和操作涉及物理量的物理操纵。典型地,但是不必要地,这样的量可以采取能够被机器存储、访问、传输、组合、比较或以其他方式操纵的电、磁或光学信号的形式。原则上出于通常使用的原因,使用诸如“数据”、“内容”、“位”、“值”、“元素”、“符号”、“字符”、“项”、“号码”、“数字”等的词来指代这样的信号有时是方便的。然而,这些词仅是方便的标签并且将与适当的物理量相关联。

一种载体介质包括有形机器可读介质或瞬态介质,其承载诸如信号之类的用于使机器实现所述方法的指令,所述信号例如传输介质、电信号、光学信号、电磁信号。

以下描述各种编号的示例。

1. 一种方法,包括维护多个数据库实例,所述多个数据库实例具有第一分区和第二分区;使用邀请模块将第一邀请分配到第一分区,第一邀请在第一日期之后被创建;将现有邀请分配到第二分区,现有邀请在第一日期之前并且在第二日期之后被创建,并且其中第二日期出现在第一日期之前;对旧邀请进行归档,旧邀请在第二日期之前被创建;使用网络接口设备接收邀请请求,邀请请求具有被邀请者标识符、邀请者标识符和唯一标识符中的至少一个;使用被邀请者标识符、邀请者标识符和唯一标识符中的至少一个向第一分区和第二分区请求与邀请请求相关联的邀请信息;以及接收所请求的邀请信息。

2. 示例1的方法,进一步包括在自第一日期以来阈值量的时间已经流逝之后在所述多个数据库实例中创建新分区;对来自第二分区的现有邀请进行归档;以及

将新创建的邀请存储在新分区中,新创建的邀请在自第一日期以来阈值量的时间已经流逝之后被创建。

3. 示例1或2的方法,进一步包括在自第一日期以来阈值量的时间已经流逝之后在所述多个数据库实例中创建新分区;从第二分区删除现有邀请;以及将新创建的邀请存储在新分区中,新创建的邀请在自第一日期以来阈值量的时间已经流逝之后被创建。

4. 先前示例中的任一个的方法,进一步包括响应于由被邀请者对邀请请求的接受而在被邀请者与邀请者之间建立联系;以及更新存储在第一分区或第二分区中的邀请信息以包括由被邀请者对邀请请求的接受。

5. 先前示例中的任一个的方法,进一步包括响应于邀请者撤回邀请请求而对存储在第一分区或第二分区中的邀请信息进行归档。

6. 先前示例中的任一个的方法,进一步包括响应于由被邀请者对邀请请求的拒绝而更新存储在第一分区或第二分区中的邀请信息以包括由被邀请者对邀请请求的拒绝。

7. 先前示例中的任一个的方法,进一步包括响应于由被邀请者对邀请请求的忽略请求而更新存储在第一分区或第二分区中的邀请信息以包括被邀请者的忽略请求。

8. 先前示例中的任一个的方法,其中邀请模块具有第一分区中的读取许可、更新许可和写入许可。

9. 先前示例中的任一个的方法,其中邀请模块具有第二分区中的读取许可和更新许可。

10. 先前示例中的任一个的方法,其中所述多个数据库实例是在线的,并且被归档的旧邀请被离线采用。

11. 一种系统,包括邀请模块和网络接口,所述邀请模块被配置成维护多个数据库实例,所述多个数据库实例具有第一分区和第二分区;将第一邀请分配到第一分区,第一邀请在第一日期之后被创建;将现有邀请分配到第二分区,现有邀请在第一日期之前并且在第二日期之后被创建,并且其中第二日期出现在第一日期之前;对旧邀请进行归档,旧邀请在第二日期之前被创建;所述网络接口被配置成:接收邀请请求,邀请请求具有被邀请者标识符、邀请者标识符和唯一标识符中的至少一个;使用被邀请者标识符、邀请者标识符和唯一标识符中的至少一个向第一分区和第二分区请求与邀请请求相关联的邀请信息;以及接收所请求的邀请信息。

12. 示例11的系统,其中在自第一日期以来阈值量的时间已经流逝之后,邀请模块被进一步配置成在所述多个数据库实例中创建新分区;对来自第二分区的现有邀请进行归档;以及将新创建的邀请存储在新分区中,新创建的邀请在自第一日期以来阈值量的时间已经流逝之后被创建。

13. 示例11或12的系统,其中在自第一日期以来阈值量的时间已经流逝之后,邀请模块被进一步配置成在所述多个数据库实例中创建新分区;从第二分区删除现有邀请;以及将新创建的邀请存储在新分区中,新创建的邀请在自第一日期以来阈值量的时间已经流逝之后被创建。

14. 示例11到14中的任一个的系统,其中响应于由被邀请者对邀请请求的接受,邀请模块被进一步配置成在被邀请者与邀请者之间建立联系;更新存储在第一分区或第二分区中的邀请信息以包括由被邀请者对邀请请求的接受。

15. 示例11到14中的任一个的系统,其中邀请模块被进一步配置成响应于邀请者撤回邀请请求而对存储在第一分区或第二分区中的邀请信息进行归档。

16. 示例11到15中的任一个的系统,其中响应于由被邀请者对邀请请求的忽略请求,邀请模块被进一步配置成更新存储在第一分区或第二分区中的邀请信息以包括被邀请者的忽略请求。

17. 示例11到16中的任一个的系统,其中邀请模块具有第一分区中的读取许可、更新许可和写入许可。

18. 示例11到17中的任一个的系统,其中邀请模块具有第二分区中的读取许可和更新许可。

19. 一种载体介质,承载使机器执行示例中的任一个的方法的指令。

除非另外具体地陈述,在本文中使用诸如“处理”、“计算”、“估计”、“确定”、“呈现”、“显示”等的词的讨论可以指代机器(例如,计算机)的动作或过程,所述机器操纵或变换被表示为在一个或多个存储器(例如,易失性存储器、非易失性存储器或其任何适合的组合),寄存器或接收、存储、传输或显示信息的其他机器部件内的物理(例如,电子的、磁的或光学的)量的数据。此外,除非另外具体地陈述,如在专利文档中常见的那样,在本文中使用术语“一”或“一个”以包括一个或多于一个实例。最后,如在本文中使用的那样,连词“或”指代非排他性的“或”,除非另外具体地陈述。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1