CN109923533A - 在数据库中将计算与存储分离以改善弹性 - Google Patents
在数据库中将计算与存储分离以改善弹性 Download PDFInfo
- Publication number
- CN109923533A CN109923533A CN201680090728.5A CN201680090728A CN109923533A CN 109923533 A CN109923533 A CN 109923533A CN 201680090728 A CN201680090728 A CN 201680090728A CN 109923533 A CN109923533 A CN 109923533A
- Authority
- CN
- China
- Prior art keywords
- data
- calculate node
- mapped
- equipment
- caching
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种例如数据存储系统的设备包括包含指令的非瞬时性存储器以及与所述存储器通信的一个或多个处理器。所述一个或多个处理器执行所述指令以将存储设备中的数据的不同部分映射到不同缓存中的每一个,其中每个缓存位于具有处理器的计算节点中,改变所述计算节点的数量,提供修改后的映射以响应所述改变,以及向所述计算节点传递查询。当计算节点的数量发生变化时,所述计算节点可以继续不间断地运行。还可以避免在所述节点之间传输数据。
Description
相关申请案交叉申请
本申请要求于2016年11月10日递交的发明名称为“在数据库中将计算与存储分离以改善弹性”的第15/348,527号美国非临时专利申请案的在先申请优先权,该在先申请的内容以引入的方式并入本文。
背景技术
数据架构通过存储数据并提供对所述数据的访问等方式支持企业、政府和消费者用户。通常,所述架构允许许多用户快速访问大量数据。所述数据可以存储在硬盘驱动器等各种存储介质中并由服务器访问。所述服务器连接到诸如互联网这样的网络,以向手机、笔记本电脑和个人计算机或其它客户端设备等用户设备提供数据。在某些情况下,所述服务器和存储介质对用户请求提供并行处理。
发明内容
实施例1针对一种设备,所述设备包括非瞬时性存储器和一个或多个处理器,所述非瞬时性存储器包含指令;所述一个或多个处理器与所述存储器通信,其中所述一个或多个处理器执行所述指令以:将存储设备中的数据的不同部分映射到不同缓存中的每一个,其中每个缓存位于具有处理器的计算节点中,改变所述计算节点的数量,提供修改后的映射以响应所述改变,以及向所述计算节点传递查询。
实施例2针对实施例1,其中所述存储设备包括硬盘驱动器,所述一个或多个处理器执行所述指令以:将所述硬盘驱动器的分区挂载到所述缓存以修改所述映射。
实施例3针对实施例1或2,其中所述一个或多个处理器执行所述指令以:使用一致哈希来修改所述映射。
实施例4针对实施例1至3中的任一实施例,其中所述一个或多个处理器执行所述指令以:修改所述映射而不在所述缓存之间传送数据。
实施例5针对实施例1至4中的任一实施例,其中所述存储设备中的数据位于表的行中,将不同行的数据映射到不同的缓存中,所述修改后的映射改变映射到所述缓存中的每个缓存的行的数量。
实施例6针对实施例1至5中的任一实施例,其中所述一个或多个处理器执行所述指令以:使由于所述修改后的映射而不再映射到计算节点中的缓存中的一行数据保留在所述缓存中,直到所述数据被最近使用的算法删除。
实施例7针对实施例1至6中的任一实施例,其中所述一个或多个处理器执行所述指令以:针对每个计算节点,在所述缓存中创建表,所述表包括列名且初始为空;响应对所述计算节点的查询,从所述存储设备将映射到所述缓存中且需要响应所述查询的一行或多行数据加载到所述缓存中的表中。
实施例8针对实施例1至7中的任一实施例,其中所述一个或多个处理器执行所述指令以:针对每个计算节点,在所述缓存中创建表;响应对所述处理器的查询,从所述存储设备将映射到所述缓存中且需要响应所述查询的数据加载到所述缓存中的表中,不从所述存储设备将映射到所述缓存中且无需响应所述查询的数据加载到所述表中。
实施例9针对实施例1至8中的任一实施例,其中所述一个或多个处理器执行所述指令以:针对每个计算节点,如果映射到所述缓存的数据尚未在所述缓存中且需要响应查询,则从所述存储设备将所述数据复制到所述缓存中。
实施例10针对实施例1至9中的任一实施例,其中所述数据的公共部分不映射到不同的缓存。
实施例11针对实施例1至10中的任一实施例,其中所述一个或多个处理器执行所述指令以:确定所述数据中需求相对较高的部分并将所述数据中需求相对较高的部分映射到多个缓存。
实施例12针对实施例1至11中的任一实施例,其中所述一个或多个处理器执行所述指令以:针对每个计算节点,修改所述缓存中的数据以提供修改后的数据,并将所述修改后的数据写入所述存储设备。
实施例13针对实施例1至12中的任一实施例,其中所述一个或多个处理器执行所述指令以:基于回复所述计算节点提供的查询的响应时间修改所述映射。
实施例14针对实施例1至13中的任一实施例,其中所述一个或多个处理器执行所述指令以:通过所述计算节点将初始数据加载提供给所述存储设备,所述计算节点用于将数据从所述初始数据加载写入所述存储设备。
实施例15针对实施例1至14中的任一实施例,其中所述一个或多个处理器执行所述指令以:将初始数据加载提供给所述存储设备,所述初始数据加载绕过所述计算节点。
实施例16针对一种用于访问数据的计算机实现的方法,所述方法包括:使用一个或多个处理器,将表数据的一部分映射到N个计算节点中的每个计算节点,并在所述N个计算节点中的每个计算节点中创建表。所述方法还包括:在所述N个计算节点中的每一个计算节点中,通过从存储设备复制映射到所述计算节点的数据来填充所述表以响应查询。所述方法还包括:响应于增加的负载,使用额外的M个计算节点访问所述存储设备的数据,将所述表数据的一部分映射到所述N+M个计算节点中的每个计算节点,在所述M个计算节点中的每个计算节点中创建表,以及在所述M个计算节点中的每个计算节点中,通过从所述存储设备复制映射到所述计算节点的数据来填充所述表以响应查询。
实施例17针对实施例16,其中所述表数据包括多行数据,映射到每个计算节点的表数据的一部分包括所述表数据的一行或多行。
实施例18针对实施例16或17,其中所述方法还包括:使用所述一个或多个处理器,对于所述N个计算节点中的至少一个,使用SQL INSERT INTO SELECT语句来从所述存储设备复制映射到所述计算节点的数据。
实施例19针对一种非瞬时性计算机可读介质,所述非瞬时性计算机可读介质存储用于访问数据的计算机指令,所述指令由一个或多个处理器执行时,使所述一个或多个处理器执行以下步骤:基于存储设备的数据到计算节点的映射来识别用于响应查询的计算节点,其中所述映射基于所述计算节点的时变数量而时变。所述步骤还包括:将所述查询传送给所述计算节点,并从所述计算节点接收对所述查询的回复。所述计算节点使用映射到所述计算节点的数据提供所述回复,将映射到所述计算节点的数据从所述存储设备复制到所述计算节点。
实施例20针对实施例19,其中映射到每个计算节点的行数基于计算节点的时变数量而时变。
实施例21针对实施例19或20,其中计算节点的时变数量基于时变负载。
实施例22针对实施例19至21中的任一实施例,所述用于访问数据的计算机指令由一个或多个处理器执行时,使所述一个或多个处理器还执行以下步骤:在映射到所述计算节点的数据保留在所述计算节点时,将所述计算节点关机,随后将所述计算节点开机。
附图说明
本发明的各个方面通过举例的方式示出但不受附图的限制,附图中相同的附图标记表示相同的元件。
图1描述了一种用于访问数据的示例性网络,其中处理器与各自的存储设备配对;
图2A是一实施例提供的一种访问数据的网络示图;
图2B是一实施例提供的图2A的网络的另一示例;
图2C是一实施例提供的图2A的网络的又一示例;
图3A是一实施例提供的一种用于将数据加载到网络中的存储设备的方法流程图;
图3B是一实施例提供的另一种用于将数据加载到所述存储设备的方法流程图;
图4是一实施例提供的在网络中处理请求的方法流程图;
图5是一实施例中的一种用于改变计算节点的数量以及将存储设备的数据重新映射到计算节点的方法流程图;
图6描述了存储设备中的表数据的示例;
图7A描述了图6的表数据的示例性实现方式;
图7B描述了图6的表数据的另一种示例性实现方式;
图8A描述了与图3A的步骤303和图3B的步骤361一致的将存储设备的数据映射到N个计算节点的示例;
图8B描述了与图5的步骤507一致的将存储设备的数据映射到N+2个计算节点的示例;
图8C描述了与图5的步骤507一致的将存储设备的数据映射到N-1个计算节点的示例;
图9A描述了图8A的映射的示例性实现方式;
图9B描述了图8B的映射的示例性实现方式;
图9C描述了图8C的映射的示例性实现方式;
图10是包括实现所公开技术的模块的方框图。
具体实施方式
本发明涉及一种设备,例如数据存储系统和用于访问数据的关联方法。
数据存储系统对用户请求提供并行处理,以提高效率和响应时间。例如,大规模并行处理数据库(massively parallel processing database,简称MPPDB)架构提供了由多个处理器或多个计算节点对程序协同处理,其中所述多个处理器或多个计算节点工作在所述程序的不同部分。该方法使得所述计算非常接近于所述数据,因此,如果在所述计算节点中适当分配查询,则对查询的处理可以非常有效。
数据存储系统可以是基于云的。例如,数据库即服务(Database as a Service,简称DBaaS)是一种基于云的结构化数据存储和管理方法。DBaaS提供的数据库功能与SQLServer、MySQL和Oracle等关系数据库管理系统(relational database managementsystem,简称RDBMS)中的功能相似。
虽然所述MPPDB架构是有效的,但弹性可能不够。弹性对于云原生数据库很重要,也是指单独和极其快速增加或删除计算和存储资源的能力。然而,在一些数据存储架构中,当增加或删除计算节点时,需要在所述存储资源中重新分配大量的数据。在所述重新分配期间,所述计算节点不能对查询进行响应,从而导致对所述查询的响应延迟。每个计算节点具有处理和存储资源,一组计算节点可以按集群排列。
本文提供的技术通过将计算设备与存储设备分离来解决上述和其它问题。在一种方法中,提供了一种MPPDB,其包括若干计算节点。每个计算节点具有一个或多个处理器和关联的缓存存储器。在一种方法中,将缓存存储器作为可安装存储器的一种形式挂载到所述处理器中。所述缓存存储器的一种实现方式使用华为技术有限公司的云硬盘。挂载是指使计算机的文件系统能够访问存储介质。当所述存储介质成功挂载时,所述计算机将所述介质的文件系统合并到本地文件系统中。此外,还创建了挂载点,其是作为外部设备访问的介质的本地可用链路。
计算节点用于访问公共存储设备,其可以称为对象存储器。所述存储设备存储一个或多个文件,例如使用结构化查询语言(Structured Query Language,简称SQL)命令访问的表。在一种方法中,所述文件使用RESTful API从加载设备传输到所述存储设备。REST表示表征状态转移,API表示应用编程接口。RESTful系统可以通过超文本传输协议(Hypertext Transfer Protocol,简称HTTP)使用网络浏览器用于检索网页和向远程服务器发送数据的相同HTTP命令(例如,GET、POST、PUT、DELETE)进行通信。
将所述存储设备中的数据的不同部分映射到每个缓存中。例如,可以将一组不同的行映射到每个不同的缓存中。在一种方法中,在每个缓存中创建表,所述表的列名和列数据类型与所述存储设备中的表相同,但所述表未填充。可以提供数据库的架构或组织结构。当所述计算节点需要数据响应查询时,可以通过从所述存储设备复制数据来填充表的行。最终,可以填充每个缓存中表的所有行。
在一些情况下,计算节点可以改变所述数据,在这种情况下,通过将所述修改后的数据写回所述存储设备来更新所述存储设备。
计算管理器维护元数据,所述元数据指示将所述存储设备中的数据的不同部分映射到每个缓存或计算节点。当增加或删除计算节点时,对所述映射进行修改。新增加的计算节点将从所述存储设备中复制需要响应查询的数据。存储在缓存中但不再映射到所述缓存的数据可以保留在所述缓存中,直到使用最近使用(least recently used,简称LRU)算法将其删除。存储在缓存中且仍映射到所述缓存中的数据也可以保留在所述缓存中,直到使用LRU算法将其删除。此外,如果新映射到缓存的数据不需要响应查询,则不需要复制。因此,对计算节点的数量进行改变时可以不中断节点之间的数据传输,如果中断所述传输,将导致所述计算节点暂时不可用以及响应查询出现延迟。
可以使用一致哈希来修改所述存储设备的数据到所述计算节点的映射。一致哈希将数据映射到同一个缓存中,尽可能减少数据的重新分配。当添加缓存时,它将从所有其它缓存中获取它的那部分数据。当缓存被移除时,其数据在剩余的缓存中共享。
本文描述的技术可以使用访问速度相对较高的缓存存储介质,以提供对查询的快速回复。主存储设备与所述缓存分离,可以使用访问速度相对较低的存储介质来节省成本。
此外,如果为所述缓存采用非易失性存储器,当所述计算节点暂时关机并快速开机后,数据可以保持完好无损。在关机前或者开机时从所述备份存储介质加载所述数据之前,不需要将所述数据备份到备份存储介质中。
本文提供的技术可以为DBaaS的用户节省资金,因为它们只需要支付与其当前需求匹配的服务量。
提供了一种访问数据的设备和方法。设备包括多个计算节点,其中每个计算节点包括处理器和缓存。所述计算节点用于通过管理员计算机访问存储设备。所述管理员计算机包括将所述存储设备中的数据的不同部分映射到每个所述缓存的映射数据。计算节点的数量可以很容易地根据所述设备上的当前负载改变。所述映射随着节点数的改变而改变。此外,可以避免在缓存之间传输数据,以使所述设备的处理持续不间断。
一种用于访问数据的方法包括:提供将表数据加载存储设备的初始数据加载,将所述表数据的一部分映射到N个计算节点中的每个计算节点,并在所述N个计算节点中的每个计算节点中创建表。随后,所述方法包括:通过复制从所述存储设备映射到所述计算节点的数据来填充所述表以响应查询。此外,响应于增加的负载,使用M个新的计算节点。将所述表数据重新映射到所有节点,同时在所述新计算节点中的每个计算节点中创建表。随后,通过复制从所述存储设备映射到所述新计算节点的数据来填充所述新计算节点中的表以响应查询。
另一种用于访问数据的方法包括:接收包括查询的请求,识别用于基于数据的映射响应所述查询的计算节点,将所述查询传送至所述计算节点,从所述计算节点接收对所述查询的回复,并基于所述回复提供对所述请求的响应。所述映射基于计算节点的时变数量而时变。
图1描述了一种用于访问数据的示例性网络100,其中处理器与各自的存储设备配对。所述网络包括数据存储系统101、Web服务器102、网络103(例如互联网)和一个或多个用户计算设备104(例如,手机、笔记本电脑或个人计算机)。用户计算设备的另一示例是访问所述数据存储系统的分析服务器,例如执行大数据分析。数据存储系统101包括管理员计算机105,所述管理员计算机105接收来自所述Web服务器的请求,将所述请求的查询传送到不同的处理器106a、107a和108a,接收来自所述处理器的回复,并以一种方式将相应的响应传送到所述Web服务器。所述处理器106a、107a和108a分别访问存储设备106b、107b和108b中的数据。由于所述处理器从各自的存储设备中访问数据,因此根据所述数据存储系统上的当前负载增加或删除存储设备很不方便。例如,数据必须从一个或多个现有存储设备传输到新增加的存储设备,从而使所述一个或多个现有存储设备暂时不能被所述各自的处理器使用。
在一种方法中,每次需要访问所述数据时,所述处理器106a-108a使用网络呼叫与所述存储设备通信。这会导致大量的网络呼叫,还会减少响应时间。下面描述的网络解决了上述问题。
图2A是一实施例提供的一种访问数据的网络200的示图。所述网络包括Web服务器102、网络103和用户计算设备104。数据存储系统201与所述Web服务器102通信。所述Web服务器102还与所述网络103通信。用户计算机设备104也可以与所述网络103通信。所述数据存储系统201可以通过所述网络103与所述用户计算机设备104通信和交互。所述数据存储系统201与所述Web服务器102通信并交互,因此可以与所述网络103以及耦合到网络的设备或系统(例如一个或多个用户计算设备104)交互。
所述数据存储系统201包括与一个或多个计算节点204a-204c耦合的管理员计算机205。所述管理员计算机205监控并促进向所述一个或多个计算节点204a-204c提供数据。所述管理员计算机205还包括映射数据205a(或映射),下面将进一步讨论。所述计算节点204a-204c包括处理器206a-208a和对应的缓存206b-208b,其中所述处理器206a-208a分别与所述缓存206b-208b配对。所述一个或多个计算节点204a-204c耦合至所述数据存储系统201中的公共存储设备209。所述计算节点访问所述公共存储设备209。加载器210a与所述存储设备209通信。所述加载器210a可以位于所述数据存储系统201的外部,如图所示,或者可选地可以位于所述数据存储系统201的内部。所述加载器210a可用于直接将初始数据加载到所述存储设备209中。
所述管理员计算机205接收来自所述Web服务器102的请求,将所述请求的查询传送到不同的处理器206a-208a,接收来自所述处理器206a-208a的回复,并以一种方式将相应的响应传送到所述Web服务器102。所述处理器206a、207a和208a分别访问缓存206b、207b和208b中的数据。所述公共存储设备209中的数据的各部分根据所述映射数据205a映射到不同的缓存中。在一种方法中,所述数据的公共部分不映射到不同的缓存。
在另一种方法中,频繁访问的数据可以映射到多个缓存,以提高其可用性。所述管理员计算机205用于确定需求相对较高的数据的一部分,并将所述需求相对较高的数据的一部分映射到多个缓存。
由于所述处理器206a-208a从公共存储设备访问数据,因此很容易通过改变所述数据的映射增加或删除计算节点。增加或删除缓存时,不必在所述缓存之间传送数据。此外,在一种方法中,所述缓存被挂载到所述处理器上,以便能够快速访问所述缓存,而无需进行网络呼叫。在一些实施方式中,可以从所述缓存向所述存储设备进行网络呼叫,以将数据复制到所述缓存中。网络呼叫的数量仍然少于图1中的网络。
加载器210a,例如计算设备,可用于直接将初始数据加载到所述存储设备209。该方法允许快速加载数据,因为其不通过所述管理员计算机205、所述处理器206a-208a或所述缓存206b-208b。缺点在于,当所述数据(分配给缓存的数据)分别从所述存储设备209复制时,会占用一些时间。然而,这种复制可以在一段时间内根据需要进行,以响应查询。在图2B所示的另一选项中,在间接加载过程中,加载器210b通过所述管理员计算机、处理器和缓存将所述初始数据加载到所述存储设备。缺点是这种加载比直接加载更费时。优点在于,当所述数据存储系统开始处理查询时,所述数据完全加载在所述缓存中,使所述缓存不必从所述存储设备复制数据以响应查询。
图2B是一实施例提供的图2A的网络的另一示例。详细描述了管理员计算机205、Web服务器102、计算节点204a和存储设备209。本示例中仅详细描述了一个计算节点204a,但应该理解的是,网络200可以包括任意数量的计算节点。在所述管理员计算机205中,处理器220与网络接口221、映射数据205a、工作存储器223、存储器224和输入/输出端口225通信。所述映射数据205a可以位于单独的非易失性存储器中,也可以是所述存储器224的一部分。所述映射数据205a描述了所述存储设备209中的数据的各部分如何映射到不同的缓存或计算节点204a-204c。
所述输入/输出端口225允许所述管理员计算机205与所述计算节点204a-204c通信,例如发送查询,接收对所述查询的回复,以及配置所述缓存中的表用于存储来自所述存储设备209的数据。所述管理员计算机205可以通过互连/数据交换结构226与所述计算节点204a至204c通信。所述网络接口221允许所述管理员计算机205与所述Web服务器102通信。
在所述计算节点204a中,所述处理器206a与网络接口243、工作存储器241、存储器242、输入/输出端口240和缓存206b通信。所述缓存206b可以是非易失性存储等存储介质,例如闪存等固态存储器。所述输入/输出端口240允许所述计算节点204a与所述管理员计算机205进行通信,例如接收查询、向所述查询发送回复以及接收用于存储来自所述存储设备209的数据的表的配置。所述计算节点204a可以通过所述互连/数据交换结构226与所述管理员计算机205通信。所述网络接口243允许所述计算节点204a与所述存储设备209进行通信,例如检索映射到所述计算节点204a并需要响应查询的数据。所述计算节点204a也可以与所述存储设备209通信,向其写入修改后的数据。其它计算节点204b和204c的配置可以类似于所述计算节点204a。在一些情况下,所述计算节点204a-204c可以具有不同的能力,例如不同的缓存大小、缓存存储介质或处理器速度。或者,所述计算节点204a-204c可以具有统一的能力。
在所述存储设备209中,处理器250与网络接口251、工作存储器252、存储器253和存储介质254通信。所述存储设备209包括接收和存储数据的存储介质。所述存储介质可以是例如硬盘(或磁盘)或固态存储器。所述网络接口251允许所述存储设备209与所述计算节点204a-204c进行通信,例如接收检索映射到所述计算节点并需要响应查询的数据的请求,或者接收要写入所述存储设备209的修改后的或新的数据。
所述存储器224、242和253可以是非易失性存储器,其用于分别加载到所述工作存储器223、241和252中并分别由所述处理器220、206a和250执行以执行本文描述功能的代码。所述工作存储器可以是易失性存储器,例如RAM。所述处理器206a、220和250可以包括微处理器或处理单元的其它实现方式。
所述存储器和工作存储器可以包括计算机可读非瞬时性介质。这种介质可以包括所有类型的计算机可读介质,包括磁存储介质、光存储介质和固态存储介质,并具体不包括信号。应该理解的是,软件可以安装在所述设备中并随所述设备一同销售。或者,可以获取软件并加载到设备中,包括通过光盘介质或以网络或分发系统的任何方式获取软件,例如,包括从软件开发者所有的服务器或从非软件开发者所有但为其所用的服务器获取软件。例如,该软件可以存储在服务器上以便通过因特网分发。
各种计算设备可利用所有所示的组件或仅利用所述组件的子集,且设备之间的集成程度可能不同。此外,设备可以包含组件的多个实例,例如多个处理单元、处理器、存储器、发射器以及接收器等。所述数据源可包括硬件存储设备,所述硬件存储设备存储待处理的数据的样本。所述处理器可以是任何类型的电子数据处理器,例如CPU。所述输入/输出设备可以包括网络接口、存储接口、显示器、键盘、指针设备等。工作存储器可以存储代码,例如,由处理器执行以执行本文描述的功能的指令。所述代码可以存储在非易失性存储器中并加载到所述工作存储器中。
所述存储器/存储设备可包括任何类型的系统存储器,例如静态随机存取存储器(static random access memory,简称SRAM)、动态随机存取存储器(Dynamic randomaccess memory,简称DRAM)、同步DRAM(synchronous DRAM,简称SDRAM)、只读存储器(read-only memory,简称ROM)、固态驱动器、硬盘驱动器、磁盘驱动器或光盘驱动器。所述存储器设备可以包括在启动时使用的ROM,以及在执行程序时使用的程序和数据存储的DRAM。所述存储器设备可以包括非瞬时性硬件存储器设备。
所述加载器210a和210b可以类似于与其它所示设备进行配置,具有处理器、存储器、工作存储器和网络接口。如前所述,所述加载器210a可用于直接将初始数据加载到所述存储设备209中,例如结合图3A进一步描述,或者所述加载器210b可用于将初始数据间接加载到所述存储设备209中,例如结合图3B进一步描述。
图2C是一实施例提供的另一种用于访问数据的网络280。所述网络280是图2A的示例性网络200的替代方案。在该替代方案中,计算节点具有多个处理器和缓存。再次使用如上所述的加载器210a用于直接加载所述存储设备。或者,可以使用如上所述的加载器210b用于间接加载所述存储设备。直接加载和间接加载也可以都使用。在该网络280中,数据存储系统281包括计算节点260a-260c。所述计算节点260a具有分别访问缓存206b和206c的处理器286a和286b。所述计算节点260b具有分别访问缓存207b和207c的处理器287a和287b。所述计算节点260c具有分别访问缓存208b和208c的处理器288a和288b。这种方法可以提高响应时间,因为所述计算节点可以同时执行多个任务。例如,在所述计算节点260a中,一个处理器286a可以例如在另一个处理器286b访问缓存206c时与所述管理员计算机进行通信。
图3A是一实施例提供的一种用于将数据加载到网络中的存储设备的方法流程图300。所述方法可以根据图2A或2B使用所述加载器210a直接加载数据。直接加载是向所述存储设备传送大量数据的最快方式,例如,太字节或更多的数据。
在步骤301中,所述加载器将初始加载数据直接提供给存储设备。所述存储设备将所述数据存储在存储介质中。在一种方法中,所述数据包括压缩单元(compression unit,简称CU),其中对表的数据行和/或列进行压缩。在一种示例性实现方式中,使用RESTfulAPI命令将数据馈送至所述存储设备。在一种可能实现方式中,所述文件包括数据的SQL表。另请参见图6、7A和7B。例如,在银行应用中,所述文件可以包括表,其中行对应于银行的不同客户,列对应于不同类型账户中的余额。所述数据可以由所述银行通过网络或物理存储介质提供。在另一种方法中,表可以按行列出不同的产品,并按列提供所述产品的不同特性。或者,可以为不同制造商的产品提供不同的表。
在步骤302中,所述加载器通知所述管理员计算机所述加载完成并描述所述数据。或者,所述存储设备通知所述管理员计算机所述加载完成。例如,所述存储设备可以通过所述计算节点中的一个与所述管理员计算机通信。
所述数据的描述可以指示所述数据包括具有特定表大小的表数据,其具有特定的行名和数据类型以及列名和数据类型。示例性数据类型包括布尔型、整数、浮点、货币、固定字符串、变量字符串和二进制对象。此外,还可以描述数据库的类型。示例包括MicrosoftAccess、Microsoft SQL Server、Oracle SQL、MySQL和PostgreSQL。在步骤303处,所述管理员计算机基于所述计算节点的数量和容量将所述数据的不同部分映射到不同的计算节点。假设存在N个存储容量相等的计算节点,则在一些示例中,约1/N数据映射到每个计算节点。所述映射存储为映射数据。另请参见图7A至9C。如果一个计算节点的缓存具有相对较大的存储容量,则可以将所述存储设备的相对较大量数据映射到该缓存中。
在步骤304处,所述管理员计算机在所述计算节点的缓存中创建表。例如,所述管理员计算机可以使用所述数据的描述来创建指定数量的具有列名和数据类型的表。所述表可以包括一行或多行空数据。也就是说,所述表可以是初始未填充的。随后,当所述表被填充时,可以将所述存储设备中的各行数据插入到所述表中。
图3B是一实施例提供的另一种用于将数据加载到所述存储设备的方法流程图350。所述方法通过图2B网络中的管理员计算机和计算节点使用加载器210b在间接加载过程中加载数据。在该过程中,所述数据经过其它组件后到达所述数据存储系统的所述存储设备。在步骤360处,所述加载器将初始加载数据提供到所述管理员计算机并描述所述数据。在步骤361处,所述管理员计算机基于所述计算节点的数量和容量将所述数据的不同部分映射到不同的计算节点。在步骤362处,所述管理员计算机在所述计算节点的缓存中创建表。在步骤363处,所述管理员计算机基于所述映射数据将所述数据的不同部分传送至所述不同计算节点。每个计算节点接收映射到其的数据。在步骤364处,所述计算节点接收所述数据,将所述数据存储到各自的缓存中,并将所述数据写入所述数据存储系统的所述存储设备。如前所述,这种方法耗时更长,但确保在首次使用所述数据存储系统时所述缓存已加载。
图4是一实施例提供的在网络中处理请求的方法流程图400。所述方法可以通过如图2A或2B所示的数据存储系统处理请求。步骤401包括在所述管理员计算机上接收请求。例如,可以从Web服务器接收所述请求,从而所述Web服务器响应来自用户计算设备的请求。步骤402包括使用所述映射数据识别将响应所述请求的一个或多个查询的一个或多个计算节点(另请参见图7A和7B)。通常,请求可以涉及一个或多个查询。例如,请求可以是获取用户在银行的总货币余额,而所述查询可以涉及从银行的各个账户中获取余额。步骤403包括:将所述一个或多个查询传送给所述一个或多个计算节点。对于所述一个或多个计算节点中的每个计算节点,决策步骤404确定用于处理查询的数据是否已经位于所述计算节点上。如果该决策步骤为真,则在步骤406处,所述计算节点使用所述数据处理所述查询,以提供相应的回复。例如,该处理可以包括从表中读取数据字段。如果所述数据为压缩单元或其它压缩形式,则可以在使用之前进行解压缩。也可以使用一个或多个数据字段进行计算。
如果决策步骤404为假,则在步骤405处,所述计算节点从所述存储设备获取用于处理所述查询的数据。例如,这可以包括从所述存储设备加载一行或多行数据并将其存储在所述缓存中。然后,执行步骤406。
在步骤407处,结合步骤406确定所述缓存中的数据是否已被修改。如果为真,则所述数据已被修改,所述方法从分支进入步骤408。否则,所述方法进入步骤409。在步骤406处所述计算节点对查询的处理可以导致修改所述缓存中的数据以提供修改后的数据。在步骤408处,所述计算节点将所述修改后的数据写入所述存储设备。例如,在银行应用中,用户可以在帐户之间转账,从而改变所述帐户的余额。通过将所述修改后的数据写入所述存储设备,所述存储设备中的数据与所述计算节点中的数据保持一致。
在步骤409处,所述计算节点将其回复传送到所述管理员。在步骤410处,所述管理员计算机接收所述回复并传送对应的响应。在某些情况下,将多个回复进行组合提供一个响应。响应也可以基于单个回复。例如,所述响应可以提供给所述Web服务器,从而所述Web服务器向用户提供响应。虽然步骤409在所述流程图中的步骤408之后,但所述计算节点也可以在向所述存储设备写入所述修改后的数据之前或期间传送其回复。
图5是一实施例中的一种用于改变计算节点的数量以及将存储设备的数据重新映射到计算节点的方法流程图500。在一些示例中,所述管理员计算机用于基于回复所述计算节点提供的查询的响应时间修改所述映射。由于各种原因,可能希望改变所述数据存储系统中节点的数量。例如,当所述负载和所述响应时间变高时,可以使用附加节点,或者当负载减少时,可以移除节点。
在步骤501处,监测所述数据存储系统上的响应时间和/或负载。所述响应时间可以被定义为,例如,在所述管理员计算机上接收到请求到传送相应响应之间的时间。所述响应时间可以由所述管理员计算机跟踪。其它设备也可以跟踪响应时间,例如所述Web服务器和所述用户计算设备。例如,所述负载可以用在所述管理员计算机处接收请求的速率表示。其它因素可以用于调整计算节点的数量,例如一天中的时间、一周中的一天以及基于其它因素的所述数据存储系统的估计使用率。
在第一路径中,在步骤502处,认为计算能力过剩,例如高于阈值水平。在步骤505处,计算节点的数量相应地减少。这种下降可以与容量过剩的程度成正比。然后,所述方法进入步骤508。
在第二路径中,在步骤503处,认为计算容量在期望范围内。在步骤506处,计算节点的数量没有变化。
在第三路径中,在步骤504处,认为计算能力不足,例如低于阈值。在步骤507处,计算节点的数量增加。所述增加可以与不足程度成正比。当所述负载过高时,所述容量可能不足。然后,所述方法进入步骤508。
在步骤508处,增加或减少计算节点的数量,改变所述映射数据。对于新增加的节点,所述映射将数据映射到所述节点,同时减少映射到先前存在的节点的数据量。对于已删除的节点,所述映射将所述已删除节点的数据映射到所述剩余的节点。
在一种实现方式中,所述存储设备包括硬盘驱动器。所述管理员计算机用于修改所述映射,以将所述硬盘驱动器的分区挂载到所述缓存。分区是由操作系统单独管理的硬盘上的区域。
对于计算节点数量减少的情况,删除的计算节点可以下电或分配给其它一些用途。
对于计算节点数量增加的情况,步骤509包括在所述新计算节点的缓存中创建表。如前所述,例如使用LRU算法可以最终删除不再映射到计算节点的数据部分。在一种方法中,所述LRU算法包括先删除所述缓存中最近使用最少的数据。这是所述计算节点的处理器在一段时间内未访问的数据。
图6描述了存储设备中的表数据的示例。表可以包括行和列。在行和列的交集处提供数据字段。这里有y行和x列。示例行具有Name_row(1),Name_row(2),……,Name_row(y)的名称。示例列具有Name_col(1),Name_col(2),Name_col(3),……,Name_row(x)的名称。行(1)中的数据字段为字段(1,1),字段(1,2),字段(1,3),……,字段(1,x)。行(2)中的数据字段为字段(2,1),字段(2,2),字段(2,3),……,字段(2,x),行(y)中的数据字段为字段(y,1)、字段(y,2)、字段(y,3)、……、字段(y,x)。如前所述,所述表可以具有所述列及其定义的名称和数据类型,但可以初始为空。可以随时间增加一个或多个行以响应查询。例如,所述存储设备中的表可以将各行用于银行的数千甚至数百万客户。所述客户的一个子集的数据可以映射到计算节点。当针对特定客户的查询到达时,例如关于账户余额的查询,可以将相应的一行数据添加到所述表以响应该查询。该行数据可以在所述缓存中的表中保留一段时间,以便能够快速回答关于同一客户的进一步查询。如果有一段时间没有进一步的查询,则可以根据所述LRU算法从所述缓存中删除该客户的该行数据。
将一行数据插入表中的一种方法使用SQL INSERT INTO SELECT语句。这将一行数据(映射到计算节点)从所述存储设备复制到所述计算节点的缓存中的表中。所述语句从一个表中复制数据并将其插入到另一个目标表中,从而填充所述目标表。所述目标表中的任何现有行都不受影响。
图7A描述了图6的表数据的示例性实现方式。数据包700表示所述管理员计算机可以接收到的请求。所述数据包包括报头701和净荷702。所述报头可以包含纠错码(errorcorrection code,简称ECC)数据等信息,所述纠错码数据用于所述管理员计算机确定是否成功接收到报文。报文标识(identifier,简称id)也可以用于在一组报文中标识所述报文的顺序位置。所述净荷可以包括关于被分成多个查询的请求的数据,例如查询(1)702a、查询(2)702b和查询(3)702c。例如,查询(1)可以声明:对于id=16489的某位客户,储蓄账户中的金额是多少?查询(2)可以声明:对于id=16489的客户,活期账户中的金额是多少?查询(3)可以声明:对于id=16489的客户,股票账户中的金额是多少?
所述管理员计算机上的映射数据710可用于识别CN1,例如,计算节点204a,作为应对这些查询的计算节点。所述映射数据将客户id交叉引用到表/行和计算节点(computingnode,简称CN)。例如,客户id=16489与表=1和行=364交叉引用。在某些情况下,所述缓存可以在多于一个的表中具有数据,以使所述表标识区分表。因此,所述管理员计算机可以将所述查询传送给CN1。表720存在于CN1的缓存中。与客户id=16489对应的行分别在储蓄、支票和股票账户中交叉引用到余额:2000、2500和8000。因此,所述计算节点可以将值2000、2500和8000作为对所述查询的回复返回给所述管理员计算机。所述管理员计算机可以类似地使用这些回复提供对所述Web服务器的响应,所述Web服务器可以向所述用户计算设备提供响应。
图7B描述了图6的表数据的另一种示例性实现方式。在本示例中,将不同表的数据存储在不同的计算节点中。例如,不同制造商的产品可以存储在不同的表格中,每个制造商一个表格。进一步地,单个表可以存储在一个或多个计算节点中。本例中,查询(1)750a可以声明:对于制造商=A,获取产品描述=笔记本电脑,查询(2)750b可以声明:对于制造商=B,获取产品描述=笔记本电脑,查询(3)750c可以声明:对于制造商=C,获取产品描述=笔记本电脑。映射数据755将制造商与产品、表和计算节点交叉引用。例如,将制造商=A交叉引用到产品=笔记本电脑、表=A和CN=1,将制造商=B交叉引用到产品=笔记本电脑、表=B和CN=2,以及将制造商=C交叉引用到产品=笔记本电脑、表=C和CN=3。所述制造商也可以交叉引用到其它产品,但未显示。
描述了表A 760、表B 761和表C 762。表A将笔记本电脑产品交叉引用到价格、屏幕尺寸和图像参考。例如,将产品=笔记本电脑A1交叉引用到价格=$800、屏幕尺寸=14英寸和图像参考=参考A1,以及将产品=笔记本电脑A2交叉引用到价格=$600、屏幕尺寸=13英寸和图像参考=参考A2。为响应查询(1)、查询(2)和查询(3),CN1、CN2和CN3分别可以提供回复,其分别包括表A、表B和表C中与笔记本电脑相关的数据。这些回复可以组合为用于所述Web服务器和用户设备的响应。可以在所述用户设备上提供相应的网页显示。
图8A描述了与图3A的步骤303和图3B的步骤361一致的将存储设备的数据映射到N个计算节点(computing node,简称CN)的示例。N为>=1的整数。所述计算节点由CN(1),CN(2),……,CN(N)表示,并且映射到所述计算节点的存储设备209中的数据部分分别为数据部分1(801),数据部分2(802),……,数据部分N(804)。每个数据部分大约包括所述存储设备中的数据的1/N。
图8B描述了与图5的步骤507一致的将存储设备的数据映射到N+2个计算节点的示例。因此,相较于图8A,增加了两个新的计算节点。计算节点由CN(1),CN(2),……,CN(N),CN(N+1),CN(N+2)表示,并且映射到计算节点的存储设备209中的数据部分分别为数据部分1(801a),数据部分2(802a),……,数据部分N(804a),数据部分N+1(805)和数据部分N+2(806)。每个数据部分大约包括所述存储设备中的数据的1/(N+2)。
一种用于访问数据的示例性方法包括:使用一个或多个处理器,将表数据的一部分映射到N个计算节点中的每个计算节点;在所述N个计算节点中的每个计算节点中创建表;在所述N个计算节点中的每一个计算节点中,通过从存储设备复制映射到所述计算节点的数据来填充所述表以响应查询;响应于增加的负载,使用额外的M(例如,图8B中的M=2)个计算节点访问所述存储设备的数据;将所述表数据的一部分映射到所述N+M个计算节点中的每个计算节点;在所述M个计算节点中的每个计算节点中创建表;在所述M个计算节点中的每个计算节点中,通过从所述存储设备复制映射到所述计算节点的数据来填充所述表以响应查询。
在另一种示例性实现方式中,提供了一种非瞬时性计算机可读介质,所述非瞬时性计算机可读介质存储用于访问数据的计算机指令,所述计算机指令由一个或多个处理器执行时,使所述一个或多个处理器执行以下步骤:基于存储设备的数据到计算节点的映射来识别用于响应查询的计算节点,其中所述映射基于所述计算节点的时变数量而时变;将所述查询传送至所述计算节点;从所述计算节点接收对所述查询的回复。所述计算节点使用映射到所述计算节点的数据提供所述回复,将映射到所述计算节点的数据从所述存储设备复制到所述计算节点。基于所述回复向所述请求提供响应。
进一步地,所述存储设备的数据可以包括表。所述识别用于响应所述查询的计算节点包括识别所述表中的行。将所述表的不同行映射到不同的计算节点。
此外,映射到每个计算节点的行数基于计算节点的时变数量而时变。
在一种示例性实现方式中,所述存储设备中的数据位于表的行中。将不同行的数据映射到不同的缓存中。所述修改后的映射改变映射到每个缓存的行数。
图8C描述了与图5的步骤507一致的将存储设备的数据映射到N-1个计算节点的示例。所述计算节点由CN(1),CN(2),……,CN(N-1)表示。映射到所述计算节点的所述存储设备209中的数据部分分别为数据部分1(801b),数据部分2(802b),……,数据部分N-1(803)。每个数据部分大约包括所述存储设备中的数据的1/(N-1)。因此,与图8A相比,删除了一个节点。
图9A描述了图8A的映射的示例性实现方式。图9A至图9C中的示例分别对应于8A至8C,且N=6。进一步地,假设所述存储设备中的数据包括具有24行数据的表。所述计算节点为CN(1)至CN(6)。在本示例中,将24/6=4行映射到每个CN。第1至4行映射到CN(1),第5至8行映射到CN(2),第9至12行映射到CN(3),第13至16行映射到CN(4),第17至20行映射到CN(5),第21至24行映射到CN(6)。
图9B描述了图8B的映射的示例性实现方式。这里,将24/8=3行映射到每个CN。第1至3行映射到CN(1),第5至7行映射到CN(2),第9至11行映射到CN(3),第13至15行映射到CN(4),第17至19行映射到CN(5),第21至23行映射到CN(6),第4、8和12行映射到CN(7),第16、20和24行映射到CN(8)。如虚线框所示,第4行、第8行、第12行、第16行、第20行和第24行不再映射到CN(1)、CN(2)、CN(3)、CN(4)、CN(5)和CN(6)。在一种方法中,可以使用LRU算法删除这些数据行,类似于在没有计算节点数量变化的情况下在计算节点处删除数据的方式。预先存在的计算节点CN(1)至CN(6)继续其正常操作,并且不会被计算节点数量的变化所中断。将从CN(1)到CN(6)未映射的行映射到新计算节点CN(7)和CN(8)。
图9C描述了图8C的映射的示例性实现方式。这里,24/5=约5行映射到每个CN。第1至4和21行映射到CN(1),第5至8和22行映射到CN(2),第9至12和23行映射到CN(3),第13至16和24行映射到CN(4),第17至20行映射到CN(5)。从CN(6)中未映射的第21、22、23和24行现在分别映射到CN(1)、CN(2)、CN(3)和CN(4)。预先存在的计算节点CN(1)至CN(5)继续其正常操作,并且不会被计算节点数量的变化所中断。
图9A至图9C提供了使用一致哈希来修改将所述存储设备的数据映射到计算节点的示例。如前所述,一致哈希尽可能将数据映射到同一缓存中。当添加缓存时,它将从所有其它缓存中获取它的那部分数据。当缓存被移除时,其数据在剩余的缓存中共享。
图10是一实施例提供的数据存储系统1000的框图。所述数据存储系统1000能够实现图2A、2B或2C中的数据存储系统201、260或281。所述数据存储系统1000也可以实现图2A-2C中的管理员计算机205。所述数据存储系统1000可以实现图3A、3B、4或5中所示的任一方法。
在一些实施例中,所述数据存储系统1000包括用于实现所公开技术的模块。所述框图中包括的模块可以是为实现所公开功能而设计的逻辑和/或软件。所示示例中的所述数据存储系统1000包括接口1009、处理器1007和存储器1006。所述接口1009包括在所述数据存储系统1000与外部组件、设备、网络或系统之间交换通信的接口。所述处理器1007包括能够执行存储在所述存储器1006中的软件的合适处理设备。所述存储器1006包括合适的存储设备。所述存储器1006可包括一个或多个存储元件或组件。例如,所述存储器1006存储要由所述处理器1007执行的软件。所述存储器1006例如包括映射模块1010、数据加载/复制模块1011、建表模块1012和数据写入模块1013。所述映射模块1010可以提供将所述存储设备中的数据的不同部分映射到每个所述缓存的映射数据。所述管理员计算机可以用于改变计算节点的数量,并根据所述变化修改所述映射,以提供修改后的映射,并向所述计算节点传递查询。所述数据加载/复制模块1011可以用于从所述存储设备将映射到所述缓存中并需要响应查询的一行或多行数据加载到所述缓存中的表中。进一步地,对于每个计算节点,如果映射到所述缓存的数据尚未在所述缓存中且需要响应查询,则从所述存储设备将所述数据复制到所述缓存中。
所述表创建模块1012可用于每个计算节点在所述缓存中创建表,其中所述表包括列名且初始为空。所述数据写入模块1013可以用于每个计算节点将所述缓存中的修改后的数据写入所述存储设备。所述数据写入模块1013也可以用于从初始数据加载将数据写入所述存储设备。
在一示例性实施例中,所述数据存储系统1000包括第一映射模块、第一建表模块、第一填充模块、附加计算节点模块、第二映射模块、第二建表模块以及第二填充模块,所述第一映射模块将表数据的一部分映射到N个计算节点中的每个计算节点,所述第一建表模块在所述N个计算节点中的每个计算节点中创建表,所述第一填充模块在所述N个计算节点中的每一个计算节点中,通过从存储设备复制映射到所述计算节点的数据来填充所述表以响应查询,所述附加计算节点模块响应于增加的负载,使用额外的M个计算节点访问所述存储设备的数据,所述第二映射模块将所述表数据的部分映射到所述N+M个计算节点中的每个计算节点,所述建表模块在所述M个计算节点中的每个计算节点中创建表,所述第二填充模块在所述M个计算节点中的每个计算节点中,通过从所述存储设备复制映射到所述计算节点的数据来填充所述表以响应查询。在一些实施例中,所述第一映射模块和所述第二映射模块包括相同的模块。在一些实施例中,所述第一建表模块和所述第二建表模块包括相同的模块。在一些实施例中,所述第一填充模块和所述第二填充模块包括相同的模块。在一些实施例中,所述数据存储系统1000可以包括用于执行所述实施例中描述的步骤的任一或组合的其它或者附加模块。
可以理解的是,本发明可以以许多不同的形式实现,并且不应视为对本文所阐述的实施例的限制。相反,提供这些实施例是为了使本发明内容更加透彻和完整,并将本发明完整地传达给本领域技术人员。实际上,本发明旨在涵盖包括在由所附权利要求书限定的本发明公开的范围和精神内的这些实施例的替代物、修改和等同物。另外,阐述了许多特定细节以便透彻理解。但是,本领域普通技术人员清楚的是,所述实施例可以在没有这些具体细节的情况下实施。
根据本发明的各实施例,本文所述的方法可以通过执行软件程序的硬件计算机系统实现。此外,在非限制性实施例中,实施方式可以包括分布式处理、部件/对象分布式处理和并行处理。可以构建虚拟计算机系统处理以实施本文所描述的方法或功能中的一种或多种,本文所描述的处理器可以用于支持虚拟处理环境。
此处,结合本发明实施例的方法、装置(系统)以及计算机程序产品的流程图和/或方框图描述本发明的各方面。应当理解,流程图和/或方框图的每个框以及流程图和/或方框图中的框的组合可以由计算机程序指令来实现。可以将这些计算机程序指令提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,以生成机制,使得这些通过计算机或其它可编程指令执行装置的处理器所执行的指令创建实现所述流程图和/或方框图中的一个或多个方框所指定的功能/动作的机制。
本文中所用的术语仅仅是出于描述特定方面的目的,并且并不打算限制本发明。除非上下文清楚说明,否则本文所用的单数形式“一”和“所述”包括其复数形式。应进一步了解,本说明书中所用的术语“包括”用于说明存在所述特征、整数、步骤、操作、元件和/或部件,但并不排除存在或添加一个或多个其它特征、整数、步骤、操作、元件、部件和/或它们的组合。
对本发明的描述只是为了说明的目的,而这些描述并不旨在穷举或限于所公开的实施例。在不偏离本发明的范围和精神的前提下,多种修改和改变对本领域技术人员而言是显而易见的。选择和描述的本发明各个方面以便更好地解释本发明的原理和实际应用,并且使本领域技术人员能够理解本发明适合预期特定用途的各种修改。
为了本文档的目的,与所公开的技术相关联的每个过程可以连续执行并由一个或多个计算设备执行。过程中的每个步骤可以由与其它步骤中使用的相同或不同的计算设备执行,并且每个步骤不一定由单个计算设备执行。
虽然已经以特定于结构特征和/或方法动作的语言描述了主题,但是应该理解的是,权利要求书定义的主题不必局限于上面描述的具体特征或动作。相反,上述具体的特征和动作被公开作为实施权利要求的示例性方式。
Claims (23)
1.一种设备,其特征在于,包括:
包含指令的非瞬时性存储器;
与所述存储器通信的一个或多个处理器,其中所述一个或多个处理器执行所述指令以用于:将存储设备中的数据的不同部分映射到每个不同的缓存中,其中每个缓存位于具有处理器的计算节点中;
改变所述计算节点的数量;
提供修改后的映射以响应所述改变;
向所述计算节点传递查询。
2.根据权利要求1所述的设备,其特征在于:
所述存储设备包括硬盘驱动器;
所述一个或多个处理器执行所述指令以将所述硬盘驱动器的分区挂载到所述缓存以修改所述映射。
3.根据权利要求1至2任一项所述的设备,其特征在于:
所述一个或多个处理器执行所述指令以使用一致哈希来修改所述映射。
4.根据权利要求1至3任一项所述的设备,其特征在于:
所述一个或多个处理器执行所述指令以修改所述映射而不在所述缓存之间传送数据。
5.根据权利要求1至4任一项所述的设备,其特征在于:
所述存储设备中的数据位于表的各行中;
不同行的数据映射到不同的缓存中;
所述修改后的映射改变映射到每个缓存的行数。
6.根据权利要求1至5任一项所述的设备,其特征在于:
所述一个或多个处理器执行所述指令以用于:使由于所述修改后的映射而不再映射到计算节点中的缓存中的一行数据保留在所述缓存中,直到所述数据被最近使用的算法删除。
7.根据权利要求1至6任一项所述的设备,其特征在于:
所述一个或多个处理器执行所述指令以用于:针对每个计算节点,在所述缓存中创建表,所述表包括列名且初始为空;响应于对所述计算节点的查询,从所述存储设备将映射到所述缓存中且需要响应所述查询的一行或多行数据加载到所述缓存中的表中。
8.根据权利要求1至7任一项所述的设备,其特征在于:
所述一个或多个处理器执行所述指令以用于:针对每个计算节点,在所述缓存中创建表;响应于对所述处理器的查询,从所述存储设备将映射到所述缓存中且需要响应所述查询的数据加载到所述缓存中的表中,不从所述存储设备将映射到所述缓存中且无需响应所述查询的数据加载到所述表中。
9.根据权利要求1至8任一项所述的设备,其特征在于:
所述一个或多个处理器执行所述指令以用于:针对每个计算节点,如果映射到所述缓存的数据尚未在所述缓存中且需要响应查询,则从所述存储设备将所述数据复制到所述缓存中。
10.根据权利要求1至9任一项所述的设备,其特征在于:
所述数据的公共部分未映射到不同的缓存。
11.根据权利要求1至10任一项所述的设备,其特征在于:
所述一个或多个处理器执行所述指令以用于:确定所述数据中需求相对较高的部分并将所述数据中需求相对较高的部分映射到多个缓存。
12.根据权利要求1至11任一项所述的设备,其特征在于:
所述一个或多个处理器执行所述指令以用于:针对每个计算节点,修改所述缓存中的数据以提供修改后的数据,并将所述修改后的数据写入所述存储设备。
13.根据权利要求1至12任一项所述的设备,其特征在于:
所述一个或多个处理器执行所述指令以用于:基于回复所述计算节点提供的查询的响应时间修改所述映射。
14.根据权利要求1至13任一项所述的设备,其特征在于:
所述一个或多个处理器执行所述指令以用于:通过所述计算节点将初始数据加载提供给所述存储设备,所述计算节点用于将数据从所述初始数据加载写入所述存储设备。
15.根据权利要求1至14任一项所述的设备,其特征在于:
所述一个或多个处理器执行所述指令以用于:将初始数据加载提供给所述存储设备,所述初始数据加载绕过所述计算节点。
16.一种用于访问数据的计算机实现的方法,其特征在于,包括:
使用一个或多个处理器:
将表数据的一部分映射到N个计算节点中的每个计算节点;
在所述N个计算节点中的每个计算节点中创建表;
在所述N个计算节点中的每一个计算节点中,通过从存储设备复制映射到所述计算节点的数据来填充所述表以响应查询;
响应于增加的负载,使用额外的M个计算节点访问所述存储设备的数据;
将所述表数据的一部分映射到所述N+M个计算节点中的每个计算节点;
在所述M个计算节点中的每个计算节点中创建表;
在所述M个计算节点中的每个计算节点中,通过从所述存储设备复制映射到所述计算节点的数据来填充所述表以响应查询。
17.根据权利要求16所述的计算机实现的方法,其特征在于:
所述表数据包括多行数据;
映射到每个计算节点的表数据的一部分包括所述表数据的一行或多行。
18.根据权利要求17所述的计算机实现的方法,其特征在于,还包括:
使用所述一个或多个处理器:
对于所述N个计算节点中的至少一个,使用SQL INSERTINTO SELECT语句来从所述存储设备复制映射到所述计算节点的数据。
19.一种非瞬时性计算机可读介质,所述非瞬时性计算机可读介质存储用于访问数据的计算机指令,其特征在于,所述计算机指令在由一个或多个处理器执行时使所述一个或多个处理器执行以下步骤:
基于存储设备的数据到计算节点的映射来识别用于响应查询的计算节点,其中所述映射基于所述计算节点的时变数量而时变;
将所述查询传送至所述计算节点;
从所述计算节点接收对所述查询的回复,所述计算节点使用映射到所述计算节点的数据提供所述回复,将映射到所述计算节点的数据从所述存储设备复制到所述计算节点。
20.根据权利要求19所述的非瞬时性计算机可读介质,其特征在于:
所述存储设备的数据包括表;
所述识别用于响应所述查询的计算节点包括识别所述表中的行;
所述表的不同行映射到不同的计算节点。
21.根据权利要求19-20任一项所述的非瞬时性计算机可读介质,其特征在于:
映射到每个计算节点的行数基于计算节点的时变数量而时变。
22.根据权利要求19-21任一项所述的非瞬时性计算机可读介质,其特征在于:
计算节点的时变数量基于时变负载。
23.根据权利要求19至22中任一项所述的非瞬时性计算机可读介质,其特征在于,所述用于访问数据的计算机指令由一个或多个处理器执行时,使所述一个或多个处理器还执行以下步骤:
在映射到所述计算节点的数据保留在所述计算节点时,将所述计算节点关机,随后将所述计算节点开机。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/348,527 | 2016-11-10 | ||
US15/348,527 US11138178B2 (en) | 2016-11-10 | 2016-11-10 | Separation of computation from storage in database for better elasticity |
PCT/CN2016/106814 WO2018086155A1 (en) | 2016-11-10 | 2016-11-22 | Separation of computation from storage in database for better elasticity |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109923533A true CN109923533A (zh) | 2019-06-21 |
CN109923533B CN109923533B (zh) | 2021-09-03 |
Family
ID=62064580
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680090728.5A Active CN109923533B (zh) | 2016-11-10 | 2016-11-22 | 在数据库中将计算与存储分离的方法及设备 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11138178B2 (zh) |
CN (1) | CN109923533B (zh) |
WO (1) | WO2018086155A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116226095A (zh) * | 2023-05-08 | 2023-06-06 | 中用科技有限公司 | 一种无共享架构数据库的存算分离系统 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180268040A1 (en) * | 2017-03-20 | 2018-09-20 | Ca, Inc. | Online Data Compression and Decompression |
CA3078835C (en) * | 2017-10-13 | 2022-11-01 | Exxonmobil Upstream Research Company | Method and system for performing operations with communications |
US11379464B2 (en) | 2019-12-12 | 2022-07-05 | Micro Focus Llc | Asymmetric quorum protocol based distributed transaction database consistency control |
Citations (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6049853A (en) * | 1997-08-29 | 2000-04-11 | Sequent Computer Systems, Inc. | Data replication across nodes of a multiprocessor computer system |
US20020174379A1 (en) * | 2001-03-28 | 2002-11-21 | Ncr Corporation | Restartable database loads using parallel data streams |
CN1685320A (zh) * | 2002-09-27 | 2005-10-19 | 先进微装置公司 | 具有储存远程快取存在信息的处理器高速缓存的计算机系统 |
US7054931B1 (en) * | 2000-08-31 | 2006-05-30 | Nec Corporation | System and method for intelligent load distribution to minimize response time for web content access |
US20090083341A1 (en) * | 2007-09-21 | 2009-03-26 | International Business Machines Corporation | Ensuring that the archival data deleted in relational source table is already stored in relational target table |
US20090144344A1 (en) * | 2007-12-03 | 2009-06-04 | Mcbride Gregory E | Apparatus, system, and method for replication of data management information |
US20090240664A1 (en) * | 2008-03-20 | 2009-09-24 | Schooner Information Technology, Inc. | Scalable Database Management Software on a Cluster of Nodes Using a Shared-Distributed Flash Memory |
US20090240869A1 (en) * | 2008-03-20 | 2009-09-24 | Schooner Information Technology, Inc. | Sharing Data Fabric for Coherent-Distributed Caching of Multi-Node Shared-Distributed Flash Memory |
CN101594377A (zh) * | 2008-05-28 | 2009-12-02 | 国际商业机器公司 | 用于管理Feed数据的系统和方法 |
US20110137971A1 (en) * | 2009-12-07 | 2011-06-09 | International Business Machines Corporation | Data collection method and system |
CN102467570A (zh) * | 2010-11-17 | 2012-05-23 | 日电(中国)有限公司 | 用于分布式数据仓库的连接查询系统和方法 |
CN102571991A (zh) * | 2012-03-27 | 2012-07-11 | 电子科技大学 | 基于多级映射的大规模多副本分布式存储系统及其应用方法 |
CN102591970A (zh) * | 2011-12-31 | 2012-07-18 | 北京奇虎科技有限公司 | 一种分布式键-值查询方法和查询引擎系统 |
US20140122510A1 (en) * | 2012-10-31 | 2014-05-01 | Samsung Sds Co., Ltd. | Distributed database managing method and composition node thereof supporting dynamic sharding based on the metadata and data transaction quantity |
CN103810244A (zh) * | 2013-12-09 | 2014-05-21 | 北京理工大学 | 一种基于数据分布的分布式数据存储系统的扩容方法 |
CN104361030A (zh) * | 2014-10-24 | 2015-02-18 | 西安未来国际信息股份有限公司 | 一种具有任务分发功能的分布式缓存架构及缓存方法 |
US20160026684A1 (en) * | 2014-07-22 | 2016-01-28 | Oracle International Corporation | Framework for volatile memory query execution in a multi node cluster |
US20160070501A1 (en) * | 2000-08-08 | 2016-03-10 | Faronics Corporation | Method and system for automatically preserving persistent storage |
CN105843933A (zh) * | 2016-03-30 | 2016-08-10 | 电子科技大学 | 分布式内存列式数据库的索引建立方法 |
US20170103098A1 (en) * | 2015-10-07 | 2017-04-13 | Oracle International Corporation | Composite sharding |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6438652B1 (en) * | 1998-10-09 | 2002-08-20 | International Business Machines Corporation | Load balancing cooperating cache servers by shifting forwarded request |
US20070156724A1 (en) * | 2005-12-19 | 2007-07-05 | Pekka Kostamaa | Database system |
US7779010B2 (en) * | 2007-12-12 | 2010-08-17 | International Business Machines Corporation | Repartitioning live data |
US8595184B2 (en) * | 2010-05-19 | 2013-11-26 | Microsoft Corporation | Scaleable fault-tolerant metadata service |
US9684702B2 (en) * | 2010-12-07 | 2017-06-20 | International Business Machines Corporation | Database redistribution utilizing virtual partitions |
WO2012173175A1 (ja) * | 2011-06-14 | 2012-12-20 | 日本電気株式会社 | コンテンツ配信システム、制御装置およびコンテンツ配信方法 |
CN103038755B (zh) | 2011-08-04 | 2015-11-25 | 华为技术有限公司 | 多节点系统中数据缓存的方法、装置及系统 |
US9753999B2 (en) * | 2012-01-06 | 2017-09-05 | Citus Data Bilgi Islemieri Ticaret A.S. | Distributed database with mappings between append-only files and repartitioned files |
WO2013147785A1 (en) * | 2012-03-29 | 2013-10-03 | Hitachi Data Systems Corporation | Highly available search index with storage node addition and removal |
US9239741B2 (en) | 2012-10-16 | 2016-01-19 | Futurewei Technologies, Inc. | System and method for flexible distributed massively parallel processing (MPP) |
US8799284B2 (en) | 2012-11-30 | 2014-08-05 | Futurewei Technologies, Inc. | Method for automated scaling of a massive parallel processing (MPP) database |
CN103905503B (zh) | 2012-12-27 | 2017-09-26 | 中国移动通信集团公司 | 数据存取方法、调度方法、设备及系统 |
US9773041B2 (en) | 2013-03-06 | 2017-09-26 | Oracle International Corporation | Methods and apparatus of shared expression evaluation across RDBMS and storage layer |
US9424330B2 (en) * | 2013-03-15 | 2016-08-23 | Tactile, Inc. | Database sharding by shard levels |
US9053167B1 (en) * | 2013-06-19 | 2015-06-09 | Amazon Technologies, Inc. | Storage device selection for database partition replicas |
US9619545B2 (en) * | 2013-06-28 | 2017-04-11 | Oracle International Corporation | Naïve, client-side sharding with online addition of shards |
US9361351B2 (en) * | 2013-09-11 | 2016-06-07 | International Business Machines Corporation | Data management via active and inactive table space containers |
US9875263B2 (en) * | 2014-10-21 | 2018-01-23 | Microsoft Technology Licensing, Llc | Composite partition functions |
US10372696B2 (en) | 2014-12-16 | 2019-08-06 | Futurewei Technologies, Inc. | System and method for massively parallel processing database |
US10970285B2 (en) | 2015-02-26 | 2021-04-06 | Red Hat, Inc. | Grid topology change in a distributed data grid when iterating on the contents of the data grid |
US10067969B2 (en) * | 2015-05-29 | 2018-09-04 | Nuodb, Inc. | Table partitioning within distributed database systems |
US10621041B2 (en) * | 2016-03-25 | 2020-04-14 | Intel Corporation | Methods and apparatus to assign indices and relocate object fragments in distributed storage systems |
-
2016
- 2016-11-10 US US15/348,527 patent/US11138178B2/en active Active
- 2016-11-22 CN CN201680090728.5A patent/CN109923533B/zh active Active
- 2016-11-22 WO PCT/CN2016/106814 patent/WO2018086155A1/en active Application Filing
Patent Citations (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6049853A (en) * | 1997-08-29 | 2000-04-11 | Sequent Computer Systems, Inc. | Data replication across nodes of a multiprocessor computer system |
US20160070501A1 (en) * | 2000-08-08 | 2016-03-10 | Faronics Corporation | Method and system for automatically preserving persistent storage |
US7054931B1 (en) * | 2000-08-31 | 2006-05-30 | Nec Corporation | System and method for intelligent load distribution to minimize response time for web content access |
US20020174379A1 (en) * | 2001-03-28 | 2002-11-21 | Ncr Corporation | Restartable database loads using parallel data streams |
CN1685320A (zh) * | 2002-09-27 | 2005-10-19 | 先进微装置公司 | 具有储存远程快取存在信息的处理器高速缓存的计算机系统 |
US20090083341A1 (en) * | 2007-09-21 | 2009-03-26 | International Business Machines Corporation | Ensuring that the archival data deleted in relational source table is already stored in relational target table |
US20090144344A1 (en) * | 2007-12-03 | 2009-06-04 | Mcbride Gregory E | Apparatus, system, and method for replication of data management information |
US20090240664A1 (en) * | 2008-03-20 | 2009-09-24 | Schooner Information Technology, Inc. | Scalable Database Management Software on a Cluster of Nodes Using a Shared-Distributed Flash Memory |
US20090240869A1 (en) * | 2008-03-20 | 2009-09-24 | Schooner Information Technology, Inc. | Sharing Data Fabric for Coherent-Distributed Caching of Multi-Node Shared-Distributed Flash Memory |
CN101594377A (zh) * | 2008-05-28 | 2009-12-02 | 国际商业机器公司 | 用于管理Feed数据的系统和方法 |
US20110137971A1 (en) * | 2009-12-07 | 2011-06-09 | International Business Machines Corporation | Data collection method and system |
CN102467570A (zh) * | 2010-11-17 | 2012-05-23 | 日电(中国)有限公司 | 用于分布式数据仓库的连接查询系统和方法 |
CN102591970A (zh) * | 2011-12-31 | 2012-07-18 | 北京奇虎科技有限公司 | 一种分布式键-值查询方法和查询引擎系统 |
CN102571991A (zh) * | 2012-03-27 | 2012-07-11 | 电子科技大学 | 基于多级映射的大规模多副本分布式存储系统及其应用方法 |
US20140122510A1 (en) * | 2012-10-31 | 2014-05-01 | Samsung Sds Co., Ltd. | Distributed database managing method and composition node thereof supporting dynamic sharding based on the metadata and data transaction quantity |
CN103810244A (zh) * | 2013-12-09 | 2014-05-21 | 北京理工大学 | 一种基于数据分布的分布式数据存储系统的扩容方法 |
US20160026684A1 (en) * | 2014-07-22 | 2016-01-28 | Oracle International Corporation | Framework for volatile memory query execution in a multi node cluster |
CN104361030A (zh) * | 2014-10-24 | 2015-02-18 | 西安未来国际信息股份有限公司 | 一种具有任务分发功能的分布式缓存架构及缓存方法 |
US20170103098A1 (en) * | 2015-10-07 | 2017-04-13 | Oracle International Corporation | Composite sharding |
CN105843933A (zh) * | 2016-03-30 | 2016-08-10 | 电子科技大学 | 分布式内存列式数据库的索引建立方法 |
Non-Patent Citations (2)
Title |
---|
SANDRO BARTOLINI 等: "Feedback-Driven Restructuring of Multi-threaded Applications for NUCA Cache Performance in CMPs", 《IEEE》 * |
沈之强: "云存储系统中的网络缓存关键技术研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116226095A (zh) * | 2023-05-08 | 2023-06-06 | 中用科技有限公司 | 一种无共享架构数据库的存算分离系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109923533B (zh) | 2021-09-03 |
US20180129692A1 (en) | 2018-05-10 |
WO2018086155A1 (en) | 2018-05-17 |
US11138178B2 (en) | 2021-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10346435B2 (en) | System and method for improved performance in a multidimensional database environment | |
US8176256B2 (en) | Cache regions | |
US8943271B2 (en) | Distributed cache arrangement | |
US8108612B2 (en) | Location updates for a distributed data store | |
CN109923533A (zh) | 在数据库中将计算与存储分离以改善弹性 | |
CN112000287B (zh) | 一种io请求处理装置、方法、设备及可读存储介质 | |
US8977662B1 (en) | Storing data objects from a flat namespace in a hierarchical directory structured file system | |
US10579597B1 (en) | Data-tiering service with multiple cold tier quality of service levels | |
US20220027381A1 (en) | System and method for real time data aggregation in a virtual cube in a multidimensional database environment | |
CN112162846B (zh) | 事务处理方法、设备及计算机可读存储介质 | |
CN110784498B (zh) | 一种个性化数据容灾方法及装置 | |
CN104270412A (zh) | 一种基于Hadoop分布式文件系统的三级缓存方法 | |
CN105701219A (zh) | 一种分布式缓存的实现方法 | |
EP2710477A1 (en) | Distributed caching and cache analysis | |
CN112596762A (zh) | 一种滚动升级方法及装置 | |
CN113806300A (zh) | 数据存储方法、系统、装置、设备及存储介质 | |
US11625503B2 (en) | Data integrity procedure | |
WO2020259191A1 (zh) | 一种数据中心节点分配方法、装置、系统及计算机设备 | |
CN111475279B (zh) | 用于备份的智能数据负载平衡的系统和方法 | |
CN105653566B (zh) | 一种实现数据库写访问的方法及装置 | |
WO2018145227A1 (en) | Managing data records in object-based cloud storage systems | |
CN110096386B (zh) | 用于在大数据环境中高效数据复制的方法和系统 | |
CN108023914A (zh) | 一种内存数据共享系统、内存数据的写入以及读取方法 | |
US7870098B2 (en) | Method and system for maintaining historical data for data receivers | |
US20140380004A1 (en) | Efficient storage and retrieval of fragmented data using pseudo linear dynamic byte array |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |