本发明涉及数据库
技术领域:
,尤其涉及一种数据存储、检索方法和装置、电子设备以及计算机可读存储介质。
背景技术:
:随着大数据技术的发展,越来越多地出现了针对诸如图像、音频、视频等文件的向量数据的检索和分析需求,尤其是针对向量数据和结构化数据的混合检索。例如,在某些产品或服务中,需要检索在一定时间范围内的人像,或者,检索在某个地点范围内的车辆等。为此,现有技术中已经提出了通过固定的混合结构的方式来解决向量数据与结构化数据的混合检索的问题。但是,现有技术中这样的固定的混合结构,由于其固定性而导致扩展性较差,并且在实际存储时其结构化数据和向量数据彼此割裂,从而在实际应用中并不能实现加快向量数据检索的效果。技术实现要素:本发明实施例提供一种数据存储、检索方法和装置、电子设备以及计算机可读存储介质,以解决现有技术中固定的混合结构扩展性差、混合检索效率低的缺陷。为达到上述目的,本发明实施例提供了一种数据存储方法,包括:创建数据存储表;在所述数据存储表中的至少一个第一数据列中写入第一类型数据;在所述数据存储表中的至少一个第二数据列中写入第二类型数据,其中,所述第一类型数据和所述第二类型数据中的一类为向量数据,另一类为结构化数据;在所述第二数据列中的相应位置写入与所存储的第二类型数据相关联的第一类型数据的行标识。本发明实施例还提供了一种针对上述数据存储方法所存储的数据的数据检索方法,包括:获取数据检索条件,所述数据检索条件包括结构化检索条件和向量检索条件;在结构化数据所存储的数据列中,获取符合所述结构化检索条件的结构化数据所对应的第一行标识;根据所获取的第一行标识,在向量数据所存储的数据列中,获取与所述第一行标识相对应的、且符合所述向量检索条件的目标向量数据。本发明实施例还提供了一种数据存储装置,包括:第一创建模块,用于创建数据存储表;第一处理模块,用于在所述数据存储表中的至少一个第一数据列中写入第一类型数据;第二处理模块,用于在所述数据存储表中的至少一个第二数据列中写入第二类型数据,其中,所述第一类型数据和所述第二类型数据中的一类为向量数据,另一类为结构化数据;第三处理模块,用于在所述第二数据列中的相应位置写入与所存储的第二类型数据相关联的第一类型数据的行标识。本发明实施例还提供了一种针对上述存储装置所存储的数据的数据检索装置,包括:第一获取模块,用于获取数据检索条件,所述数据检索条件包括结构化检索条件和向量检索条件;第二获取模块,用于在结构化数据所存储的数据列中,获取符合所述结构化检索条件的结构化数据所对应的第一行标识;第三获取模块,用于根据所获取的第一行标识,在向量数据所存储的数据列中,获取与所述第一行标识相对应的、且符合所述向量检索条件的目标向量数据。本发明实施例还提供了一种电子设备,包括:存储器,用于存储程序;处理器,用于运行所述存储器中存储的所述程序,以用于:创建数据存储表;在所述数据存储表中的至少一个第一数据列中写入第一类型数据;在所述数据存储表中的至少一个第二数据列中写入第二类型数据,其中,所述第一类型数据和所述第二类型数据中的一类为向量数据,另一类为结构化数据;在所述第二数据列中的相应位置写入与所存储的第二类型数据相关联的第一类型数据的行标识。本发明实施例还提供了一种电子设备,包括:存储器,用于存储程序;处理器,用于运行所述存储器中存储的所述程序,以用于:获取数据检索条件,所述数据检索条件包括结构化检索条件和向量检索条件;在结构化数据所存储的数据列中,获取符合所述结构化检索条件的结构化数据所对应的第一行标识;根据所获取的第一行标识,在向量数据所存储的数据列中,获取与所述第一行标识相对应的、且符合所述向量检索条件的目标向量数据。本发明实施例还提供了一种计算机可读存储介质,在所述计算机可读存储介质上存储有指令,所述指令包括:创建数据存储表;在所述数据存储表中的至少一个第一数据列中写入第一类型数据;在所述数据存储表中的至少一个第二数据列中写入第二类型数据,其中,所述第一类型数据和所述第二类型数据中的一类为向量数据,另一类为结构化数据;在所述第二数据列中的相应位置写入与所存储的第二类型数据相关联的第一类型数据的行标识。本发明实施例还提供了一种计算机可读存储介质,在所述计算机可读存储介质上存储有指令,所述指令包括:获取数据检索条件,所述数据检索条件包括结构化检索条件和向量检索条件;在结构化数据所存储的数据列中,获取符合所述结构化检索条件的结构化数据所对应的第一行标识;根据所获取的第一行标识,在向量数据所存储的数据列中,获取与所述第一行标识相对应的、且符合所述向量检索条件的目标向量数据。本发明实施例提供的数据存储、检索方法和装置、电子设备以及计算机可读存储介质,通过将结构化数据和向量数据按列存储,便于扩展存储结构;并且将结构化数据和向量数据通过行标识来关联,能够使得结构化数据和向量数据在存储上真正关联起来,使得在数据检索时,能够缩小向量数据的检索范围,提高混合检索的效率。上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。附图说明通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:图1为本发明实施例提供的业务系统的应用场景示意图;图2为本发明提供的数据存储方法一个实施例的流程图;图3为本发明提供的数据存储方法另一个实施例的流程图;图4为本发明提供的数据检索方法一个实施例的流程图;图5为本发明提供的数据检索方法另一个实施例的流程图;图6为本发明提供的数据存储装置一个实施例的结构示意图;图7为本发明提供的数据存储装置另一个实施例的结构示意图;图8为本发明提供的数据检索装置一个实施例的结构示意图;图9为本发明提供的数据检索装置另一个实施例的结构示意图;图10为本发明提供的电子设备一个实施例的结构示意图;图11为本发明提供的电子设备另一个实施例的结构示意图。具体实施方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。针对现有技术中固定的混合结构导致扩展性较差,并且在实际存储时其结构化数据和向量数据彼此割裂,从而在实际应用中并不能实现加快向量数据检索的效果的缺陷。因此,本申请提出了一种数据存储方案,其主要原理是:将结构化数据和向量数据按列进行存储,并且不同列之间的结构化数据和向量数据通过行标识来关联。一方面,将数据按列进行存储,便于扩展存储结构;另一方面,能够使得结构化数据和向量数据在存储上真正关联起来,不再像现有技术那样彼此割裂,能够缩小向量检索范围,提高向量数据的检索效率。本发明实施例提供的方法可应用于任何具有数据检索功能的业务系统。图1为本发明实施例提供的业务系统的应用场景示意图,图1所示的结构仅仅是本发明的技术方案可以应用的业务系统的示例之一。如图1所示,业务系统中包括存储装置,该存储装置可以用来执行下述图2和图3所示的处理流程。业务系统中还包括检索装置,该检索装置可以用来执行下述图4和图5所示的处理流程。在该业务系统进行数据存储时,首先,创建数据存储表;然后,在该数据存储表中的至少一个第一数据列中写入第一类型数据,在该数据存储表中的至少一个第二数据列中写入第二类型数据,其中,第一类型数据和第二类型数据中的一类为向量数据,另一类为结构化数据;并且,在第二数据列中的相应位置写入与所存储的第二类型数据相关联的第一类型数据的行标识。存储装置在存储过程中,可以先存向量数据,再存结构化数据;也可以先存结构化数据,再存向量数据。在后存储的数据,即,第二类型数据,中携带相关联的先存储的数据,即,第一类型数据,的行标识,从而实现结构化数据和向量数据的关联。在该业务系统进行数据检索时,首先,获取数据检索条件,该数据检索条件包括结构化检索条件和向量检索条件;然后,在结构化数据所存储的数据列中,获取符合结构化检索条件的结构化数据所对应的第一行标识;并根据所获取的第一行标识,在向量数据所存储的数据列中,获取与该第一行标识相对应的、且符合向量检索条件的目标向量数据。通过将结构化数据和向量数据按列存储,便于扩展存储结构;通过将结构化数据和向量数据通过行标识来关联,在数据检索时,能够缩小向量数据的检索范围,提高混合检索的效率。上述实施例是对本发明实施例的技术原理和示例性的应用框架的说明,下面通过多个实施例来进一步对本发明实施例具体技术方案进行详细描述。实施例一图2为本发明提供的数据存储方法一个实施例的流程图,该方法的执行主体可以为上述业务系统中的存储装置,也可以为具有数据处理功能的各种服务器设备,也可以为集成在这些服务器设备上的装置或芯片。如图2所示,该数据存储方法包括如下步骤:s201,创建数据存储表。在本发明实施例中,在针对既包括向量数据由包括结构化数据的混合数据进行数据存储时,首先,需要创建一个数据存储表,该数据存储表中包括多个数据列。s202,在数据存储表中的至少一个第一数据列中写入第一类型数据。s203,在数据存储表中的至少一个第二数据列中写入第二类型数据。在本发明实施例中,在创建了数据存储表之后,将第一类型数据写入数据存储表中的第一数据列中,将第二类型数据写入数据存储表中的第二数据列中。其中,第一类型数据和第二类型数据中的一类为向量数据,另一类为结构化数据。在存储向量数据或结构化数据时,根据数据的属性,将不同属性的数据存入不同的数据列中。例如,在存储向量数据时,可以将图片的向量数据存入一个数据列,将视频的向量数据存入另一个数据列等;在存储结构化数据时,可以将时间数据存入一个数据列,将地点数据存入另一个数据列等。s204,在第二数据列中的相应位置写入与所存储的第二类型数据相关联的第一类型数据的行标识。在本发明实施例中,在存储第一类型数据和第二类型数据的基础上,还将与第二类型数据相关联的第一类型数据的行标识也写入到第二数据列的相应位置。在数据存储过程中,可以先存向量数据,再存结构化数据;也可以先存结构化数据,再存向量数据。需要做的是,在后存储的数据,即,第二类型数据,中携带相关联的先存储的数据,即,第一类型数据,的行标识,以实现结构化数据和向量数据的关联。举例说明,例如,在第一类型数据为向量数据、第二类型数据为结构化数据的情况下,假设,待存储的数据包括图片向量数据和时间数据。那么,可以在数据存储表的第一个数据列写入图片向量数据,每一个图片向量数据占一行,然后,在数据存储表的第二个数据列写入时间数据,每个时间数据占一行。然后,根据图片向量数据与时间数据的对应关系,将图片向量数据的行标识写入到第二个数据列中相应的时间数据所在的行中。例如,如表1所示,图片a的拍摄时间为a,图片b的拍摄时间为b,图片a对应的图片向量数据a’被写入数据存储表的第1列第1行,图片b对应的图片向量数据b’被写入数据存储表的第1列第2行;而时间数据a被写入数据存储表的第2列第3行,时间数据b被写入数据存储表的第2列第4行。图片向量数据a’与时间数据a相对应,图片向量数据b’与时间数据b相对应,因此,在第2列中,除了写入时间数据,还写入相应的向量数据的行标识。表1列1列2行1a'**行2b'**行3a/1行4b/2本发明实施例提供的数据存储方法,通过将结构化数据和向量数据按列存储,便于扩展存储结构;并且将结构化数据和向量数据通过行标识进行关联,能够使得结构化数据和向量数据在存储上真正关联起来,使得在数据检索时,能够缩小向量数据的检索范围,提高混合检索的效率。实施例二图3为本发明提供的数据存储方法另一个实施例的流程图。如图3所示,在上述图2所示实施例的基础上,本实施例提供的数据存储方法还可以包括以下步骤:s301,创建数据存储表。s302,在数据存储表中的至少一个第一数据列中写入结构化数据。s303,在数据存储表中的至少一个第二数据列中写入向量数据。s304,在第二数据列中的相应位置写入与所存储的向量数据相关联的结构化数据的行标识。在本发明实施例中,第一类型数据为结构化数据,第二类型数据为向量数据,即,先存储结构化数据,后存储向量数据。然后,根据结构化数据与向量数据的对应关系,将结构化数据的行标识写入到第二个数据列中相应的向量数据所在的行中。s305,将第二数据列中存储的数据分为多个数据分组。s306,根据数据分组中的行标识和索引编码,生成分组映射表。在本发明实施例中。在将结构化数据和向量数据先后按列进行存储之后,可以将存储于一列中的多行向量数据进一步进行分组,分为多个数据分组。具体地,可以根据聚类算法,将第二数据列中存储的数据,按照向量数据的相似性进行分组,将相似的向量数据保存在同一个数据分组。然后,根据各数据分组中的行标识和索引编码,针对每个数据分组生成一个分组映射表,在各分组映射表中,存储有用于标识数据分组的分组编码、以及与数据分组中的数据相对应的行标识和索引编码的偏移量。本发明实施例提供的数据存储方法,通过将结构化数据和向量数据按列存储,便于扩展存储结构;并且将结构化数据和向量数据通过行标识来关联,能够使得结构化数据和向量数据在存储上真正关联起来,使得在数据检索时,能够缩小向量数据的检索范围,提高混合检索的效率;通过根据向量数据的相似性进行分组,使得在向量数据检索时,能够首先进行分组检索,在找到目标分组之后,再进行向量数据检索,从而加速了检索过程,进一步提高了检索效率。实施例三图4为本发明提供的数据检索方法一个实施例的流程图,该方法的执行主体可以为上述业务系统中的检索装置,也可以为具有数据检索功能的各种服务器设备,也可以为集成在这些服务器设备上的装置或芯片。如图4所示,针对上述图2所示实施例所提供的数据存储方法所存储的数据,本发明实施例提出一种数据检索方法,包括以下步骤:s401,获取数据检索条件。在本发明实施例中,对数据进行混合检索,因此,数据检索条件包括结构化检索条件和向量检索条件。s402,在结构化数据所存储的数据列中,获取符合结构化检索条件的结构化数据所对应的第一行标识。s403,根据所获取的第一行标识,在向量数据所存储的数据列中,获取与该第一行标识相对应的、且符合向量检索条件的目标向量数据。在本发明实施例中,由于相比结构化数据的检索,向量数据的检索过程更加复杂,计算量更大,更加耗时,因此,可以首先通过结构化数据检索获取符合条件的结构化数据所对应的行标识,即,第一行标识。从而根据第一行标识来缩小向量数据检索的检索范围。针对图2所示的实施例所提供的数据存储方法所存储的数据,在第一类型数据为向量数据、第二类型数据为结构化数据的情况下,先存储向量数据,后存储结构化数据。然后,根据结构化数据与向量数据的对应关系,将向量数据的行标识写入到第二数据列中相应的结构化数据所在的行中。针对这种存储方式,在进行数据检索时,先对结构化数据进行数据检索,获取到符合结构化检索条件的结构化数据所对应的第一行标识。该第一行标识即为与该结构化数据相对应的向量数据的行标识,因此,可以根据该第一行标识可以直接定位到相应的向量数据的存储位置。然后,再针对这些相对应的向量数据进行向量数据检索,从而获取符合数据检索条件的目标向量数据。另一方面,在第一类型数据为结构化数据、第二类型数据为向量数据的情况下,先存储结构化数据,后存储向量数据。然后,根据结构化数据与向量数据的对应关系,将结构化数据的行标识写入到第二数据列中相应的向量数据所在的行中。针对这种存储方式,在进行数据检索时,仍然先对结构化数据进行数据检索,获取到符合结构化检索条件的结构化数据所对应的第一行标识。该第一行标识即为该结构化数据相所存储行的行标识,然后,根据该第一行标识在向量数据中查找与该第一行标识相对应的向量数据。最后,再针对这些相对应的向量数据进行向量数据检索,从而获取符合数据检索条件的目标向量数据。本发明实施例提供的数据检索方法,通过结构化数据和向量数据之间的关联性来缩小向量数据的检索范围,从而提高了混合检索的检索效率。实施例四图5为本发明提供的数据检索方法另一个实施例的流程图。如图5所示,针对上述图3所示实施例所提供的数据存储方法所存储的数据,本实施例提供的数据检索方法还可以包括以下步骤:s501,获取数据检索条件。s502,在结构化数据所存储的数据列中,获取符合结构化检索条件的结构化数据所对应的第一行标识。在本发明实施例中,结构化数据支持各种索引,如,btree索引、倒排索引、位图索引等。可以根据索引对结构化数据进行检索,从而获取到符合检索条件的结构化数据,并进一步获取这些结构化数据所对应的第一行标识。s503,获取向量数据所存储的数据列中的多个数据分组的聚类中心。s504,计算向量检索条件与多个数据分组的聚类中心的距离。s505,获取距离小于预设阈值的至少一个目标数据分组。在本发明实施例中,可以针对进行分组存储的向量数据,进行分组检索。具体地,可以获取各个数据分组的聚类中心,然后通过计算向量检索条件,即,待检索向量,与各聚类中心的距离,来获取相似的目标数据分组,从而避免在所有数据分组中进行检索,因此能够进一步提高检索效率。s506,根据所获取的第一行标识,在至少一个目标数据分组中,获取与第一行标识相对应的、且符合向量检索条件的目标向量数据。在本发明实施例中,可以利用位图来在各目标数据分组中进行向量数据检索。具体地,可以根据目标数据分组的分组编码,读取分组映射表,获取与目标数据分组中的数据相对应的第二行标识的偏移量;然后,根据第二行标识的偏移量与上述第一行标识,生成针对该目标数据分组的位图;然后,按照该位图进行向量检索,获取符合向量检索条件的目标向量数据。具体地,可以针对各目标数据分组,根据其第二行标识的偏移量构建位图,所建立的位图中各个位的初始值为零;然后,将上述第一行标识在该位图中所对应的位的值置为一。在进行向量数据检索时,则可以读取上述位图;然后,针对位图中值为一的位所对应的第一行标识对应的向量数据,进行向量检索,从而获取符合向量检索条件的目标向量数据。本发明实施例提供的数据检索方法,通过结构化数据和向量数据之间的关联性来缩小向量数据的检索范围,并通过进行分组检索来进一步缩小向量数据的检索范围,从而较大地提高了混合检索的检索效率。实施例五图6为本发明提供的数据存储装置一个实施例的结构示意图,可用于执行如图2所示的方法步骤。如图6所示,该装置可以包括:第一创建模块61、第一处理模块62、第二处理模块63和第三处理模块64。其中,第一创建模块61用于创建数据存储表;第一处理模块62用于在数据存储表中的至少一个第一数据列中写入第一类型数据;第二处理模块63用于在数据存储表中的至少一个第二数据列中写入第二类型数据,其中,第一类型数据和第二类型数据中的一类为向量数据,另一类为结构化数据;第三处理模块64用于在第二数据列中的相应位置写入与所存储的第二类型数据相关联的第一类型数据的行标识。在本发明实施例中,在针对既包括向量数据由包括结构化数据的混合数据进行数据存储时,首先,需要由第一创建模块61创建一个数据存储表,该数据存储表中包括多个数据列。在第一创建模块61创建了数据存储表之后,第一处理模块62将第一类型数据写入数据存储表中的第一数据列中,第二处理模块63将第二类型数据写入数据存储表中的第二数据列中。在存储向量数据或结构化数据时,根据数据的属性,将不同属性的数据存入不同的数据列中。例如,在存储向量数据时,可以将图片的向量数据存入一个数据列,将视频的向量数据存入另一个数据列等;在存储结构化数据时,可以将时间数据存入一个数据列,将地点数据存入另一个数据列等。然后,在存储第一类型数据和第二类型数据的基础上,第三处理模块64将与第二类型数据相关联的第一类型数据的行标识也写入到第二数据列的相应位置。在数据存储过程中,可以先存向量数据,再存结构化数据;也可以先存结构化数据,再存向量数据。需要做的是,在后存储的数据,即,第二类型数据,中携带相关联的先存储的数据,即,第一类型数据,的行标识,以实现结构化数据和向量数据的关联。本发明实施例提供的数据存储装置,通过将结构化数据和向量数据按列存储,便于扩展存储结构;并且将结构化数据和向量数据通过行标识进行关联,能够使得结构化数据和向量数据在存储上真正关联起来,使得在数据检索时,能够缩小向量数据的检索范围,提高混合检索的效率。实施例六图7为本发明提供的数据存储装置另一个实施例的结构示意图,可用于执行如图3所示的方法步骤。如图7所示,在上述图6所示实施例的基础上,本发明实施例提供的数据存储装置还可以包括:分组模块71,该分组模块可以用于将第二数据列中存储的数据分为多个数据分组;并根据数据分组中的行标识和索引编码,生成分组映射表,该分组映射表中存储有用于标识数据分组的分组编码、以及与数据分组中的数据相对应的行标识和索引编码的偏移量。在本发明实施例中,第一类型数据为结构化数据,第二类型数据为向量数据,即,第一处理模块62先存储结构化数据,第二处理模块63后存储向量数据。然后,第三处理模块64根据结构化数据与向量数据的对应关系,将结构化数据的行标识写入到第二个数据列中相应的向量数据所在的行中。分组模块71可以将存储于一列中的多行向量数据进一步进行分组,分为多个数据分组。具体地,分组模块71可以根据聚类算法,将第二数据列中存储的数据,按照向量数据的相似性进行分组,将相似的向量数据保存在同一个数据分组。然后,分组模块71根据各数据分组中的行标识和索引编码,针对每个数据分组生成一个分组映射表。本发明实施例提供的数据存储装置,通过将结构化数据和向量数据按列存储,便于扩展存储结构;并且将结构化数据和向量数据通过行标识来关联,能够使得结构化数据和向量数据在存储上真正关联起来,使得在数据检索时,能够缩小向量数据的检索范围,提高混合检索的效率;通过根据向量数据的相似性进行分组,使得在向量数据检索时,能够首先进行分组检索,在找到目标分组之后,再进行向量数据检索,从而加速了检索过程,进一步提高了检索效率。实施例七图8为本发明提供的数据检索装置一个实施例的结构示意图,可用于执行如图4所示的方法步骤。如图8所示,针对上述图6所示实施例所提供的数据存储装置所存储的数据,本发明实施例提出一种数据检索装置包括:第一获取模块81、第二获取模块82和第三获取模块83。其中,第一获取模块81用于获取数据检索条件,该数据检索条件包括结构化检索条件和向量检索条件;第二获取模块82用于在结构化数据所存储的数据列中,获取符合结构化检索条件的结构化数据所对应的第一行标识;第三获取模块83用于根据所获取的第一行标识,在向量数据所存储的数据列中,获取与第一行标识相对应的、且符合向量检索条件的目标向量数据。在本发明实施例中,对数据进行混合检索,因此,第一获取模块81首先获取数据检索条件,即,获取结构化检索条件和向量检索条件。由于相比结构化数据的检索,向量数据的检索过程更加复杂,计算量更大,更加耗时,因此,可以由第二获取模块82首先通过结构化数据检索获取符合条件的结构化数据所对应的行标识,即,第一行标识。从而根据第一行标识来缩小向量数据检索的检索范围。针对图6所示的实施例所提供的数据存储装置所存储的数据,在第一类型数据为向量数据、第二类型数据为结构化数据的情况下,先存储向量数据,后存储结构化数据。然后,根据结构化数据与向量数据的对应关系,将向量数据的行标识写入到第二数据列中相应的结构化数据所在的行中。针对这种存储方式,在进行数据检索时,先由第二获取模块82对结构化数据进行数据检索,获取到符合结构化检索条件的结构化数据所对应的第一行标识。该第一行标识即为与该结构化数据相对应的向量数据的行标识,因此,可以根据该第一行标识可以直接定位到相应的向量数据的存储位置。然后,再由第三获取模块83针对这些相对应的向量数据进行向量数据检索,从而获取到符合数据检索条件的目标向量数据。另一方面,在第一类型数据为结构化数据、第二类型数据为向量数据的情况下,先存储结构化数据,后存储向量数据。然后,根据结构化数据与向量数据的对应关系,将结构化数据的行标识写入到第二数据列中相应的向量数据所在的行中。针对这种存储方式,在进行数据检索时,仍然先由第二获取模块82对结构化数据进行数据检索,获取到符合结构化检索条件的结构化数据所对应的第一行标识。该第一行标识即为该结构化数据相所存储行的行标识,然后,由第三获取模块83根据该第一行标识在向量数据中查找与该第一行标识相对应的向量数据。最后,第三获取模块83再针对这些相对应的向量数据进行向量数据检索,从而获取符合数据检索条件的目标向量数据。本发明实施例提供的数据检索装置,通过结构化数据和向量数据之间的关联性来缩小向量数据的检索范围,从而提高了混合检索的检索效率。实施例八图9为本发明提供的数据检索装置另一个实施例的结构示意图,可用于执行如图5所示的方法步骤。如图9所示,针对上述图7所示实施例所提供的数据存储装置所存储的数据,本实施例提供的数据检索装置中,第三获取模块83可以包括:第一获取单元831、计算单元832、第二获取单元833和第三获取单元834。其中,第一获取单元831可以用于获取向量数据所存储的数据列中的多个数据分组的聚类中心;计算单元832可以用于计算向量检索条件与多个数据分组的聚类中心的距离;第二获取单元833可以用于获取该距离小于预设阈值的至少一个目标数据分组;第三获取单元834可以用于根据所获取的第一行标识,在至少一个目标数据分组中,获取与上述第一行标识相对应的、且符合向量检索条件的目标向量数据。在本发明实施例中,可以针对进行分组存储的向量数据,进行分组检索。具体地,可以由第一获取单元831获取各个数据分组的聚类中心,然后通过计算单元832计算向量检索条件,即,待检索向量,与各聚类中心的距离,由第二获取单元833来获取相似的目标数据分组,由第三获取单元834根据所获取到的第一行标识,在第二获取单元833获取到的至少一个目标数据分组中,获取与上述第一行标识相对应的、且符合向量检索条件的目标向量数据,从而避免在所有数据分组中进行检索,因此能够进一步提高检索效率。在本发明实施例中,可以利用位图来在各目标数据分组中进行向量数据检索。具体地,可以由第三获取单元834根据目标数据分组的分组编码,读取分组映射表,获取与目标数据分组中的数据相对应的第二行标识的偏移量;然后,第三获取单元834根据第二行标识的偏移量与上述第一行标识,生成针对该目标数据分组的位图;然后,第三获取单元834再按照该位图进行向量检索,获取符合向量检索条件的目标向量数据。具体地,第三获取单元834可以针对各目标数据分组,根据其第二行标识的偏移量构建位图,所建立的位图中各个位的初始值为零;然后,将上述第一行标识在该位图中所对应的位的值置为一。在进行向量数据检索时,则可以读取上述位图;然后,针对位图中值为一的位所对应的第一行标识对应的向量数据,进行向量检索,从而获取符合向量检索条件的目标向量数据。本发明实施例提供的数据检索装置,通过结构化数据和向量数据之间的关联性来缩小向量数据的检索范围,并通过进行分组检索来进一步缩小向量数据的检索范围,从而较大地提高了混合检索的检索效率。实施例九以上描述了数据存储装置的内部功能和结构,该装置可实现为一种电子设备。图10为本发明提供的电子设备一个实施例的结构示意图。如图10所示,该电子设备包括存储器101和处理器102。存储器101,用于存储程序。除上述程序之外,存储器101还可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器101可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。处理器102,不仅仅局限于中央处理器(cpu),还可能为图形处理器(gpu)、现场可编辑门阵列(fpga)或人工智能(ai)芯片等芯片。处理器102,与存储器101耦合,执行存储器101所存储的程序,以用于:创建数据存储表;在数据存储表中的至少一个第一数据列中写入第一类型数据;在数据存储表中的至少一个第二数据列中写入第二类型数据,其中,第一类型数据和第二类型数据中的一类为向量数据,另一类为结构化数据;在第二数据列中的相应位置写入与所存储的第二类型数据相关联的第一类型数据的行标识。进一步,如图10所示,电子设备还可以包括:通信组件103、电源组件104、音频组件105、显示器106等其它组件。图10中仅示意性给出部分组件,并不意味着电子设备只包括图10所示组件。通信组件103被配置为便于电子设备和其他设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。在一个示例性实施例中,通信组件103经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件103还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。电源组件104,为电子设备的各种组件提供电力。电源组件104可以包括电源管理系统,一个或多个电源,及其他与为电子设备生成、管理和分配电力相关联的组件。音频组件105被配置为输出和/或输入音频信号。例如,音频组件105包括一个麦克风(mic),当电子设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器101或经由通信组件103发送。在一些实施例中,音频组件105还包括一个扬声器,用于输出音频信号。显示器106包括屏幕,其屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。实施例十以上描述了数据检索装置的内部功能和结构,该装置可实现为一种电子设备。图11为本发明提供的电子设备另一个实施例的结构示意图。如图11所示,该电子设备包括存储器111和处理器112。存储器111,用于存储程序。除上述程序之外,存储器111还可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器111可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。处理器112,不仅仅局限于中央处理器(cpu),还可能为图形处理器(gpu)、现场可编辑门阵列(fpga)或人工智能(ai)芯片等芯片。处理器112,与存储器111耦合,执行存储器111所存储的程序,以用于:获取数据检索条件,该数据检索条件包括结构化检索条件和向量检索条件;在结构化数据所存储的数据列中,获取符合结构化检索条件的结构化数据所对应的第一行标识;根据所获取的第一行标识,在向量数据所存储的数据列中,获取与第一行标识相对应的、且符合向量检索条件的目标向量数据。进一步,如图11所示,电子设备还可以包括:通信组件113、电源组件114、音频组件115、显示器116等其它组件。图11中仅示意性给出部分组件,并不意味着电子设备只包括图11所示组件。通信组件113被配置为便于电子设备和其他设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。在一个示例性实施例中,通信组件113经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件113还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。电源组件114,为电子设备的各种组件提供电力。电源组件114可以包括电源管理系统,一个或多个电源,及其他与为电子设备生成、管理和分配电力相关联的组件。音频组件115被配置为输出和/或输入音频信号。例如,音频组件115包括一个麦克风(mic),当电子设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器111或经由通信组件113发送。在一些实施例中,音频组件115还包括一个扬声器,用于输出音频信号。显示器116包括屏幕,其屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。当前第1页1 2 3 
技术特征:1.一种数据存储方法,其特征在于,包括:
创建数据存储表;
在所述数据存储表中的至少一个第一数据列中写入第一类型数据;
在所述数据存储表中的至少一个第二数据列中写入第二类型数据,其中,所述第一类型数据和所述第二类型数据中的一类为向量数据,另一类为结构化数据;
在所述第二数据列中的相应位置写入与所存储的第二类型数据相关联的第一类型数据的行标识。
2.根据权利要求1所述的数据存储方法,其特征在于,所述第一类型数据为结构化数据,所述第二类型数据为向量数据,所述方法还包括:
将所述第二数据列中存储的数据分为多个数据分组;
根据所述数据分组中的行标识和索引编码,生成分组映射表,所述分组映射表中存储有用于标识所述数据分组的分组编码、以及与所述数据分组中的数据相对应的行标识和索引编码的偏移量。
3.根据权利要求2所述的数据存储方法,其特征在于,所述将所述第二数据列中存储的数据分为多个数据分组,包括:
根据聚类算法,将所述第二数据列中存储的数据,按照向量数据的相似性进行分组。
4.一种针对权利要求1至3中任一权利要求所述的数据存储方法所存储的数据的数据检索方法,其特征在于,包括:
获取数据检索条件,所述数据检索条件包括结构化检索条件和向量检索条件;
在结构化数据所存储的数据列中,获取符合所述结构化检索条件的结构化数据所对应的第一行标识;
根据所获取的第一行标识,在向量数据所存储的数据列中,获取与所述第一行标识相对应的、且符合所述向量检索条件的目标向量数据。
5.根据权利要求4所述的数据检索方法,其特征在于,所述根据所获取的第一行标识,在向量数据所存储的数据列中,获取与所述第一行标识相对应的、且符合所述向量检索条件的目标向量数据,包括:
获取向量数据所存储的数据列中的多个数据分组的聚类中心;
计算所述向量检索条件与所述多个数据分组的聚类中心的距离;
获取所述距离小于预设阈值的至少一个目标数据分组;
根据所获取的第一行标识,在所述至少一个目标数据分组中,获取与所述第一行标识相对应的、且符合所述向量检索条件的目标向量数据。
6.根据权利要求5所述的数据检索方法,其特征在于,所述根据所获取的第一行标识,在所述至少一个目标数据分组中,获取与所述第一行标识相对应的、且符合所述向量检索条件的目标向量数据,包括:
根据所述目标数据分组的分组编码,读取分组映射表,获取与所述目标数据分组中的数据相对应的第二行标识的偏移量;
根据所述第二行标识的偏移量与所述第一行标识,生成针对所述目标数据分组的位图;
按照所述位图进行向量检索,获取符合所述向量检索条件的目标向量数据。
7.根据权利要求6所述的数据检索方法,其特征在于,所述根据所述第二行标识的偏移量与所述第一行标识,构建针对所述目标数据分组的位图,包括:
针对所述目标数据分组,根据所述第二行标识的偏移量构建位图,所述位图中各个位的初始值为零;
将所述第一行标识在所述位图中所对应的位的值置为一。
8.根据权利要求7所述的数据检索方法,其特征在于,所述按照所述位图进行向量检索,获取符合所述向量检索条件的目标向量数据,包括:
读取所述位图;
针对所述位图中值为一的位所对应的第一行标识对应的向量数据,进行向量检索,获取符合所述向量检索条件的目标向量数据。
9.一种数据存储装置,其特征在于,包括:
第一创建模块,用于创建数据存储表;
第一处理模块,用于在所述数据存储表中的至少一个第一数据列中写入第一类型数据;
第二处理模块,用于在所述数据存储表中的至少一个第二数据列中写入第二类型数据,其中,所述第一类型数据和所述第二类型数据中的一类为向量数据,另一类为结构化数据;
第三处理模块,用于在所述第二数据列中的相应位置写入与所存储的第二类型数据相关联的第一类型数据的行标识。
10.根据权利要求9所述的数据存储装置,其特征在于,所述第一类型数据为结构化数据,所述第二类型数据为向量数据,所述装置还包括:
分组模块,用于将所述第二数据列中存储的数据分为多个数据分组;并根据所述数据分组中的行标识和索引编码,生成分组映射表,所述分组映射表中存储有用于标识所述数据分组的分组编码、以及与所述数据分组中的数据相对应的行标识和索引编码的偏移量。
11.根据权利要求10所述的数据存储装置,其特征在于,
所述分组模块具体用于,根据聚类算法,将所述第二数据列中存储的数据,按照向量数据的相似性进行分组。
12.一种针对权利要求9至11中任一权利要求所述的存储装置所存储的数据的数据检索装置,其特征在于,包括:
第一获取模块,用于获取数据检索条件,所述数据检索条件包括结构化检索条件和向量检索条件;
第二获取模块,用于在结构化数据所存储的数据列中,获取符合所述结构化检索条件的结构化数据所对应的第一行标识;
第三获取模块,用于根据所获取的第一行标识,在向量数据所存储的数据列中,获取与所述第一行标识相对应的、且符合所述向量检索条件的目标向量数据。
13.根据权利要求12所述的数据检索装置,其特征在于,所述第三获取模块包括:
第一获取单元,用于获取向量数据所存储的数据列中的多个数据分组的聚类中心;
计算单元,用于计算所述向量检索条件与所述多个数据分组的聚类中心的距离;
第二获取单元,用于获取所述距离小于预设阈值的至少一个目标数据分组;
第三获取单元,用于根据所获取的第一行标识,在所述至少一个目标数据分组中,获取与所述第一行标识相对应的、且符合所述向量检索条件的目标向量数据。
14.根据权利要求13所述的数据检索装置,其特征在于,
所述第三获取单元具体用于,根据所述目标数据分组的分组编码,读取分组映射表,获取与所述目标数据分组中的数据相对应的第二行标识的偏移量;根据所述第二行标识的偏移量与所述第一行标识,生成针对所述目标数据分组的位图;按照所述位图进行向量检索,获取符合所述向量检索条件的目标向量数据。
15.一种电子设备,其特征在于,包括:
存储器,用于存储程序;
处理器,用于运行所述存储器中存储的所述程序,以用于:
创建数据存储表;
在所述数据存储表中的至少一个第一数据列中写入第一类型数据;
在所述数据存储表中的至少一个第二数据列中写入第二类型数据,其中,所述第一类型数据和所述第二类型数据中的一类为向量数据,另一类为结构化数据;
在所述第二数据列中的相应位置写入与所存储的第二类型数据相关联的第一类型数据的行标识。
16.一种电子设备,其特征在于,包括:
存储器,用于存储程序;
处理器,用于运行所述存储器中存储的所述程序,以用于:
获取数据检索条件,所述数据检索条件包括结构化检索条件和向量检索条件;
在结构化数据所存储的数据列中,获取符合所述结构化检索条件的结构化数据所对应的第一行标识;
根据所获取的第一行标识,在向量数据所存储的数据列中,获取与所述第一行标识相对应的、且符合所述向量检索条件的目标向量数据。
17.一种计算机可读存储介质,在所述计算机可读存储介质上存储有指令,所述指令包括:
创建数据存储表;
在所述数据存储表中的至少一个第一数据列中写入第一类型数据;
在所述数据存储表中的至少一个第二数据列中写入第二类型数据,其中,所述第一类型数据和所述第二类型数据中的一类为向量数据,另一类为结构化数据;
在所述第二数据列中的相应位置写入与所存储的第二类型数据相关联的第一类型数据的行标识。
18.一种计算机可读存储介质,在所述计算机可读存储介质上存储有指令,所述指令包括:
获取数据检索条件,所述数据检索条件包括结构化检索条件和向量检索条件;
在结构化数据所存储的数据列中,获取符合所述结构化检索条件的结构化数据所对应的第一行标识;
根据所获取的第一行标识,在向量数据所存储的数据列中,获取与所述第一行标识相对应的、且符合所述向量检索条件的目标向量数据。
技术总结本发明实施例提供了一种数据存储、检索方法和装置、电子设备以及计算机可读存储介质。该数据存储方法包括:创建数据存储表;在所述数据存储表中的至少一个第一数据列中写入第一类型数据;在所述数据存储表中的至少一个第二数据列中写入第二类型数据;在所述第二数据列中的相应位置写入与所存储的第二类型数据相关联的第一类型数据的行标识。本发明实施例通过将结构化数据和向量数据按列存储,便于扩展存储结构;将结构化数据和向量数据通过行标识来关联,能够使得结构化数据和向量数据在存储上真正关联起来,使得在数据检索时,能够缩小向量数据的检索范围,提高混合检索的效率。
技术研发人员:陆元飞
受保护的技术使用者:阿里巴巴集团控股有限公司
技术研发日:2019.09.12
技术公布日:2021.03.12