数据处理方法、装置及电子设备
技术领域
本申请涉及一种数据处理方法、装置及电子设备,属于计算机技术领域。
背景技术
在分布式数据库系统中,通过分区键能够实现将单机中的一张数据表中的多条数据按照一定的分区规则进行分区存储,即将数据表按照一定的分区规则分成多个数据表切片。当需要向分布式数据库中插入新的数据时,分布式数据库引擎会先根据数据中包含的作为分区键的字段(简称分区键字段),查询分区键路由表,确定该条数据对应的数据表切片所在的分区数据库(称作目的分区数据库)中,然后将该条数据发送至该目的分区数据库所在的数据节点,执行数据插入处理。在一个数据节点上可以包含一个或多个分区数据库。
在将分区键作为唯一键的情况下,还需要再执行分区键的唯一性检查,唯一性检查由收到新数据的数据节点来执行。具体地,数据节点会在目的分区数据库,在的数据索引表切片中,进行分区键的唯一性检查,以确定是否能够向该目的分区数据库中写入该条数据,从而保证分区键的全局唯一性。
现有技术中实现唯一键的方式,要求作为唯一键的字段(简称唯一键字段)要和分区键字段相同,这种方式极大地限制了唯一键的数量以及对唯一键字段的选择。
发明内容
本发明实施例提供一种数据处理方法、装置及电子设备,以更加灵活地在分布式数据库系统中实现唯一键。
为了实现上述目的,本发明实施例提供了一种数据处理方法,应用于分布式数据库系统中,所述分布式数据库系统包括分布式数据库引擎和多个数据节点,在所述数据节点上设置有多个分区数据库,在所述分布式数据引擎中设置有分区键路由表和唯一键索引路由表,所述方法包括在所述分布式数据引擎上执行如下处理:
根据待插入的新数据中的分区键字段的值,查询分区键路由表,确定该新数据对应的数据表切片所在的第一目的分区数据库的第一路由信息;
根据所述新数据中的唯一键字段的值,查询唯一键索引路由表,确定该新数据对应的唯一键索引表切片所在的第二目的分区数据库的第二路由信息;
将该新数据、第一路由信息以及第二路由信息封装为数据插入请求报文,并将该数据插入请求报文发送至第一目的分区数据库所在的数据节点。
本发明实施例还提供了一种数据处理方法,应用于分布式数据库系统中,所述分布式数据库系统包括分布式数据库引擎和多个数据节点,在所述数据节点上设置有多个分区数据库,所述方法包括在所述数据节点上执行如下处理:
接收所述分布式数据库引擎发送的数据插入请求报文,所述数据插入请求报文包含待插入的新数据、所述新数据对应的数据表切片所在的第一目的分区数据库的第一路由信息以及所述新数据对应的唯一键索引表切片所在的第二目的分区数据库的第二路由信息;
根据所述第二路由信息,访问所述第二目的分区数据库,执行向所述唯一键索引表切片插入所述新数据对应的唯一键索引的处理;以及根据所述第一路由信息,访问所述第一目的分区数据库,执行向所述数据表切片插入新数据的处理。
本发明实施例还提供了一种数据处理装置,应用于分布式数据库系统中,所述分布式数据库系统包括分布式数据库引擎和多个数据节点,在所述数据节点上设置有多个分区数据库,在所述分布式数据引擎中设置有分区键路由表和唯一键索引路由表,所述装置设置在所述分布式数据引擎上中,其包括:
第一路由信息生成模块,用于根据待插入的新数据中的分区键字段的值,查询分区键路由表,确定该新数据对应的数据表切片所在的第一目的分区数据库的第一路由信息;
第二路由信息生成模块,用于根据所述新数据中的唯一键字段的值,查询唯一键索引路由表,确定该新数据对应的唯一键索引表切片所在的第二目的分区数据库的第二路由信息;
报文生成模块,用于将该新数据、第一路由信息以及第二路由信息封装为数据插入请求报文,并将该数据插入请求报文发送至第一目的分区数据库所在的数据节点。
本发明实施例还提供了一种数据处理装置,应用于分布式数据库系统中,所述分布式数据库系统包括分布式数据库引擎和多个数据节点,在所述数据节点上设置有多个分区数据库,该装置设置在数据节点中,其包括:
报文接收模块,用于接收所述分布式数据库引擎发送的数据插入请求报文,所述数据插入请求报文包含待插入的新数据、所述新数据对应的数据表切片所在的第一目的分区数据库的第一路由信息以及所述新数据对应的唯一键索引表切片所在的第二目的分区数据库的第二路由信息;
唯一键索引插入处理模块,用于根据所述第二路由信息,访问所述第二目的分区数据库,执行向所述唯一键索引表切片插入所述新数据对应的唯一键索引的处理;
数据插入处理模块,用于根据所述第一路由信息,访问所述第一目的分区数据库,执行向所述数据表切片插入新数据的处理。
本发明实施例还提供了一种电子设备,其中,所述电子设备应用于分布式数据库系统中,所述分布式数据库系统包括分布式数据库引擎和多个数据节点,在所述数据节点上设置有多个分区数据库,在所述分布式数据引擎中设置有分区键路由表和唯一键索引路由表,该电子设备包括:
存储器,用于存储程序;
处理器,耦合至所述存储器,用于执行所述程序,以用于在所述分布式数据引擎上执行如下处理:
根据待插入的新数据中的分区键字段的值,查询分区键路由表,确定该新数据对应的数据表切片所在的第一目的分区数据库的第一路由信息;
根据所述新数据中的唯一键字段的值,查询唯一键索引路由表,确定该新数据对应的唯一键索引表切片所在的第二目的分区数据库的第二路由信息;
将该新数据、第一路由信息以及第二路由信息封装为数据插入请求报文,并将该数据插入请求报文发送至第一目的分区数据库所在的数据节点。
本发明实施例还提供了一种电子设备,其中,所述电子设备应用于分布式数据库系统中,所述分布式数据库系统包括分布式数据库引擎和多个数据节点,在所述数据节点上设置有多个分区数据库,在所述分布式数据引擎中设置有分区键路由表和唯一键索引路由表,该电子设备包括:
存储器,用于存储程序;
处理器,耦合至所述存储器,用于执行所述程序,以用于在所述数据节点上执行如下处理:
接收所述分布式数据库引擎发送的数据插入请求报文,所述数据插入请求报文包含待插入的新数据、所述新数据对应的数据表切片所在的第一目的分区数据库的第一路由信息以及所述新数据对应的唯一键索引表切片所在的第二目的分区数据库的第二路由信息;
根据所述第二路由信息,访问所述第二目的分区数据库,执行向所述唯一键索引表切片插入所述新数据对应的唯一键索引的处理;以及根据所述第一路由信息,访问所述第一目的分区数据库,执行向所述数据表切片插入新数据的处理。
本发明实施例提供的数据处理方法、装置及电子设备,通过在分布式数据库引擎中增设唯一键索引路由表以及在各个分区数据库中增设唯一键索引表切片的存储空间,实现了独立于分区键来实现唯一键,从而突破了现有技术中只能将分区键作为唯一键的限制,增加了唯一键设定和使用的灵活度。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
图1为本发明实施例涉及的分布式数据库系统的结构示意图之一;
图2为本发明实施例的分区数据的结构示意图;
图3为本发明实施例的数据处理方法的流程示意图之一;
图4为本发明实施例的数据处理方法的流程示意图之二;
图5为本发明实施例的数据处理方法的流程示意图之三;
图6其为本发明实施例的分布式数据库系统的结构示意图之二;
图7为本发明实施例的数据处理装置的结构示意图之一;
图8为本发明实施例的数据处理装置的结构示意图之二;
图9为本发明实施例的数据处理装置的结构示意图之三;
图10为本发明实施例的电子设备的结构示意图之一;
图11为本发明实施例的电子设备的结构示意图之二。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
技术术语说明
唯一键:唯一键在数据库是具有唯一性的字段,能够唯一性对一条数据(数据行)进行索引的字段(数据列)。
分区键:分区键是用来决定某条数据(数据行)属于哪个分区的字段(数据列),分区键不定具有全局唯一性,即分区键并不要求一定是唯一键。
本发明实施例概览
本发明实施例的技术目的是在分布式数据库系统中,不依赖于分区键来实现全局性的唯一键,或者说是独立于分区键来实现唯一键。本发明实施例的技术原理在于:增设了唯一键索引表,将唯一索引表以分布式的方式存储于各个分区数据库中,即根据分区规则将唯一索引表划分为多个唯一索引表切片,分散存储于各个分区数据库中。并且在分布式数据库引擎中增设了唯一键索引路由表,记录唯一键索引表切片所在分区数据库。
如图1所示,其为本发明实施例涉及的分布式数据库系统的结构示意图之一,其包括:分布式数据库引擎、多个数据节点a~n以及数据节点上的多个分区数据库a1~an、b1~bn……n1~nn。分布式数据库引擎用来提供各个分区数据库的分区路由信息,以及唯一键索引表切片的分区路由信息。
在本发明的分区数据库中,除了存放数据表切片之外,还存储上述的唯一键索引表切片。因此,如图2所示,其为本发明实施例的分区数据的结构示意图,在该分区数据库中,包含了分区键索引表空间和数据表空间。
基于图1所示的系统架构,在插入新数据时会涉及到两个方面的处理:一方面,要找到新数据对应的数据表切片所在的分区数据库,以便进行数据插入处理,在插入处理的过程中,会执行针数据表约束检查,只有通过数据表约束检查才能成功地向数据表切片中插入数据;另一方面,还要找到新数据对应的唯一键索引表切片所在的分区数据库,并在该索引表中执行唯一键索引的插入处理,在插入处理的过程中会执行唯一键索引的唯一性检查,只有通过唯一性检查才能成功插入唯一键索引。
另外,在向数据表切片中插入数据和向唯一键索引切片插入唯一键索引的处理中,如果其中的一个插入处理成功而另外一个失败,则还需要针对插入处理成功的一方的数据或者唯一键索引执行回滚处理,也就是说,在本发明实施例中,数据插入需要满足唯一键索引条件和数据表约束两个条件。
此外,在发明实施例中,还可以根据数据表切片所在的分区数据库和唯一键索引表切片所在的分区数据库之间的关系,以不同先后顺序和方式,向数据表切片中插入数据和向唯一键索引切片的插入唯一键索引,这方面的内容在后续的实施例中会进一步说明。
上述的唯一键索引表和唯一键索引路由表可以基于用户对唯一键字段的声明而触发创建。用户可以在分布式数据系统中创建数据表的过程中,同时声明唯一键字段,从而触发分布式数据库引擎来创建唯一键索引表和唯一键路由表。声明的唯一键字段可以是多个,并且不用受到分区键的限制。
本发明实施例的技术方案,通过在分布式数据库引擎中增设唯一键索引路由表以及在各个分区数据库中增设唯一键索引表切片的存储空间,实现了独立于分区键来实现唯一键,从而突破了现有技术中只能将分区键作为唯一键的限制,增加了唯一键设定和使用的灵活度。
下面通过一些具体实施例来进一步说明本发明的技术方案。
实施例一
如图3所示,其为本发明实施例的数据处理方法的流程示意图之一。本实施例的数据处理方法应用于分布式数据库系统中,分布式数据库系统包括分布式数据库引擎和多个数据节点,在数据节点上设置有多个分区数据库,在分布式数据引擎中设置有分区键路由表和唯一键索引路由表。其中,在分布式数据库系统中,各个数据节点可以以实例的形态存在,各个分区数据库可以是各个实例中的Schema(数据对象集合)。具体地,图3所示的方法在分布式数据引擎上执行,该方法包括:
S101:根据待插入的新数据中的分区键字段的值,查询分区键路由表,确定该新数据对应的数据表切片所在的第一目的分区数据库的第一路由信息。待插入的新数据可以来自于用户的客户端发送来的数据插入请求,该用户一般就是数据表的所有者。
其中,分区键路由表记录了分区键(或者根据预设算法对分区键的进行运算处理后得到的结果)与分区数据库之间的对应关系。通过查询该表,可以确定待插入的数据应当插入到哪个分区数据库中。
当分布式数据库引擎收到一条待插入的新数据时,会根据分区键字段查询该路由表,获取插入该数据的目的分区数据库的地址,从而生成该第一路由信息。
在实际应用中,分区键路由表可以记录分区键范围与分区数据库之间的对应关系,相应地,在生成第一信息的过程中,可以根据分区键字段确定所属的分区键范围,然后获取到分区数据库的地址。
另外,分区键路由表也可以记录分区键字段的哈希运算结果与分区数据库之间的对应关系。相应地,在路由信息的生成过程,需要先根据预设的哈希算法,对分区键字段进行哈希计算,并根据哈希计算结果来查询分区键路由表,来获得分区数据库的地址。
举例来说,某个企业用户在分布式数据库系统中,建立了一份企业员工信息的数据表,在该数据表的数据中,存在姓名和工号两个字段。如果按照姓名进行分区,那么姓名字段就作为分区键,可以将不同的姓作为分区范围,例如,姓张的对应分区数据库a1,姓王对应于某个分区数据库b1。再例如,按照工号进行分区,工号字段作为分区键,预设的多个工号范围就是分区范围,0-1000对应于分区数据库a1,1001-2000对应于分区数据库b1。
S102:根据新数据中的唯一键字段的值,查询唯一键索引路由表,确定该新数据对应的唯一键索引表切片所在的第二目的分区数据库的第二路由信息。其中,唯一键索引路由表的技术原理与前述的分区键路由表是一样的,只不过唯一键索引路由表记录的是唯一键索引表所在的分区数据库的路由信息。此外,上述的步骤S101和步骤S102之间可以以任意的先后顺序执行或者同时执行。
S103:将该新数据、第一路由信息以及第二路由信息封装为数据插入请求报文,并将该数据插入请求报文发送至第一目的分区数据库所在的数据节点。对于唯一键索引的插入处理和新数据的插入处理均由数据表切片所在的数据节点来执行,具体的执行过程将在下面的实施例中进行详细介绍。
以上介绍了分布式数据引擎在向分布式数据库中插入新数据时的处理过程,在此过程中,分布式数据引擎的主要作用是基于其存储的唯一键索引路由表和分区路由表来生成路由信息并封装成数据插入请求报文,发送给数据节点执行处理。
基于本发明实施例提供的处理机制,在满足数据表自身的唯一性的前提下,可以将数据表中的任意字段声明为唯一键,并且唯一键也可以为多个。用户可以在向分布式数据库系统中创建数据表的过程中声明唯一键。具体地,如图4所示,其为本发明实施例的数据处理方法的流程示意图之二,图4示出了分布式数据引擎对于唯一键声明的处理,其包括:
S201:接收唯一键声明请求,根据唯一键声明请求中携带的唯一键字段的声明信息,按照预设的分区规则,在多个分区数据库中创建唯一键索引表切片。该唯一键声明请求可以来自于在分布式数据库中创建数据表的用户的客户端。其中,声明信息可以包括被声明为唯一键的唯一键字段名称以及相关属性信息等。
S202:根据唯一键索引表切片所在的分区数据库的信息创建唯一索引路由表。唯一索引路由表创建好后,就可以在后续的新数据的插入过程中提供路由信息了。
通过上述的分布式数据库引擎的处理机制可以看出,本发明实施例的数据插入处理方法,通过在分布式数据库引擎中增设唯一键索引路由表以及在各个分区数据库中增设唯一键索引表切片的存储空间,实现了独立于分区键来实现唯一键,从而突破了现有技术中只能将分区键作为唯一键的限制,增加了唯一键设定和使用的灵活度。
实施例二
如图5所示,其为本发明实施例的数据处理方法的流程示意图之三。在实施例一介绍了分布式数据库引擎所执行的处理,在本实施例中,将进一步介绍数据节点的处理过程。如图5所示,在分布式数据库引擎将数据插入请求报文发送至某一个数据节点后,该数据节点执行如下处理:
S301:接收分布式数据库引擎发送的数据插入请求报文。如前述实施例所介绍的,该数据插入请求报文包含待插入的新数据、新数据对应的数据表切片所在的第一目的分区数据库的第一路由信息以及新数据对应的唯一键索引表切片所在的第二目的分区数据库的第二路由信息。
S302:根据第二路由信息,访问第二目的分区数据库,执行向唯一键索引表切片插入新数据对应的唯一键索引的处理。
S303:根据第一路由信息,访问第一目的分区数据库,执行向数据表切片插入新数据的处理。
上述的步骤S302和步骤S303并不限于图中所示的先后顺序,而是可以根据实际需要调整先后执行顺序或者同时执行。在本发明实施例中,新数据的插入需要满足唯一键的唯一性条件和数据表约束的约束条件。从避免无效的插入处理的角度,一般会以一定的先后顺序来执行上述步骤。当先执行的插入处理成功后,再执行另一外一个插入处理,如果另外一个插入处理失败,则对先执行的插入处理的数据或者唯一性索引执行回滚处理。
具体地,在本发明实施例中,可以根据第一分区数据库和第二分区数据库之间的关系,来执行不同的插入处理方式:
1)第一分区数据库和第二分区数据库为相同的分区数据库。
由于在同一个数据库中,数据节点只需要访问同一个分区数据库来执行唯一键索引的插入和新数据的插入,因此,可以以任意先后顺序来执行这两个插入处理。由于作为主表的数据表的约束条件相对于唯一键索引表的约束条件会多一些,因此,可以先进行数据插入处理,在确认满足了数据表的约束条件后,再执行唯一键索引的插入处理,如果在执行唯一键插入过程中,唯一性检查不通过,则可以再对已经插入到数据表切片中的数据执行回滚处理。此外,也可以同时执行数据插入处理和唯一键索引的插入处理,如果其中一个插入处理不成功,则对另一个插入处理执行回滚。
2)第一分区数据库和第二分区数据库为同一数据节点的不同分区数据库。
由于在不同的分区数据库中,需要考虑数据库访问的效率以及代码执行的代价。相对于数据表的约束条件的检查,唯一键的检查的内容相对单一一些,因此,优选地会先执行唯一键索引的插入处理。具体地,访问第二分区数据库,执行向唯一键索引表切片插入唯一键索引的处理,如果唯一键索引插入成功,则访问第一分区数据库,执行向数据表切片插入新数据的处理。
如果向数据表切片插入新数据失败,则对已经插入到第二分区数据库的唯一键索引执行回滚处理。
3)第一分区数据库和第二分区数据库为不同数据节点的分区数据库,第一分区数据库处于第一数据节点,第二分区数据库处于第二数据节点。
这种情况下,涉及到了跨数据节点的数据库访问,并且相对于数据表的约束条件的检查,唯一键的检查的内容相对单一一些,因此,优选地会先执行唯一键索引的插入处理。为了更好地实现跨数据节点的唯一键索引表切片的处理,如图6所示,其为本发明实施例的分布式数据库系统的结构示意图之二,与图1不同之处在于,在本发明实施例中,可以在数据节点中构建索引控制数据总线,用来专门提供与唯一键索引相关的通信交互。因此,第一数据节点可以通过索引控制数据总线,与第二数据节点进行通信,指示第二数据节点访问第二分区数据库,执行向唯一键索引表切片插入唯一键索引的处理,如果唯一键索引插入成功,则通过索引控制数据总线返回成功插入唯一键索引的消息,第一数据节点访问第一分区数据库,执行向数据表切片插入新数据的处理。
如果向数据表切片插入新数据失败,则通过索引控制数据总线,指示第二数据节点访问第二分区数据库,对已经插入到第二分区数据库的唯一键索引执行回滚处理。
本实施例介绍了在分布式数据库系统中,数据节点在接收到数据插入请求报文的处理过程,通过本实施例可以看出,通过在分布式数据库引擎中增设唯一键索引路由表以及在各个分区数据库中增设唯一键索引表切片的存储空间,实现了独立于分区键来实现唯一键,从而突破了现有技术中只能将分区键作为唯一键的限制,增加了唯一键设定和使用的灵活度。
实施例三
如图7所示,其为本发明实施例的数据处理装置的结构示意图之一,该装置应用于分布式数据库系统中,分布式数据库系统包括分布式数据库引擎和多个数据节点,在数据节点上设置有多个分区数据库,在分布式数据引擎中设置有分区键路由表和唯一键索引路由表,装置设置在分布式数据引擎上中,其包括:
第一路由信息生成模块11,用于根据待插入的新数据中的分区键字段的值,查询分区键路由表,确定该新数据对应的数据表切片所在的第一目的分区数据库的第一路由信息。
第二路由信息生成模块12,用于根据新数据中的唯一键字段的值,查询唯一键索引路由表,确定该新数据对应的唯一键索引表切片所在的第二目的分区数据库的第二路由信息。
报文生成模块13,用于将该新数据、第一路由信息以及第二路由信息封装为数据插入请求报文,并将该数据插入请求报文发送至第一目的分区数据库所在的数据节点。
上述图7中所示装置,能够响应于来自用户的客户端发送来的数据插入请求,触发向分布式数据库中插入数据的处理流程。在此过程中,分布式数据引擎的主要作用是基于其存储的唯一键索引路由表和分区路由表来生成路由信息并封装成数据插入请求报文,发送给数据节点执行处理。
基于本发明实施例提供的处理机制,在满足数据表自身的唯一性的前提下,可以将数据表中的任意字段声明为唯一键,并且唯一键也可以为多个。用户可以在向分布式数据库系统中创建数据表的过程中声明唯一键,对于唯一键声明的处理,可以通过图8所示的装置来完成,如图8所示,其为本发明实施例的数据处理装置的结构示意图之二,该装置同样设置于分布式数据库引擎中,具体可以包括:
唯一键索引表切片创建模块14,用于接收唯一键声明请求,根据唯一键声明请求中携带的唯一键字段的声明信息,按照预设的分区规则,在多个分区数据库中创建唯一键索引表切片。
唯一索引路由表创建模块15,用于根据唯一键索引表切片所在的分区数据库的信息创建唯一索引路由表。
需要说明的是,图7所示的装置可以和图8所示装置作为一个装置设置于分布式数据库引擎中,也可以作为两个装置设置在分布式数据库引擎。
对于上述处理过程具体说明、技术原理详细说明以及技术效果详细分析在前面实施例中进行了详细描述,在此不再赘述。
本实施例介绍了在分布式数据库系统中,设置在分布式数据库引擎上的数据插入处理装置的处理机制,通过本实施例可以看出,通过在分布式数据库引擎中增设唯一键索引路由表以及在各个分区数据库中增设唯一键索引表切片的存储空间,实现了独立于分区键来实现唯一键,从而突破了现有技术中只能将分区键作为唯一键的限制,增加了唯一键设定和使用的灵活度。
实施例四
如图9所示,其为本发明实施例的数据处理装置的结构示意图之三,该装置应用于分布式数据库系统中,分布式数据库系统包括分布式数据库引擎和多个数据节点,在数据节点上设置有多个分区数据库,该装置设置在数据节点中,其包括:
报文接收模块21,用于接收分布式数据库引擎发送的数据插入请求报文,数据插入请求报文包含待插入的新数据、新数据对应的数据表切片所在的第一目的分区数据库的第一路由信息以及新数据对应的唯一键索引表切片所在的第二目的分区数据库的第二路由信息;
唯一键索引插入处理模块22,用于根据第二路由信息,访问第二目的分区数据库,执行向唯一键索引表切片插入新数据对应的唯一键索引的处理。此外,唯一键索引插入处理模块22还可以执行针对已经插入的唯一键索引的回滚处理。
数据插入处理模块23,用于根据第一路由信息,访问第一目的分区数据库,执行向数据表切片插入新数据的处理。此外,数据插入处理模块23还可以执行针对已经插入的数据执行回滚处理。
在本发明实施例中,数据节点还可以根据第一分区数据库和第二分区数据库之间的关系,指示唯一键索引插入处理模块22和数据插入处理模块23可以执行不同的插入处理方式:
1)第一分区数据库和第二分区数据库为相同的分区数据库。
由于在同一个数据库中,数据节点只需要访问同一个分区数据库来执行唯一键索引的插入和新数据的插入,因此,可以以任意先后顺序来执行这两个插入处理。由于作为主表的数据表的约束条件相对于唯一键索引表的约束条件会多一些,因此,数据插入处理模块23可以先进行数据插入处理,在确认满足了数据表的约束条件后,唯一键索引插入处理模块22再执行唯一键索引的插入处理,如果在执行唯一键插入过程中,唯一性检查不通过,则数据插入处理模块23可以再对已经插入到数据表切片中的数据执行回滚处理。此外,也可以同时执行数据插入处理和唯一键索引的插入处理,如果其中一个插入处理不成功,则对另一个插入处理执行回滚。
2)第一分区数据库和第二分区数据库为同一数据节点的不同分区数据库。
由于在不同的分区数据库中,需要考虑数据库访问的效率以及代码执行的代价。相对于数据表的约束条件的检查,唯一键的检查的内容相对单一一些,因此,优选地会让唯一键索引插入处理模块22先执行唯一键索引的插入处理。具体地,唯一键索引插入处理模块22访问第二分区数据库,执行向唯一键索引表切片插入唯一键索引的处理,如果唯一键索引插入成功,则数据插入处理模块23访问第一分区数据库,执行向数据表切片插入新数据的处理。
如果数据插入处理模块23向数据表切片插入新数据失败,则唯一键索引插入处理模块22对已经插入到第二分区数据库的唯一键索引执行回滚处理。
3)第一分区数据库和第二分区数据库为不同数据节点的分区数据库,第一分区数据库处于第一数据节点,第二分区数据库处于第二数据节点。
这种情况下,涉及到了跨数据节点的数据库访问,并且相对于数据表的约束条件的检查,唯一键的检查的内容相对单一一些,因此,优选地会先执行唯一键索引的插入处理。为了更好地实现跨数据节点的唯一键索引表切片的处理,在本发明实施例中,可以在数据节点中构建索引控制数据总线,用来专门提供与唯一键索引相关的通信交互。因此,第一数据节点中的唯一键索引插入处理模块可以通过索引控制数据总线,与第二数据节点进行通信,指示第二数据节点中的唯一键索引插入处理模块访问第二分区数据库,执行向唯一键索引表切片插入唯一键索引的处理,如果唯一键索引插入成功,则通过索引控制数据总线返回成功插入唯一键索引的消息,然后第一数据节点的数据插入处理模块在访问第一分区数据库,执行向数据表切片插入新数据的处理。
如果第一数据节点的数据插入处理模块向数据表切片插入新数据失败,则会通过索引控制数据总线,指示第二数据节点的唯一键索引插入处理模块访问第二分区数据库,对已经插入到第二分区数据库的唯一键索引执行回滚处理。
对于上述处理过程具体说明、技术原理详细说明以及技术效果详细分析在前面实施例中进行了详细描述,在此不再赘述。
本实施例介绍了在分布式数据库系统中,设置在数据节点上的数据插入处理装置的处理机制,通过本实施例可以看出,通过在分布式数据库引擎中增设唯一键索引路由表以及在各个分区数据库中增设唯一键索引表切片的存储空间,实现了独立于分区键来实现唯一键,从而突破了现有技术中只能将分区键作为唯一键的限制,增加了唯一键设定和使用的灵活度。
实施例五
前面实施例描述了数据处理方法的流程及装置结构,上述的方法和装置的功能可借助一种电子设备实现完成,如图10所示,其为本发明实施例的电子设备的结构示意图之一,该电子设备应用于分布式数据库系统中,分布式数据库系统包括分布式数据库引擎和多个数据节点,在数据节点上设置有多个分区数据库,在分布式数据引擎中设置有分区键路由表和唯一键索引路由表,该电子设备具体包括:存储器111和处理器112。
存储器111,用于存储程序。
除上述程序之外,存储器111还可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。
存储器111可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
处理器112,耦合至存储器111,用于执行存储器111中的程序,以用于在分布式数据引擎上执行如下处理:
根据待插入的新数据中的分区键字段的值,查询分区键路由表,确定该新数据对应的数据表切片所在的第一目的分区数据库的第一路由信息;
根据新数据中的唯一键字段的值,查询唯一键索引路由表,确定该新数据对应的唯一键索引表切片所在的第二目的分区数据库的第二路由信息;
将该新数据、第一路由信息以及第二路由信息封装为数据插入请求报文,并将该数据插入请求报文发送至第一目的分区数据库所在的数据节点。
其中,上述处理还可以包括:
接收唯一键声明请求,根据唯一键声明请求中携带的唯一键字段的声明信息,按照预设的分区规则,在多个分区数据库中创建唯一键索引表切片;
根据唯一键索引表切片所在的分区数据库的信息创建唯一索引路由表。
作为另外一种电子设备的实施例,该电子设备包括:
处理器112,耦合至存储器111,用于执行存储器111中的程序,以用于在数据节点上执行如下处理:
接收分布式数据库引擎发送的数据插入请求报文,数据插入请求报文包含待插入的新数据、新数据对应的数据表切片所在的第一目的分区数据库的第一路由信息以及新数据对应的唯一键索引表切片所在的第二目的分区数据库的第二路由信息;
根据第二路由信息,访问第二目的分区数据库,执行向唯一键索引表切片插入新数据对应的唯一键索引的处理;以及根据第一路由信息,访问第一目的分区数据库,执行向数据表切片插入新数据的处理。
其中,上述的根据第二路由信息,访问第二目的分区数据库,执行向唯一键索引表切片插入新数据对应的唯一键索引的处理;以及根据第一路由信息,访问第一目的分区数据库,执行向数据表切片插入新数据的处理可以包括:
对第一分区数据库和第二分区数据库之间的关系进行判断,以执行如下处理:
如果第一分区数据库和第二分区数据库为相同的分区数据库,则访问该分区数据库,执行向数据表切片插入新数据的处理,以及执行向唯一键索引表切片插入唯一键索引的处理;
如果第一分区数据库和第二分区数据库为同一数据节点的不同分区数据库,则访问第二分区数据库,执行向唯一键索引表切片插入唯一键索引的处理,如果唯一键索引插入成功,则访问第一分区数据库,执行向数据表切片插入新数据的处理;
如果第一分区数据库和第二分区数据库为不同数据节点的分区数据库,第一分区数据库处于第一数据节点,第二分区数据库处于第二数据节点,则第一数据节点通过索引控制数据总线,与第二数据节点进行通信,指示第二数据节点访问第二分区数据库,执行向唯一键索引表切片插入唯一键索引的处理,如果唯一键索引插入成功,则通过索引控制数据总线返回成功插入唯一键索引的消息,第一数据节点访问第一分区数据库,执行向数据表切片插入新数据的处理。
其中,在第一分区数据库和第二分区数据库为相同的分区数据库的情况下,如果向数据表切片插入新数据后,向唯一键索引表切片插入唯一键索引失败,则对已经向该分区数据库插入的新数据执行回滚处理。
其中,在第一分区数据库和第二分区数据库为同一数据节点的不同分区数据库的情况下,如果向向数据表切片插入新数据失败,则对已经插入到第二分区数据库的唯一键索引执行回滚处理。
其中,在第一分区数据库和第二分区数据库为不同数据节点的分区数据库的情况下,如果向向数据表切片插入新数据失败,则通过索引控制数据总线,指示第二数据节点访问第二分区数据库,对已经插入到第二分区数据库的唯一键索引执行回滚处理。
对于上述处理过程具体说明、技术原理详细说明以及技术效果详细分析在前面实施例中进行了详细描述,在此不再赘述。
进一步,如图所示,电子设备还可以包括:通信组件113、电源组件114、音频组件115、显示器116等其它组件。图中仅示意性给出部分组件,并不意味着电子设备只包括图中所示组件。
通信组件113被配置为便于电子设备和其他设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件113经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件113还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
电源组件114,为电子设备的各种组件提供电力。电源组件114可以包括电源管理系统,一个或多个电源,及其他与为电子设备生成、管理和分配电力相关联的组件。
音频组件115被配置为输出和/或输入音频信号。例如,音频组件115包括一个麦克风(MIC),当电子设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器111或经由通信组件113发送。在一些实施例中,音频组件115还包括一个扬声器,用于输出音频信号。
显示器116包括屏幕,其屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。
实施例六
如图11所示,其为本发明实施例的电子设备的结构示意图之二,该电子设备应用于分布式数据库系统中,分布式数据库系统包括分布式数据库引擎和多个数据节点,在数据节点上设置有多个分区数据库,该电子设备具体包括:存储器121和处理器122。
存储器121,用于存储程序。
除上述程序之外,存储器121还可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。
存储器121可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
处理器122,耦合至存储器121,用于执行存储器121中的程序,以用于在数据节点上执行如下处理:
接收分布式数据库引擎发送的数据插入请求报文,数据插入请求报文包含待插入的新数据、新数据对应的数据表切片所在的第一目的分区数据库的第一路由信息以及新数据对应的唯一键索引表切片所在的第二目的分区数据库的第二路由信息;
根据第二路由信息,访问第二目的分区数据库,执行向唯一键索引表切片插入新数据对应的唯一键索引的处理;以及根据第一路由信息,访问第一目的分区数据库,执行向数据表切片插入新数据的处理。
其中,上述的根据第二路由信息,访问第二目的分区数据库,执行向唯一键索引表切片插入新数据对应的唯一键索引的处理;以及根据第一路由信息,访问第一目的分区数据库,执行向数据表切片插入新数据的处理可以包括:
对第一分区数据库和第二分区数据库之间的关系进行判断,以执行如下处理:
如果第一分区数据库和第二分区数据库为相同的分区数据库,则访问该分区数据库,执行向数据表切片插入新数据的处理,以及执行向唯一键索引表切片插入唯一键索引的处理;
如果第一分区数据库和第二分区数据库为同一数据节点的不同分区数据库,则访问第二分区数据库,执行向唯一键索引表切片插入唯一键索引的处理,如果唯一键索引插入成功,则访问第一分区数据库,执行向数据表切片插入新数据的处理;
如果第一分区数据库和第二分区数据库为不同数据节点的分区数据库,第一分区数据库处于第一数据节点,第二分区数据库处于第二数据节点,则第一数据节点通过索引控制数据总线,与第二数据节点进行通信,指示第二数据节点访问第二分区数据库,执行向唯一键索引表切片插入唯一键索引的处理,如果唯一键索引插入成功,则通过索引控制数据总线返回成功插入唯一键索引的消息,第一数据节点访问第一分区数据库,执行向数据表切片插入新数据的处理。
其中,在第一分区数据库和第二分区数据库为相同的分区数据库的情况下,如果向数据表切片插入新数据后,向唯一键索引表切片插入唯一键索引失败,则对已经向该分区数据库插入的新数据执行回滚处理。
其中,在第一分区数据库和第二分区数据库为同一数据节点的不同分区数据库的情况下,如果向向数据表切片插入新数据失败,则对已经插入到第二分区数据库的唯一键索引执行回滚处理。
其中,在第一分区数据库和第二分区数据库为不同数据节点的分区数据库的情况下,如果向向数据表切片插入新数据失败,则通过索引控制数据总线,指示第二数据节点访问第二分区数据库,对已经插入到第二分区数据库的唯一键索引执行回滚处理。
对于上述处理过程具体说明、技术原理详细说明以及技术效果详细分析在前面实施例中进行了详细描述,在此不再赘述。
进一步,如图所示,电子设备还可以包括:通信组件123、电源组件124、音频组件125、显示器126等其它组件。图中仅示意性给出部分组件,并不意味着电子设备只包括图中所示组件。
通信组件123被配置为便于电子设备和其他设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件123经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件123还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
电源组件124,为电子设备的各种组件提供电力。电源组件140可以包括电源管理系统,一个或多个电源,及其他与为电子设备生成、管理和分配电力相关联的组件。
音频组件125被配置为输出和/或输入音频信号。例如,音频组件125包括一个麦克风(MIC),当电子设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器121或经由通信组件123发送。在一些实施例中,音频组件125还包括一个扬声器,用于输出音频信号。
显示器126包括屏幕,其屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。