CN102395962A - 对数据库表的哈希和列表组合划分 - Google Patents
对数据库表的哈希和列表组合划分 Download PDFInfo
- Publication number
- CN102395962A CN102395962A CN2010800115895A CN201080011589A CN102395962A CN 102395962 A CN102395962 A CN 102395962A CN 2010800115895 A CN2010800115895 A CN 2010800115895A CN 201080011589 A CN201080011589 A CN 201080011589A CN 102395962 A CN102395962 A CN 102395962A
- Authority
- CN
- China
- Prior art keywords
- data
- node
- subregion
- mapping
- hash
- 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
Images
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- 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
- G06F16/2228—Indexing structures
- G06F16/2272—Management thereof
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种用于在在线添加节点期间进行分区的方法。该方法包括提供具有第一和第二节点(114、116)的数据存储集群(110),以及将数据表(204)存储在数据存储集群(110)中,第一分区(222)在第一节点中存储一组行或数据元素或行,第二分区(320)在第二节点中存储一组行或数据元素。该方法包括使用划分机构(140、234),添加第三节点(118)到集群,并添加第三分区到数据表,以创建第一、第二和第三分区中数据元素的分布映射(152)。通过划分机构(140、234)使用模哈希划分作为数据元素的函数,或者通过组合哈希和列表分区(144、148),该分布映射(152)提供了在第一、第二和第三分区上的数据元素的基本均匀的分布,如此使得数据保持在原始分区上。
Description
技术领域
本发明通常涉及管理表和数据库中的数据存储的方法和系统,更特别地涉及提供改进的数据表分区以支持添加节点到数据存储集群的方法和系统。
背景技术
在数据存储或信息技术领域中,关系数据库管理系统(RDMS)为丰富的各种商业应用提供了重要支持,并且存在着对以允许数据被快速检索和可靠存储的方式有效地且高效地存储大量数据的方法和设备的不断增长的需求。在数据库中,典型地,将信息存储于存储了多条信息(例如,在一行中,一个字段可以存储个人的名字,另一个字段可以存储个人的地址等等)的数据字段的行中,其中一个或多个字段提供关键字(例如,可以包括唯一识别数据库或表中的每个数据行的主关键字)。例如,电信公司和许多其它服务提供商,例如金融机构、基于Web的零售商和服务提供商等等需要集群的、高可用性数据库。增大数据库大小的速率造成了在数据存储工业中的许多挑战,包括如何添加额外的存储设备(例如盘驱动器、磁带驱动器、光盘驱动器、服务器等等)来为存储越来越大的表格提供更多的节点,例如,为处理快速增长的存储于表的行中的数据容量可能需要节点的数据库集群的改进以处理增加的信息量。
每个RDMS开发者最终都遭遇到一种情形:表存储巨大量的历史数据,但用户典型地仅仅在任何特定时间检索少量的独特的部分。例如,金融机构可以追踪数以百万计的关于股票交易数年的记录,但用户可能仅仅需要检索小段时期(例如一个特定的月份)的交易数据。为改进查询性能以及在表中存储不断增长的数据量,DBMS开发者经常将一个大型表分割成具有相同结构(例如,相同的字段/列)的单独的表。代表性地,水平划分表,每个成员或分开的表具有与原始表相同数目的列/字段,而每列具有和原始表中相应列一样的属性(例如数据类型、大小等等)。对DBMS开发者而言,当前的挑战是如何以提供更好的硬件使用以及允许快速数据再现和/或数据重组的方式划分数据的表。
尤其是,提供用于决定如何划分实现无共享架构以提供数据库管理的关系数据库管理系统中的表的装置是可取的。利用无共享方法,每个处理器具有自己的存储器以及本地盘或数据存储器。除了通信网络以外,处理器间不共享其它资源。例如,MySQL的NDB集群存储引擎是分布式、内存中、无共享的存储引擎,具有向其它站点的同步复制和跨存储分布式数据(例如表中的桶或分区)的节点的自动水平数据划分。利用此存储引擎,表中数据的任何给定行都适于存储在集群节点上的任何分区中,代表性地,RDMS使用同步复制。表定义基于划分函数指定了哪些行映射到哪些分区,并且,结果是,当加入一个节点到集群时,选择或设计划分函数以实现数据表的有效重组是重要的。对其它存储引擎产品而言,分区是重大设计问题,因为低效率的分区可以很快导致不希望的数据分布(例如,一些节点存储表的较大部分)和重组过程期间内存的低效率使用。
仍然需要由存储引擎使用的表重组机构将保持在线和可用的分区添加到表。对这样的表重组机构的设计需求可以是不应阻止在线读取、更新和扫描(即,事务)。此外,可能期望完成重组而无需整个表的复制,而是代之以仅有被移到新分区(例如,在添加的节点或在现存的节点中)的行需要存在于内存中两个地方。例如,当表重组模块与添加节点操作组合使用时,这就意味着在原始的较旧节点上无需额外的内存。
许多存储引擎支持划分表格的多个不同机制,包括按数据范围(例如将表划分成与年的月份一致的12个分区)、按线性哈希的使用、按模哈希等等。线性哈希仅需要在添加新桶或分区时分割桶或分区,而线性哈希引入了在数据桶或分区间的数据分布中的歪斜(skew)。按线性哈希划分的优点是使分区的添加、放弃、合并或分割快很多,这在处理包括非常巨大数量数据的表时是有利的。但如上文所述的,缺点是,与在划分时使用模哈希的分布相比较,数据不太可能在分区间均匀分布。模哈希没有数据的歪斜,但不幸的是,当桶或分区的数目改变时,需要移动表的所有行。
为理解使用线性哈希和模哈希的划分,考虑一个简单的例子是有用的。考虑以下数据(’id’,’name’),其中主关键字为’id’,其可构成具有两个字段或列的表的行:(1,”Tomas”)、(2,”Kent”)、(3,”Jonas”)、(4,”Frazer”)、(5,”John”)、(6,”Eliza”)、(7,””)、(8,””)、(9,””)、(10,””)、(11,””)和(12,””)。当存储引擎(例如在MySQL集群中使用ndb存储引擎)存储此数据集时,可以将数据分到不同的节点。例如,存储引擎可以使用模哈希分布将数据存储在两个节点上的两个桶中,数据可以看起来象:节点1-(1,”Tomas”)、(3,”Jonas”)、(5,”John”)、(7,””)、(9,””)和(11,””),节点2-(2,”Kent”)、(4,”Frazer”)、(6,”Eliza”)、(8,””)、(10,””)和(12,””)。对于三个节点的配置来说,数据可以如下分布:节点1-(1,”Tomas”)、(4,”Frazer”)、(7,””)和(10,””),节点2-(2,”Kent”)、(5,”John”)、(8,””)和(11,””),节点3-(3,”Jonas”)、(6,”Eliza”)、(9,””)和(12,””)。这个例子已经简单化了,而实际上,模哈希包括获得主关键字的哈希的模(而不是像此处出现的那样是主关键字自身的模)。可以看出在两种情况下数据被平均分布,在第一个例子中每个分区具有6行,而在第二个例子中每个分区具有4行。然而,数据驻留在三个节点与驻留在两个节点相比区别很大,在2种情况下只有四个数据条目在相同节点上(即,在每个划分实现中,(1,”Tomas”)、(2,”Kent”)、(7,””)和(8,””)在相同节点上)。需要均匀分布,然而当添加节点或分区时重排数据或所有行可能使节点的在线添加或被划分的表的重组变得痛苦。例如,如果1G的数据存储于被划分的表中,那么使用模哈希添加一个节点可能需要移动1G的数据。
或者,存储引擎可以使用线性哈希划分以在两个节点上的两个桶中存储此相同的数据,而数据可以看起来象:节点1-(1,”Tomas”)、(3,”Jonas”)、(5,”John”)、(7,””)、(9,””)和(11,””),节点2-(2,”Kent”)、(4,”Frazer”)、(6,”Eliza”)、(8,””)、(10,””)和(12,””)。对三个节点而言,分区或桶可以是:节点1-(1,”Tomas”)、(5,”John”)和(9,””),节点2-(2,”Kent”)、(6,”Eliza”)、和(10,””),节点3-(3,”Jonas”)、(4,”Frazer”)、(7,””)、(8,””)、(11,””)和(12,””)。在线性哈希的另一种实现中,原始节点之一可以具有与之前或原始具有的条目相同的条目,而其它原始节点可以具有其原始条目的一半,而另一半在新节点上。3个节点划分的例子示出了所希望的性质:同2节点配置相比,节点1和2没有任何新数据。然而显而易见的是,当有3个节点时,数据的分布非常不均匀和歪斜。这是显然的,节点3具有两倍于节点1和节点2的数据条目或行。
由于包括使用线性哈希和模哈希的传统划分方法有重大缺陷,所以还需要新的划分机构或模块,以供无共享和其它RDMS数据存储架构或系统中的存储引擎使用。
发明内容
简单地说,提供一种划分方法,通过组合模哈希划分和线性哈希的优选方面来解决至少一些上述问题。新技术可以称为哈希映射划分。在用数据存储库引擎(例如MySQL NDB集群存储引擎)划分表时使用的线性哈希考虑到了在表重组(例如添加节点到集群数据存储)期间的最小复制。然而,线性哈希不提供均匀数据分布,除非节点/桶的新数目是原始数目的两倍的特定倍数。模哈希分布的使用提供了节点上或在节点的分区上的均匀分布,但它经常需要搬动大量数据,因为在原始节点的数据不保留。哈希映射划分生成分布映射,为有利于执行表划分的在线改变或修改的新划分提供能够提供模哈希和线性哈希技术的最好方面的哈希和列表划分的组合。此外,在改变或重组过程期间(例如,在在线节点添加期间),哈希映射划分将使用最小数据复制和对原始数据存储节点/设备中的额外内存(memroy)或空间的最小需要。所有这些是在维持存储节点的分区中的数据均匀分布的同时完成的。例如,当存储引擎与在像MySQL集群的无共享集群中添加数据库节点一同使用哈希映射划分工具或机构时,在执行表的重新划分以合并新的节点和从旧分区/节点到新分区/节点复制/移动数据时,不需要在现有节点上的额外内存。
更具体地是,提供了一种基于计算机的方法,用于重组数据库,例如在添加节点到数据存储集群时提供划分。该方法包括提供具有第一和第二节点的数据存储集群,并将数据表存储在数据存储集群中,其中第一分区将一组行或数据元素存储在第一节点中,第二分区将一组行或数据元素存储在第二节点中。该方法还包括修改数据存储集群以包括用于存储来自表的数据的第三节点。存储引擎可以包括在存储集群中,用于管理节点和数据存储,该方法可以包括添加第三分区到表,其包括使用划分机构以创建第一、第二和第三分区中数据元素的分布映射。接着,该方法包括基于分布映射将来自第一和第二节点两者的表的一部分行复制到第三节点的第三分区。然后,从第一和第二节点删除被复制的行。在删除被复制的行之前,该方法可以包括根据新映射切换分布以使用第一、第二和第三分区用于数据事务,并且还等待使用第一和第二分区的先前分布的扫描完成。
在该方法中,因为仅从第一和第二节点(旧节点)复制,而不是复制到第一和第二节点或到其上(例如,这些节点保持数据,且仅失去移动到新节点/分区的数据),分布映射不需要对第一和第二节点要求额外的内存空间。在一些实施例中,分布映射提供了在第一、第二和第三分区上的数据元素(或行)的基本均匀的分布。这可以通过使划分机构用模哈希分区作为数据元素的函数(而不是作为表中分区数的直接函数)来实现。该划分机构可以认为是组合了哈希和列表划分,从而实现了均匀分布,而数据也保持在原始或旧分区上而不需要大量的数据复制/混排(shuffling)。
附图说明
图1示出了包括集群数据和存储引擎的计算机系统或网络的功能框图。该集群数据有许多数据节点来存储被划分的数据(例如,被水平划分的数据库或表,诸如此类),该存储引擎适用于划分数据表,例如作为节点添加过程的一部分;
图2示出了具有数据或存储节点的计算机系统或网络的功能框图或概要图,该数据或存储节点用于在单个分区中存储应用数据集合或数据表,并且示出了添加第二节点或节点组到该存储集群;
图3示出了由存储引擎运行的划分工具生成分布映射之后的图2的计算机系统或网络,示出了将数据复制到新增节点(例如,为应用数据创建第二分区或桶);
图4示出了为反映两个分区使用而切换数据分布进行数据复制后的图2和图3的计算机系统或网络;
图5示出了图2-4已经从原始旧节点删除了先前被复制的行或数据条目后的计算机系统或网络;以及,
图6是可以用哈希映射划分实现的示例性的表重组的流程图,例如,作为节点添加过程的一部分或与之同时发生的。
具体实施方式
简单地说,本发明的实施例涉及提供增强的数据划分的方法和系统,例如分布在多个节点上的数据表,在添加数据存储节点时所描述的划分技术特别有用(例如,系统大小正在扩展以支持日渐增长的数据量的存储)。例如,集群是一种通过在多个服务器上分布负载来进行缩放(scaling)的方式,而且集群计算机系统或网络用于允许几个到许多的主机作为单个的数据服务器出现。下文提供了使用MySQL的NDB集群存储引擎的特定集群示例,其是分布式、内存中的、无共享的存储引擎,在集群数据存储或系统的节点之间进行同步和自动数据划分。但可以理解的是,所描述的划分技术在其中数据被划分并且期待随时间改变分区的几乎任何数据存储系统中都是有用的。当存储引擎或相似的组件管理在不同节点间分布的数据时,在此描述的方法和系统提供了划分模块或者机构,允许存储引擎决定如何将已经分布的数据重组到有用的分区中(例如,如何适当地水平划分数据表)。
划分问题的出现是因为需要能够增长或扩展数据存储系统,并且如果可能,能够允许这种增长在线发生。如上文所讨论的,使用模哈希来划分表(或哈希划分)是有用的,因为它提供了数据的均匀分布,但当添加一个或多个节点到集群或其它数据存储时,所有数据不得不被重排(reshuffled)或移动以反映新的划分,这可能导致数以千兆字节的数据不得不被复制和重组。这里提及的划分方法包括组合哈希和列表划分以提供一个新的哈希映射划分,该哈希映射划分可在线使用,例如通过存储引擎或者其他数据库管理机构/工具,来更有效地划分数据。哈希映射划分方法(以及相关软件模块/机构)同时提供了模哈希技术(其中数据均匀分布)和线性哈希技术(其中不必复制或移动大量数据)的优点。将很快清楚,例如在节点添加过程期间,哈希映射划分提供了更好的硬件(包括内存)利用,并促进了更快的数据再现和重组。
图1示出了对实现本发明的方面有用的示例性的已划分的数据存储网络或系统100。该数据存储系统100包括通过一个或多个数字通信网络106(例如,局域网、广域网、因特网等等使用有线或无线的连接和/或数据传输),与若干应用节点108通信的多个客户端104。应用节点108存储和访问在集群数据存储110中的数据,并通过网络112与多个数据节点114、116、118、120通信,所述数据节点存储被划分的数据115、117、119、121(例如一个或多个数据表的水平分区)。集群数据存储110,至少部分地,由存储引擎130管理(例如MySQLNDB集群存储引擎等),并且存储引擎130包括使用哈希映射划分模块(例如使用分区函数)140以决定如何划分数据115、117、119、121的表重组机构132。
例如,当存储引擎130使用节点添加模块136以添加节点到数据存储110时,在节点114、116、118、120上的数据存储110中的数据划分可以被修改。典型地,存储引擎130同时支持列表划分144和模哈希或哈希划分148,哈希映射划分模块140可以被认为利用这些划分技术的组合以达到所希望的在线划分(例如,当节点118、120被添加到数据存储110时,以四个节点114、116、118、120中的最小数据复制和均匀数据分布划分数据)。作为管理数据划分或重组的一部分,表重组机构132可以访问内存150,内存150存储指示在每个分区或节点中表的部分(例如行或数据条目)的归属的分区分布映射152、要使用的分区的数目154(典型地,使用每个节点一个分区来存储数据表)、数据元素的数目156(例如,数据条目/行)以及用在划分过程中的主关键字158(例如数据条目的唯一标识符)。在典型的实现中,划分模块140可以不需要知道数据元素数目156,但可以替之以访问来自内存150的下列信息:当前映射条目的数目、条目如何映射到现存的分区以及要重新分布到多少个分区。
客户端104可以采用多种硬件形式,例如个人电脑、膝上电脑、笔记本以及其他计算机或计算设备、蜂窝电话、个人数字助理、服务器等等,并且客户端104可以利用各种各样的接口软件应用,包括但不限于,JDBC、ODBC、NDBAPI、LDAP和网络服务等等。客户端104可以通过网络106,传输数据库查询或其它数据请求到应用节点108。应用节点108也可以被实现于,或使用,多种计算机或计算设备,例如使用NDB API、MySQL Sever、OpenDS、openldap、SailFin、GlassFish、FreeRADIUS中的一个或多个以及其它与客户端104和/或与数据存储110进行接口连接的服务器,并且节点108可以运行例如网络服务、搜索引擎等等的应用。
数据节点114、116、118、120通常包括服务器/主机和数据存储设备,例如盘、盘阵列、基于磁带的存储设备、光学数据存储设备等等。存储引擎130可以运行在一个或多个数据节点114、116、118、120上,或者运行在与管理输入/输出设备和内存的操作并运行可以由计算机可读介质提供的适用于使得计算机或系统100或数据存储110执行在此描述的功能的软件模块或程序的一个或多个处理器相适应的另一个设备上。在此讨论中,从相关功能方面描述计算机和网络设备和数据存储设备,而不是限制于特殊的电子设备和计算机架构。为实施本发明,计算机设备和网络设备可以是有益于提供所述功能的任何设备,包括公知的数据处理和通信设备及系统,例如桌上电脑,乃至具有处理、内存和输入/输出组件的个人数字助理、个人电脑、膝上电脑和笔记本电脑,以及被为配置保持并随后在通信网络上传输数字数据的服务器设备。数据,包括设备资格数据、设备仿真(simulation)数据、响应于设备资格数据模拟设备操作的事件消息/文件,以及去往系统、来自系统和在系统中的传输,典型地以数字格式遵循标准通信和传输协议(例如TCP/IP、HTTP、HTTPs等等)进行通信,但这并不能作为对本发明的限制。
解释系统100操作的有效方法可以是继续在技术背景部分开始的相对简单的例子以及由存储引擎130使用哈希映射划分模块140执行的划分。在这个例子中,假设两个节点114、116最初用于存储被水平划分为两个分区115、117的数据表。在节点114、116上的数据分区115、117可以采用形式:节点114-(1,”Tomas”)、(3,”Jonas”)、(5,”John”)、(7,””)、(9,””)和(11,””),节点116-(2,”Kent”)、(4,”Frazer”)、(6,”Eliza”)、(8,””)、(10,””)和(12,””)。
根据一个实施例,存储引擎130可以调用表重组机构132来重组被划分的数据,例如通过添加节点模块136添加数据节点118。就这一点而言,哈希映射划分机构140被调用,并且它检索了主关键字158(例如,标识符1、2、3等等)、表中的元素数目156(例如,本例中为12)以及所希望的分区数目154(例如,重组后为3个分区)。接着哈希映射分区机构140生成分区分布映射152,可由表重组机构132使用分区分布映射152将来自两个分区/节点的被划分数据115、117重组成为三个分区/节点的被划分数据115、117、119。划分可以采用的理想形式为:节点114-(1,”Tomas”)、(5,”John”)、(9,””)和(11,””),节点116-(2,”Kent”)、(6,”Eliza”)、(10,””)和(12,””),节点118-(3,”Jonas”)、(4,”Frazer”)、(7,””)和(8,””)。在这个表中的数据的划分或重组中,我们看到元素数目为12而分区数目为3,且哈希映射划分模块140能够创建指示每个条目或行应该存储于哪个数据分区的分区分布映射152。可以看出这是数据的均匀分布(这里每个节点4个数据条目,而本例,当然,能够应用到跨许多节点的具有数以千计到数以百万计或者更多数据条目的表上)。明显地,本例也示出了由划分模块140提供的映射152使得节点114和节点116在数据表的二和三节点划分配置中保持相同的数据(来自各个节点114、116的被移动到节点118的数据除外)。
为进一步了解使数据保留在相同地方/节点的益处,正如后面的例子所示,描述当执行将数据从两个节点在线重组到三个节点时由表重组机制132实现的通用算法是有用的。最初步骤可以是安装触发器以捕捉被重组影响的表(例如,在数据存储110的节点114、116、118、120中的一个或多个上具有分区的表)中的数据变化。触发器优选地适应于在复制步骤期间,确保被复制的数据发生同样的变化。然后,可以由重组机构132执行复制步骤,以从旧的划分复制数据到新的划分(例如,在以上3节点的例子中,数据从节点114和节点116复制到节点118以创建节点118中的第三分区)。由存储引擎130和/或重组机构132将两个节点的旧划分被变为三个节点的新划分。接下来,旧划分可被删除(例如在上文的例子中,在前两个节点上不再需要的数据条目可以被删除)。
作为此划分技术的结果,在原始或现存节点处的数据保留为执行复制数据到新分区或节点的步骤或过程提供了很大益处。可以理解的是,不需要新的内存以在现有节点中保持新的数据划分的拷贝。为了解其原因,着眼于一个较小的数据划分例子是有帮助的,在该例中使用传统模哈希以形成新划分或分布映射。在这个例子中,对具有6个条目或行以及整数1到6的主关键字的表而言,数据的旧划分可以调用节点114、116上的两个分区115、117,表现为:节点114-(1,”Tomas”)、(3,”Jonas”)和(5,”John”),节点116-(2,”Kent”)、(4,”Frazer”)和(6,”Eliza”)。使用模哈希来添加节点并且提供在节点114、116、118上的三个数据分区115、117、119可以提供以下新分区:节点114-(1,”Tomas”)和*(4,”Frazer”),节点116-(2,”Kent”)和*(5,”John”)、和节点118-*(3,”Jonas”)和*(6,”Eliza”)。注意,需要复制到新划分的实际数据用“*”加以标记。其他的未标记数据已经存在于旧划分的节点上且不需要复制,该例子示出了在执行基于模哈希的划分中需要额外内存。
相反地,使用哈希映射划分模块132提供分布在集群数据存储110中的数据表的新划分或重组的更为理想的设置。特别地,旧的或原始的划分还是:节点114-(1,”Tomas”)、(3,”Jonas”)和(5,”John”),节点116-(2,”Kent”)、(4,”Frazer”)和(6,”Eliza”)。为添加一个新节点(节点118)到用于存储数据表的集群,存储引擎130调用表重组机构132,其转而使用哈希映射划分模块140以产生分布映射152,该分布映射152提供了如下新划分:节点114-(1,”Tomas”)和(5,”John”),节点116-(2,”Kent”)和(6,”Eliza”)、和节点118-*(3,”Jonas”)和*(4,”Frazer”)。在此重组过程中,可以看到在原始节点114、116上无需使用新内存。而且明显的事实是,因为只有存储在节点118(即,添加的或新的节点)上新分区中的数据才需要从原始或旧节点114、116(或从已被划分的数据115、117)复制,所以只需要少得多的数据复制。
因此,本发明的一方面可以认为是:如何将哈希映射划分模块140配置为创建具有象后一个例子那样的特性的分布映射152。接着,本发明的另一个方面可以是在在线重组数据库(例如,布置为以分布方式存储在集群数据存储110中的表的数据库)中数据的上下文中新的表划分的使用。下文提供了哈希映射模块140或其分区函数的一个实施例。在下面的描述中,P(PK)被用作由模块140或机构130用来决定数据或数据条目应该驻留在哪个分区(例如,例子中的节点)的函数,其中“PK”是表的主关键字。在上文的P(PK)的典型实现中,PK是’id’,P(PK)的值为1、2、或3,对应于系统100的节点114、116、118。
已经介绍了新的划分算法,标记为哈希映射划分,其可以被认为是模哈希加列表划分。存储引擎130可以支持或实现模哈希或哈希划分148,模哈希函数可以用划分函数:P(PK)=md5(PK)%#PARTITIONS(其中md5指通常使用的哈希函数,有时被标记为讯息摘要算法5(Message-Digest algorithm 5))描述。相反,本发明实施例的存储引擎130可以通过提供用分区函数P(PK)=map[md5(PK)%elements in(map)]描述的哈希映射划分140建立在这样的哈希划分148之上。使用这种划分类型,分区函数P(X)(或由模块140实现的函数)并非分区数目的直接函数。其结果是,添加分区到表不影响分区函数,且在为表切换哈希映射或分区分布映射152时,执行真正的重组。还可以理解,借助模块140使用哈希映射划分还容易地支持具有不同大小的节点,当这样的节点也被特定存储引擎130支持时,这在一些存储系统100中是有用的。
实际上,哈希映射划分的均匀性可以取决于映射条目的数目和节点的数目之间的关系。例如,如果节点数目是映射条目数目的因子,则数据就是平衡的。否则,可能存在非平衡。得到的非平衡以百分比的形式由下式100/CEILING((#MAP ENTRIES/#NODES),1)给出。在一些实施例中,选择240作为映射条目的默认数目,作为系统100的设计的一部分,部分地因为数目240具有包括1、2、3、4、5、6、8、10、12、15、16、20、24、30、40和48的因子。
图2-5提供了数据存储系统的操作的另一个工作实例,所述数据存储系统用于提供节点(或提供数据备份或复制的两个或更多个节点的节点组)的在线添加,且其中使用哈希映射划分而不是传统模哈希来执行数据划分。图2示意性地示出了数据存储系统200,用于在存储/访问应用数据集或表204中支持应用208。数据表204被示为具有四列的相对简单的数据库,所述四列包括用于可用作主关键字的标识符、名、姓和国籍的字段,并且表204被示为仅包括四个数据元素或条目以简化解释数据划分。如在208所示,应用208可以与包括第一节点组220的数据存储或集群数据存储通信,例如传输表204的数据、查询已存储的表或者修改表。
节点组220被示为包括两个数据存储设备/系统(例如,服务器和盘阵列等),而组220中的每个节点(标为节点1)被示为在数据分区或桶222(具有条目/行224、225、226、227)中存储表204的拷贝。提供存储引擎230来管理包括数据划分的节点组220的操作,图1示出系统200仅使用在该节点(即,节点1)上的一个节点组220和一个分区222来存储表204中的全部数据。在执行划分时,引擎230使用划分工具234,该划分工具234适于实现如上所述的哈希映射划分作为哈希和列表划分的组合,以创建定义了系统200中数据被放置在哪些分区或桶的分区分布映射。存储引擎230可以由系统管理员(或响应于来自应用208的通信210)操作/命令,以开始添加节点(或添加组节点)在线处理。如图2所示,将新的或第二节点组240添加到系统200的数据集群,并使其对存储引擎230可用。
在图3中,展示了使用划分工具234生成分布映射之后的存储系统200。如上文讨论,以如下方式进行划分,即:在节点间或节点组220、240间均提供更加均匀的分布,但也通过保持在原始分区/节点上的条目(那些被移动到新分区的除外)来限制对额外内存的需求。正如所示出的,在线添加节点操作完成后(例如,划分或重组数据后),分区分布映射需要将两行或数据条目存储于每个分区222、320内。具有主关键字1和3的条目224、226被保持在第一节点220或分区222中,而具有主关键字2和4的条目225、227被映射到已添加节点240中的新分区320。图3也图示了如步骤310所示的这些数据条目324、328到分区320的复制。正如所示,在现有节点上无需额外的空间或内存,通过将数据从其他现有节点复制到其作为大量数据重排(reshuffling)的一部分,这里只有节点组220的节点,而在更典型的例子中是多个节点,不必被迫提供空间以支持新划分。
图4示出了从原始节点220复制数据到新的或添加的节点240完成后的存储系统200。同时,存储系统200示出了分布410被切换以反映对来自应用208(或被应用208访问)的数据的两个数据分区或桶222、320的使用。正如所示,在完成复制之后或甚至在分布切换到新的划分分布映射之时或之后,节点222仍包含所有原始数据条目224、225、226、227。这部分地是因为这里描述的划分技术的实施例可能需要存储系统200(或存储引擎234)在进行重组中的下一个步骤之前完成运行扫描(或等待运行扫描完成)。例如,下一步可以包括将之前从原始分区222复制到新分区320的全部数据或条目删除。图5图示了删除行225、227完成后的存储系统200,这些行225、227从旧的或原始的分区222被复制到分区320作为行/条目324、328。在图5中,存储系统200的重组已经完成,且划分被作为在线添加节点中添加节点组240的一部分被执行。该过程以有效的方式完成,无需原始节点222的内存中额外的空间,而且提供了数据条目的均匀分布,这两方面由划分工具利用哈希映射划分来提供,其中使用模哈希作为表或映射中的条目或元素的数目的函数(而不是作为所希望的分区数目的函数)来执行划分分布映射的生成。
图6示出了在数据存储系统或网络中表或数据重组期间所执行的示例性步骤或过程,例如由管理在集群数据存储中节点的划分和存储,以将数据库中的数据提供给应用的的存储引擎实施的步骤。方法600在610以确定重组数据表为开始,这在确定应使用额外节点存储表数据时(例如当数据集的大小超过特定大小时)可能经常发生,以帮助搜索或以其他方式利用表中数据条目。方法600接着在620使用上文讨论过的哈希映射划分来添加一个或多个新分区到表。例如,现有表可以被水平划分为8个分区,每个分区被存储在不同的节点上,而且可以确定应将数据进一步划分到相似(或不同)数目的节点上的10个、12个或更多分区。在步骤620,使用哈希映射划分机构或分区函数以生成数据的新分区分布映射(例如,将模哈希作为数据数目的函数或结合列表划分执行),该新分区分布映射提供了节点上数据的均匀分布,并且典型地,在复制/再现步骤期间将数据保持在原始节点上(以避免需要在原始或旧节点上的额外空间)。
方法600接着在630生成重组触发器。这些触发器典型地适用于将来自旧分区、用于维持和组织表数据的数据传输到新分区。例如,与被影响的数据条目有关的数据操作语言(dml)语句(其是用于从数据库中存储、检索、修改以及擦除数据的语句),可以从原始或旧表分区被传输到新的或添加的分区(或相关节点),从而将会/应该从旧分区移动到新分区的行的更新被应用于两个拷贝(例如,仍在原始/旧分区中的拷贝以及在新分区中新生成的拷贝)。在步骤636,将由新分布映射(或哈希映射划分)识别的、用于移动到新的或已添加的分区的行或数据条目从一个或多个旧或原始分区复制到新的或已添加的分区。在步骤640,写入提交记录或进行一个步骤以提交事务(例如,事务语句,如已经改变了数据并且已经由存储引擎(例如NDB集群存储引擎)录入,但是还没有被保存的SQL语句)。
方法600接着在650切换到新的数据分布,以使新分区被用于事务/扫描,并且,在一些实施例中,步骤650可以包括同时将基于触发器的变化传播从新分区改变回旧分区。在步骤654,方法600包括在过程600继续之前等待使用旧分布的扫描的结束。在660,方法600包括启用新分区上的复制触发器。在670,在新边界(epoch boundary)上,在旧分区上禁用被移动行的复制触发器。在步骤680,重组触发器被丢弃,然后在686,该方法包括扫描/删除来自旧分区的被移动的行。在690,方法600例如以清除各种存储系统资源结束。
在表重组期间可能发生错误,错误处理可以由存储引擎提供,以要求在执行提交步骤640之前出错的任何操作导致重组被回滚。注意,节点失效典型地不被认为是出错了需要错误处理的情形。在提交步骤640之前的完全的集群崩溃可以使集群或存储引擎对后续集群启动执行回滚。在提交步骤640之后(但在690完成之前)的完全的集群崩溃可以使集群或存储引擎对后续集群启动执行前滚。
虽然从一定程度的特殊性描述和图示了本发明,但应当理解的是,当前公开的内容仅仅是以示例的方式进行,部分的组合和排列中的许多变化可以由本领域的技术人员采用,而并不背离正如下文要求保护的本发明的精神和范围。
Claims (19)
1.一种用于重组数据库的表的方法,包括:
提供包括第一节点和第二节点的数据存储集群;
将表存储在数据存储集群中,其中第一分区包括第一节点中的一组行,第二分区包括第二节点中的一组行;
修改该数据存储集群以包括第三节点以存储来自该表的数据;
借助管理该数据存储集群的存储引擎,将第三分区添加到该表包括使用划分机构创建用于第一、第二和第三分区中的数据元素的分布映射;
基于该分布映射,将来自第一和第二节点两者的表的一部分行复制到第三节点的第三分区;以及
删除来自第一和第二节点的表的已复制的行,其中该分布映射仅需要从第一和第二节点复制,而不需要复制到第一和第二节点上。
2.根据权利要求1所述的方法,其中在复制和删除之后,来自该表的数据基本均匀地分布在第一、第二和第三分区上。
3.根据权利要求1所述的方法,其中划分机构使用哈希划分作为该表中数据元素的函数。
4.根据权利要求1所述的方法,其中划分机构包括组合了哈希和列表划分的划分功能,哈希划分是在不考虑在被重组的表中的分区数目的情况下执行的。
5.根据权利要求1所述的方法,进一步地,在删除之前,包括根据分布映射切换分布以使用第一、第二和第三分区用于数据事务,并且进一步包括在执行删除之前等待使用第一和第二分区的先前分布的扫描的结束。
6.根据权利要求1所述的方法,进一步包括,在复制之前,创建重组触发器,重组触发器将对应于被复制到第三分区的那部分行的数据操作语言语句传输到第三分区。
7.一种用于存储表中的数据行的数据存储系统,包括:
运行包括划分模块的存储引擎的服务器;
由存储引擎管理的一组数据节点;以及
借助分区水平划分的数据表,其中每个数据节点中具有一组行,其中当将新数据节点添加到该组数据节点时,存储引擎操作该划分模块以生成定义该数据表的新划分的分布映射,该分布映射提供在该新划分中跨分区数据行的基本均匀的分布,并保持在数据节点中的每个原始节点中数据行的子集。
8.根据权利要求7所述的系统,其中划分模块包括组合哈希和列表划分以创建该分布映射的划分功能。
9.根据权利要求7所述的系统,其中划分模块包括模哈希划分作为该数据表中元素的函数。
10.根据权利要求7所述的系统,其中根据该分布映射,存储引擎将来自原始数据节点上的每个分区的数据的一部分行复制到新数据节点上的分区,而不将数据的任何行复制到原始的数据节点上。
11.根据权利要求7所述的系统,其中划分模块实现由P(PK)=map[md5(PK)%elements in(map)]定义的划分功能,其中PK是数据表的主关键字。
12.一种包括计算机可读介质的计算机程序产品,所述计算机可读介质上嵌入有计算机可读代码,该计算机可读代码包括:
被配置为使计算机实现将节点添加到数据存储集群的计算机可读程序代码装置,其中数据存储集群根据第一分布映射以水平划分方式在一定数目的节点上存储数表;
被配置为使该计算机实现创建定义包括已添加节点中的额外分区的数据表的划分的第二分布映射的计算机可读程序代码装置;以及
配置为使该计算机实现将与该数据表相关联的一个或多个行从该一定数目的节点复制到已添加节点的计算机可读程序代码装置,已复制的行由该第二分布映射定义,该复制不包括该一定数目的节点间的复制,由此数据被保留在该一定数目的节点上。
13.根据权利要求12所述的产品,进一步包括被配置为使该计算机实现删除来自该一定数目的节点的已复制的行的计算机可读程序代码装置,由此数据被保留在该一定数目的节点上,已复制的行的数据除外。
14.根据权利要求12所述的产品,其中第二分布映射定义来自该数据存储集群的节点上的表的数据的基本均匀的分布。
15.根据权利要求14所述的产品,其中第二分布映射定义包括模哈希表中的数据作为表中的元素的函数。
16.根据权利要求12所述的产品,其中第二分布映射定义包括执行数据表的哈希映射划分。
17.根据权利要求16所述的产品,其中哈希映射划分包括哈希和列表划分的组合。
18.根据权利要求12所述的产品,进一步包括被配置为使计算机实现在将分布切换为该第二分布映射后从该一定数目的节点删除已复制的行,并等待基于第一分布映射对该一定数目的节点的扫描的结束的计算机可读程序代码装置。
19.根据权利要求12所述的产品,进一步包括被配置为使计算机实现创建重组触发器的计算机可读程序代码装置,重组触发器将dml从基于第一分布映射的分区传输到基于第二分布映射的分区,并且在复制之后将事务提交到存储于该数据存储集群的数据表。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/402,024 | 2009-03-11 | ||
US12/402,024 US8078825B2 (en) | 2009-03-11 | 2009-03-11 | Composite hash and list partitioning of database tables |
PCT/US2010/026746 WO2010104902A2 (en) | 2009-03-11 | 2010-03-10 | Composite hash and list partitioning of database tables |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102395962A true CN102395962A (zh) | 2012-03-28 |
CN102395962B CN102395962B (zh) | 2014-04-30 |
Family
ID=42729065
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080011589.5A Active CN102395962B (zh) | 2009-03-11 | 2010-03-10 | 对数据库表的哈希和列表组合划分 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8078825B2 (zh) |
EP (1) | EP2406736A4 (zh) |
CN (1) | CN102395962B (zh) |
WO (1) | WO2010104902A2 (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103067519A (zh) * | 2013-01-04 | 2013-04-24 | 深圳市广道高新技术有限公司 | 一种异构平台下数据分布存储的方法及装置 |
CN104166661A (zh) * | 2013-05-20 | 2014-11-26 | 方正宽带网络服务股份有限公司 | 数据存储系统和数据存储方法 |
CN105760480A (zh) * | 2016-02-15 | 2016-07-13 | 深圳市中博科创信息技术有限公司 | 一种集群文件系统的分布算法 |
CN106156209A (zh) * | 2015-04-23 | 2016-11-23 | 中兴通讯股份有限公司 | 数据处理方法及装置 |
CN107818117A (zh) * | 2016-09-14 | 2018-03-20 | 阿里巴巴集团控股有限公司 | 一种数据表的建立方法、在线查询方法及相关装置 |
CN109388638A (zh) * | 2012-10-29 | 2019-02-26 | 华为技术有限公司 | 用于分布式大规模并行处理数据库的方法及系统 |
CN110413606A (zh) * | 2018-04-27 | 2019-11-05 | 贵州白山云科技股份有限公司 | 一种数据表水平拆分方法及装置 |
CN112507023A (zh) * | 2014-12-19 | 2021-03-16 | 华为技术有限公司 | 用于在集群重新配置后的工作负载平衡的复制数据库分布 |
Families Citing this family (134)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8930331B2 (en) | 2007-02-21 | 2015-01-06 | Palantir Technologies | Providing unique views of data based on changes or rules |
US7987177B2 (en) * | 2008-01-30 | 2011-07-26 | International Business Machines Corporation | Method for estimating the number of distinct values in a partitioned dataset |
US8984390B2 (en) | 2008-09-15 | 2015-03-17 | Palantir Technologies, Inc. | One-click sharing for screenshots and related documents |
CN102667761B (zh) | 2009-06-19 | 2015-05-27 | 布雷克公司 | 可扩展的集群数据库 |
US8918365B2 (en) * | 2009-06-19 | 2014-12-23 | Blekko, Inc. | Dedicating disks to reading or writing |
US8156304B2 (en) * | 2009-12-04 | 2012-04-10 | Oracle International Corporation | Dynamic data storage repartitioning |
US8768973B2 (en) * | 2010-05-26 | 2014-07-01 | Pivotal Software, Inc. | Apparatus and method for expanding a shared-nothing system |
US9400799B2 (en) * | 2010-10-04 | 2016-07-26 | Dell Products L.P. | Data block migration |
US8805784B2 (en) * | 2010-10-28 | 2014-08-12 | Microsoft Corporation | Partitioning online databases |
US9684702B2 (en) * | 2010-12-07 | 2017-06-20 | International Business Machines Corporation | Database redistribution utilizing virtual partitions |
US9881034B2 (en) | 2015-12-15 | 2018-01-30 | Mongodb, Inc. | Systems and methods for automating management of distributed databases |
US8572031B2 (en) | 2010-12-23 | 2013-10-29 | Mongodb, Inc. | Method and apparatus for maintaining replica sets |
US10713280B2 (en) | 2010-12-23 | 2020-07-14 | Mongodb, Inc. | Systems and methods for managing distributed database deployments |
US9740762B2 (en) | 2011-04-01 | 2017-08-22 | Mongodb, Inc. | System and method for optimizing data migration in a partitioned database |
US10346430B2 (en) | 2010-12-23 | 2019-07-09 | Mongodb, Inc. | System and method for determining consensus within a distributed database |
US10740353B2 (en) | 2010-12-23 | 2020-08-11 | Mongodb, Inc. | Systems and methods for managing distributed database deployments |
US11544288B2 (en) | 2010-12-23 | 2023-01-03 | Mongodb, Inc. | Systems and methods for managing distributed database deployments |
US10997211B2 (en) | 2010-12-23 | 2021-05-04 | Mongodb, Inc. | Systems and methods for database zone sharding and API integration |
US10262050B2 (en) | 2015-09-25 | 2019-04-16 | Mongodb, Inc. | Distributed database systems and methods with pluggable storage engines |
US9805108B2 (en) * | 2010-12-23 | 2017-10-31 | Mongodb, Inc. | Large distributed database clustering systems and methods |
US8996463B2 (en) | 2012-07-26 | 2015-03-31 | Mongodb, Inc. | Aggregation framework system architecture and method |
US10977277B2 (en) | 2010-12-23 | 2021-04-13 | Mongodb, Inc. | Systems and methods for database zone sharding and API integration |
US10614098B2 (en) | 2010-12-23 | 2020-04-07 | Mongodb, Inc. | System and method for determining consensus within a distributed database |
US11615115B2 (en) | 2010-12-23 | 2023-03-28 | Mongodb, Inc. | Systems and methods for managing distributed database deployments |
US8543538B2 (en) | 2011-06-01 | 2013-09-24 | Clustrix, Inc. | Systems and methods for redistributing data in a relational database |
US9547693B1 (en) | 2011-06-23 | 2017-01-17 | Palantir Technologies Inc. | Periodic database search manager for multiple data sources |
US9092482B2 (en) | 2013-03-14 | 2015-07-28 | Palantir Technologies, Inc. | Fair scheduling for mixed-query loads |
US8799240B2 (en) | 2011-06-23 | 2014-08-05 | Palantir Technologies, Inc. | System and method for investigating large amounts of data |
US9280532B2 (en) | 2011-08-02 | 2016-03-08 | Palantir Technologies, Inc. | System and method for accessing rich objects via spreadsheets |
US8504542B2 (en) * | 2011-09-02 | 2013-08-06 | Palantir Technologies, Inc. | Multi-row transactions |
US8738624B1 (en) * | 2011-09-27 | 2014-05-27 | Amazon Technologies, Inc. | Increasing distributed database capacity |
CN102495853B (zh) * | 2011-11-17 | 2014-07-09 | 成都康赛信息技术有限公司 | 一种面向切面的云存储引擎构造方法 |
US9652289B2 (en) * | 2012-04-27 | 2017-05-16 | Microsoft Technology Licensing, Llc | Systems and methods for S-list partitioning |
US8965921B2 (en) * | 2012-06-06 | 2015-02-24 | Rackspace Us, Inc. | Data management and indexing across a distributed database |
US11544284B2 (en) | 2012-07-26 | 2023-01-03 | Mongodb, Inc. | Aggregation framework system architecture and method |
US11403317B2 (en) | 2012-07-26 | 2022-08-02 | Mongodb, Inc. | Aggregation framework system architecture and method |
US10872095B2 (en) | 2012-07-26 | 2020-12-22 | Mongodb, Inc. | Aggregation framework system architecture and method |
US9189503B2 (en) * | 2012-12-06 | 2015-11-17 | Microsoft Technology Licensing, Llc | Database scale-out |
KR101677946B1 (ko) * | 2012-12-27 | 2016-11-21 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 파티션 확장 방법 및 장치 |
US9268808B2 (en) * | 2012-12-31 | 2016-02-23 | Facebook, Inc. | Placement policy |
US9609050B2 (en) | 2013-01-31 | 2017-03-28 | Facebook, Inc. | Multi-level data staging for low latency data access |
US10223431B2 (en) * | 2013-01-31 | 2019-03-05 | Facebook, Inc. | Data stream splitting for low-latency data access |
US10740323B1 (en) | 2013-03-15 | 2020-08-11 | Nuodb, Inc. | Global uniqueness checking in distributed databases |
US9230280B1 (en) | 2013-03-15 | 2016-01-05 | Palantir Technologies Inc. | Clustering data based on indications of financial malfeasance |
US8855999B1 (en) | 2013-03-15 | 2014-10-07 | Palantir Technologies Inc. | Method and system for generating a parser and parsing complex data |
US11176111B2 (en) | 2013-03-15 | 2021-11-16 | Nuodb, Inc. | Distributed database management system with dynamically split B-tree indexes |
US8930897B2 (en) | 2013-03-15 | 2015-01-06 | Palantir Technologies Inc. | Data integration tool |
US9501363B1 (en) | 2013-03-15 | 2016-11-22 | Nuodb, Inc. | Distributed database management system with node failure detection |
US10275778B1 (en) | 2013-03-15 | 2019-04-30 | Palantir Technologies Inc. | Systems and user interfaces for dynamic and interactive investigation based on automatic malfeasance clustering of related data in various data structures |
US8903717B2 (en) | 2013-03-15 | 2014-12-02 | Palantir Technologies Inc. | Method and system for generating a parser and parsing complex data |
US9256633B2 (en) | 2013-03-15 | 2016-02-09 | International Business Machines Corporation | Partitioning data for parallel processing |
US10268639B2 (en) * | 2013-03-15 | 2019-04-23 | Inpixon | Joining large database tables |
US10037348B2 (en) | 2013-04-08 | 2018-07-31 | Nuodb, Inc. | Database management system with database hibernation and bursting |
US9529837B2 (en) * | 2013-05-06 | 2016-12-27 | Sas Institute Inc. | Systems and methods involving a multi-pass algorithm for high cardinality data |
US9116975B2 (en) | 2013-10-18 | 2015-08-25 | Palantir Technologies Inc. | Systems and user interfaces for dynamic and interactive simultaneous querying of multiple data stores |
US9830346B2 (en) * | 2013-11-26 | 2017-11-28 | Sap Se | Table redistribution in distributed databases |
US9372907B2 (en) * | 2013-11-26 | 2016-06-21 | Sap Se | Table placement in distributed databases |
GB2521197A (en) | 2013-12-13 | 2015-06-17 | Ibm | Incremental and collocated redistribution for expansion of an online shared nothing database |
US9043696B1 (en) | 2014-01-03 | 2015-05-26 | Palantir Technologies Inc. | Systems and methods for visual definition of data associations |
US9824106B1 (en) | 2014-02-20 | 2017-11-21 | Amazon Technologies, Inc. | Hash based data processing |
US10055440B2 (en) * | 2014-02-24 | 2018-08-21 | Sap Se | Database table re-partitioning using trigger-based capture and replay |
US10108649B2 (en) * | 2014-02-25 | 2018-10-23 | Internatonal Business Machines Corporation | Early exit from table scans of loosely ordered and/or grouped relations using nearly ordered maps |
US9607071B2 (en) * | 2014-03-07 | 2017-03-28 | Adobe Systems Incorporated | Managing a distributed database across a plurality of clusters |
US9619557B2 (en) | 2014-06-30 | 2017-04-11 | Palantir Technologies, Inc. | Systems and methods for key phrase characterization of documents |
US9535974B1 (en) | 2014-06-30 | 2017-01-03 | Palantir Technologies Inc. | Systems and methods for identifying key phrase clusters within documents |
CN105335411A (zh) | 2014-07-31 | 2016-02-17 | 国际商业机器公司 | 用于数据处理的方法和系统 |
US9419992B2 (en) | 2014-08-13 | 2016-08-16 | Palantir Technologies Inc. | Unwanted tunneling alert system |
US9454281B2 (en) | 2014-09-03 | 2016-09-27 | Palantir Technologies Inc. | System for providing dynamic linked panels in user interface |
CN104252535A (zh) * | 2014-09-16 | 2014-12-31 | 福建新大陆软件工程有限公司 | 一种基于hbase的数据散列处理方法及装置 |
US10394818B2 (en) | 2014-09-26 | 2019-08-27 | Oracle International Corporation | System and method for dynamic database split generation in a massively parallel or distributed database environment |
US10387421B2 (en) * | 2014-09-26 | 2019-08-20 | Oracle International Corporation | System and method for generating size-based splits in a massively parallel or distributed database environment |
US9875263B2 (en) | 2014-10-21 | 2018-01-23 | Microsoft Technology Licensing, Llc | Composite partition functions |
CA2941163C (en) * | 2014-11-05 | 2019-04-16 | Huawei Technologies Co., Ltd. | Data processing method and apparatus |
US10552994B2 (en) | 2014-12-22 | 2020-02-04 | Palantir Technologies Inc. | Systems and interactive user interfaces for dynamic retrieval, analysis, and triage of data items |
US10362133B1 (en) | 2014-12-22 | 2019-07-23 | Palantir Technologies Inc. | Communication data processing architecture |
US9348920B1 (en) | 2014-12-22 | 2016-05-24 | Palantir Technologies Inc. | Concept indexing among database of documents using machine learning techniques |
US10452651B1 (en) | 2014-12-23 | 2019-10-22 | Palantir Technologies Inc. | Searching charts |
US9817563B1 (en) | 2014-12-29 | 2017-11-14 | Palantir Technologies Inc. | System and method of generating data points from one or more data stores of data items for chart creation and manipulation |
CN104731864B (zh) * | 2015-02-26 | 2018-05-29 | 国家计算机网络与信息安全管理中心 | 一种海量非结构化数据的数据存储方法 |
US10884869B2 (en) | 2015-04-16 | 2021-01-05 | Nuodb, Inc. | Backup and restore in a distributed database utilizing consistent database snapshots |
US10180954B2 (en) | 2015-05-29 | 2019-01-15 | Nuodb, Inc. | Disconnected operation within distributed database systems |
US10067969B2 (en) * | 2015-05-29 | 2018-09-04 | Nuodb, Inc. | Table partitioning within distributed database systems |
US9672257B2 (en) | 2015-06-05 | 2017-06-06 | Palantir Technologies Inc. | Time-series data storage and processing database system |
US9384203B1 (en) | 2015-06-09 | 2016-07-05 | Palantir Technologies Inc. | Systems and methods for indexing and aggregating data records |
US10628393B2 (en) * | 2015-06-24 | 2020-04-21 | International Business Machines Corporation | Generating data tables |
US9407652B1 (en) | 2015-06-26 | 2016-08-02 | Palantir Technologies Inc. | Network anomaly detection |
US10713275B2 (en) | 2015-07-02 | 2020-07-14 | Mongodb, Inc. | System and method for augmenting consensus election in a distributed database |
US9537880B1 (en) | 2015-08-19 | 2017-01-03 | Palantir Technologies Inc. | Anomalous network monitoring, user behavior detection and database system |
US10402385B1 (en) | 2015-08-27 | 2019-09-03 | Palantir Technologies Inc. | Database live reindex |
US9454564B1 (en) | 2015-09-09 | 2016-09-27 | Palantir Technologies Inc. | Data integrity checks |
US10673623B2 (en) | 2015-09-25 | 2020-06-02 | Mongodb, Inc. | Systems and methods for hierarchical key management in encrypted distributed databases |
US10846411B2 (en) | 2015-09-25 | 2020-11-24 | Mongodb, Inc. | Distributed database systems and methods with encrypted storage engines |
US10423626B2 (en) | 2015-09-25 | 2019-09-24 | Mongodb, Inc. | Systems and methods for data conversion and comparison |
US9882727B1 (en) | 2015-10-02 | 2018-01-30 | Digicert, Inc. | Partitioning certificate revocation lists |
US10044745B1 (en) | 2015-10-12 | 2018-08-07 | Palantir Technologies, Inc. | Systems for computer network security risk assessment including user compromise analysis associated with a network of devices |
US9542446B1 (en) | 2015-12-17 | 2017-01-10 | Palantir Technologies, Inc. | Automatic generation of composite datasets based on hierarchical fields |
CN105677024B (zh) * | 2015-12-31 | 2018-05-29 | 北京元心科技有限公司 | 一种眼动检测跟踪方法、装置及其用途 |
CN106951425A (zh) * | 2016-01-07 | 2017-07-14 | 阿里巴巴集团控股有限公司 | 一种映射方法和设备 |
US10922347B2 (en) * | 2016-01-28 | 2021-02-16 | Hyland Switzerland Sàrl | Hierarchical dictionary with statistical filtering based on word frequency |
US11210279B2 (en) * | 2016-04-15 | 2021-12-28 | Apple Inc. | Distributed offline indexing |
US10671496B2 (en) | 2016-05-31 | 2020-06-02 | Mongodb, Inc. | Method and apparatus for reading and writing committed data |
US10776220B2 (en) | 2016-06-27 | 2020-09-15 | Mongodb, Inc. | Systems and methods for monitoring distributed database deployments |
US10387415B2 (en) * | 2016-06-28 | 2019-08-20 | International Business Machines Corporation | Data arrangement management in a distributed data cluster environment of a shared pool of configurable computing resources |
KR101875763B1 (ko) * | 2016-07-27 | 2018-08-07 | (주)선재소프트 | 테이블 재구성시 트랜잭션의 성능저하를 최소화하는 온라인 데이터 베이스 관리 시스템 및 방법 |
US10091089B2 (en) | 2016-07-27 | 2018-10-02 | Microsoft Technology Licensing, Llc | Storing and expiring non-TCP traffic |
US9753935B1 (en) | 2016-08-02 | 2017-09-05 | Palantir Technologies Inc. | Time-series data storage and processing database system |
US10133588B1 (en) | 2016-10-20 | 2018-11-20 | Palantir Technologies Inc. | Transforming instructions for collaborative updates |
US10318630B1 (en) | 2016-11-21 | 2019-06-11 | Palantir Technologies Inc. | Analysis of large bodies of textual data |
US10586210B2 (en) * | 2016-11-30 | 2020-03-10 | International Business Machines Corporation | Blockchain checkpoints and certified checkpoints |
US10523421B2 (en) * | 2016-11-30 | 2019-12-31 | International Business Machines Corporation | Checkpoints for permissionless blockchains |
US10884875B2 (en) | 2016-12-15 | 2021-01-05 | Palantir Technologies Inc. | Incremental backup of computer data files |
US10223099B2 (en) | 2016-12-21 | 2019-03-05 | Palantir Technologies Inc. | Systems and methods for peer-to-peer build sharing |
CN108241701A (zh) * | 2016-12-26 | 2018-07-03 | 航天信息股份有限公司 | 一种提高MySQL高可用性的方法 |
US10565202B2 (en) * | 2017-02-08 | 2020-02-18 | International Business Machines Corporation | Data write/import performance in a database through distributed memory |
CN108804018A (zh) * | 2017-04-26 | 2018-11-13 | 华为技术有限公司 | 一种数据分区的方法及装置 |
US10896097B1 (en) | 2017-05-25 | 2021-01-19 | Palantir Technologies Inc. | Approaches for backup and restoration of integrated databases |
GB201708818D0 (en) | 2017-06-02 | 2017-07-19 | Palantir Technologies Inc | Systems and methods for retrieving and processing data |
US10866868B2 (en) | 2017-06-20 | 2020-12-15 | Mongodb, Inc. | Systems and methods for optimization of database operations |
US11334552B2 (en) | 2017-07-31 | 2022-05-17 | Palantir Technologies Inc. | Lightweight redundancy tool for performing transactions |
US10417224B2 (en) | 2017-08-14 | 2019-09-17 | Palantir Technologies Inc. | Time series database processing system |
AU2018316601B2 (en) | 2017-08-15 | 2023-02-02 | Nuodb, Inc. | Index splitting in distributed databases |
US10216695B1 (en) | 2017-09-21 | 2019-02-26 | Palantir Technologies Inc. | Database system for time series data storage, processing, and analysis |
US10614069B2 (en) | 2017-12-01 | 2020-04-07 | Palantir Technologies Inc. | Workflow driven database partitioning |
US11281726B2 (en) | 2017-12-01 | 2022-03-22 | Palantir Technologies Inc. | System and methods for faster processor comparisons of visual graph features |
US11016986B2 (en) | 2017-12-04 | 2021-05-25 | Palantir Technologies Inc. | Query-based time-series data display and processing system |
CN108009261B (zh) * | 2017-12-12 | 2020-12-25 | 北京奇艺世纪科技有限公司 | 一种数据同步方法、装置及电子设备 |
CN110019274B (zh) | 2017-12-29 | 2023-09-26 | 阿里巴巴集团控股有限公司 | 一种数据库系统以及查询数据库的方法和装置 |
GB201807534D0 (en) | 2018-05-09 | 2018-06-20 | Palantir Technologies Inc | Systems and methods for indexing and searching |
WO2020051332A1 (en) * | 2018-09-06 | 2020-03-12 | Gracenote, Inc. | Methods and apparatus for efficient media indexing |
CN109299191A (zh) * | 2018-09-18 | 2019-02-01 | 新华三大数据技术有限公司 | 一种数据分布方法、装置、服务器及计算机存储介质 |
US11086840B2 (en) | 2018-12-07 | 2021-08-10 | Snowflake Inc. | Transactional streaming of change tracking data |
CN112789606A (zh) * | 2019-09-11 | 2021-05-11 | 华为技术有限公司 | 数据重分布方法、装置及系统 |
EP4028870A4 (en) | 2019-09-12 | 2023-06-07 | Oracle International Corporation | AUTONOMOUS PARTITIONED DATABASE TABLES |
CN111651406B (zh) * | 2020-05-21 | 2023-07-25 | 杭州明讯软件技术有限公司 | 一种自动化载波调度系统文件读取方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030188085A1 (en) * | 2002-04-02 | 2003-10-02 | Hitachi, Ltd. | Clustered storage system and its control method |
CN1708026A (zh) * | 2004-04-16 | 2005-12-14 | 微软公司 | 数据覆盖图、自组织元数据覆盖和应用级多信道广播 |
CN1955912A (zh) * | 2006-10-13 | 2007-05-02 | 清华大学 | 海量存储系统中的资源分配方法 |
US20080046400A1 (en) * | 2006-08-04 | 2008-02-21 | Shi Justin Y | Apparatus and method of optimizing database clustering with zero transaction loss |
US20090043863A1 (en) * | 2004-07-08 | 2009-02-12 | International Business Machines Corporation | System using virtual replicated tables in a cluster database management system |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2150745C (en) * | 1995-06-01 | 2001-05-01 | Chaitanya K. Baru | Method and apparatus for implementing partial declustering in a parallel database system |
CA2159269C (en) * | 1995-09-27 | 2000-11-21 | Chaitanya K. Baru | Method and apparatus for achieving uniform data distribution in a parallel database system |
US6363396B1 (en) * | 1998-12-21 | 2002-03-26 | Oracle Corporation | Object hashing with incremental changes |
US6725261B1 (en) | 2000-05-31 | 2004-04-20 | International Business Machines Corporation | Method, system and program products for automatically configuring clusters of a computing environment |
US7562090B2 (en) | 2002-12-19 | 2009-07-14 | International Business Machines Corporation | System and method for automating data partitioning in a parallel database |
US7469253B2 (en) * | 2003-04-01 | 2008-12-23 | Microsoft Corporation | Associative hash partitioning using pseudo-random number generator |
JP2005165702A (ja) | 2003-12-03 | 2005-06-23 | Hitachi Ltd | クラスタストレージのデバイス連結方法 |
GB0412655D0 (en) | 2004-06-07 | 2004-07-07 | British Telecomm | Distributed storage network |
US8145872B2 (en) | 2004-11-08 | 2012-03-27 | International Business Machines Corporation | Autonomic self-tuning of database management system in dynamic logical partitioning environment |
US7454449B2 (en) | 2005-12-20 | 2008-11-18 | International Business Machines Corporation | Method for reorganizing a set of database partitions |
US8156107B2 (en) | 2007-02-02 | 2012-04-10 | Teradata Us, Inc. | System and method for join-partitioning for local computability of query over shared-nothing clusters |
-
2009
- 2009-03-11 US US12/402,024 patent/US8078825B2/en active Active
-
2010
- 2010-03-10 EP EP10751317.8A patent/EP2406736A4/en not_active Ceased
- 2010-03-10 CN CN201080011589.5A patent/CN102395962B/zh active Active
- 2010-03-10 WO PCT/US2010/026746 patent/WO2010104902A2/en active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030188085A1 (en) * | 2002-04-02 | 2003-10-02 | Hitachi, Ltd. | Clustered storage system and its control method |
CN1708026A (zh) * | 2004-04-16 | 2005-12-14 | 微软公司 | 数据覆盖图、自组织元数据覆盖和应用级多信道广播 |
US20090043863A1 (en) * | 2004-07-08 | 2009-02-12 | International Business Machines Corporation | System using virtual replicated tables in a cluster database management system |
US20080046400A1 (en) * | 2006-08-04 | 2008-02-21 | Shi Justin Y | Apparatus and method of optimizing database clustering with zero transaction loss |
CN1955912A (zh) * | 2006-10-13 | 2007-05-02 | 清华大学 | 海量存储系统中的资源分配方法 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109388638A (zh) * | 2012-10-29 | 2019-02-26 | 华为技术有限公司 | 用于分布式大规模并行处理数据库的方法及系统 |
CN103067519A (zh) * | 2013-01-04 | 2013-04-24 | 深圳市广道高新技术有限公司 | 一种异构平台下数据分布存储的方法及装置 |
CN103067519B (zh) * | 2013-01-04 | 2016-08-24 | 深圳市广道高新技术有限公司 | 一种异构平台下数据分布存储的方法及装置 |
CN104166661A (zh) * | 2013-05-20 | 2014-11-26 | 方正宽带网络服务股份有限公司 | 数据存储系统和数据存储方法 |
CN104166661B (zh) * | 2013-05-20 | 2018-05-22 | 方正宽带网络服务股份有限公司 | 数据存储系统和数据存储方法 |
CN112507023A (zh) * | 2014-12-19 | 2021-03-16 | 华为技术有限公司 | 用于在集群重新配置后的工作负载平衡的复制数据库分布 |
CN106156209A (zh) * | 2015-04-23 | 2016-11-23 | 中兴通讯股份有限公司 | 数据处理方法及装置 |
CN105760480A (zh) * | 2016-02-15 | 2016-07-13 | 深圳市中博科创信息技术有限公司 | 一种集群文件系统的分布算法 |
CN107818117A (zh) * | 2016-09-14 | 2018-03-20 | 阿里巴巴集团控股有限公司 | 一种数据表的建立方法、在线查询方法及相关装置 |
CN110413606A (zh) * | 2018-04-27 | 2019-11-05 | 贵州白山云科技股份有限公司 | 一种数据表水平拆分方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
EP2406736A4 (en) | 2014-04-02 |
US20100235606A1 (en) | 2010-09-16 |
EP2406736A2 (en) | 2012-01-18 |
WO2010104902A2 (en) | 2010-09-16 |
CN102395962B (zh) | 2014-04-30 |
WO2010104902A3 (en) | 2011-01-06 |
US8078825B2 (en) | 2011-12-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102395962B (zh) | 对数据库表的哈希和列表组合划分 | |
US11461356B2 (en) | Large scale unstructured database systems | |
US10846277B1 (en) | Journaled tables in database systems | |
KR102307371B1 (ko) | 데이터베이스 시스템 내의 데이터 복제 및 데이터 장애 조치 | |
US8386646B2 (en) | Simplified application object data synchronization for optimized data storage | |
US7546486B2 (en) | Scalable distributed object management in a distributed fixed content storage system | |
Makris et al. | A classification of NoSQL data stores based on key design characteristics | |
US20130110873A1 (en) | Method and system for data storage and management | |
US9183267B2 (en) | Linked databases | |
JP2003296171A (ja) | 電子帳票管理方法及びプログラム | |
CN101594377A (zh) | 用于管理Feed数据的系统和方法 | |
US10114874B2 (en) | Source query caching as fault prevention for federated queries | |
JP2005259057A (ja) | 更新履歴管理装置及び記録媒体 | |
US20170270149A1 (en) | Database systems with re-ordered replicas and methods of accessing and backing up databases | |
EP3061011B1 (en) | Method for optimizing index, master database node and subscriber database node | |
WO2011073923A2 (en) | Record operation mode setting | |
JP2023534656A (ja) | アクセラレータ専用データベーステーブルのアーカイビング | |
Mosharraf et al. | Improving lookup and query execution performance in distributed Big Data systems using Cuckoo Filter | |
JP2004302662A (ja) | ジャーナル取得・配付装置、ジャーナル取得・配付方法、その方法をコンピュータに行わせるプログラム | |
KR101035857B1 (ko) | 데이터 관리 방법 및 그 시스템 | |
CN111565211B (zh) | 一种cdn配置分发网络系统 | |
Srinivasan et al. | Techniques and Efficiencies from Building a Real-Time DBMS | |
Vilaça et al. | On the expressiveness and trade-offs of large scale tuple stores | |
Dobos et al. | A comparative evaluation of NoSQL database systems | |
JP2000020374A (ja) | レプリケーション制御システム |
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 |