CN114168589A - 索引构建方法及装置 - Google Patents
索引构建方法及装置 Download PDFInfo
- Publication number
- CN114168589A CN114168589A CN202111262763.XA CN202111262763A CN114168589A CN 114168589 A CN114168589 A CN 114168589A CN 202111262763 A CN202111262763 A CN 202111262763A CN 114168589 A CN114168589 A CN 114168589A
- Authority
- CN
- China
- Prior art keywords
- index
- building
- data
- thread
- construction
- 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.)
- Pending
Links
- 238000010276 construction Methods 0.000 title claims abstract description 159
- 238000012544 monitoring process Methods 0.000 claims abstract description 32
- 238000000034 method Methods 0.000 claims description 52
- 238000004422 calculation algorithm Methods 0.000 description 42
- 239000013598 vector Substances 0.000 description 32
- 238000004590 computer program Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 12
- 241000157593 Milvus Species 0.000 description 11
- 238000010586 diagram Methods 0.000 description 7
- 238000013473 artificial intelligence Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000003780 insertion Methods 0.000 description 4
- 230000037431 insertion Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000010845 search algorithm Methods 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 238000000547 structure data Methods 0.000 description 1
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/2237—Vectors, bitmaps or matrices
-
- 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/2246—Trees, e.g. B+trees
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2462—Approximate or statistical queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/40—Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
- G06F16/41—Indexing; Data structures therefor; Storage structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Multimedia (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书提供索引构建方法及装置,其中所述索引构建方法包括:监听用户的数据写入操作,确定所述数据写入操作对应的写入数据;获取所述写入数据中的关键字,在所述关键字满足索引创建条件的情况下,将所述关键字发送至所述索引构建线程,其中,所述索引创建条件为索引构建线程对应的条件;基于所述关键字,通过所述索引构建线程构建所述写入数据的索引。
Description
技术领域
本说明书涉及计算机技术领域,特别涉及一种索引构建方法。
背景技术
随着互联网技术的发展,许多机构会将自身的数据信息存储至数据库中,便于后续对该数据信息进行处理,例如,将图片、视频等非结构化数据进行特征提取并且向量化,并在数据库中对向量化的非结构化数据构建索引,用作商品推荐、以图搜图等近似查询。
但现有技术中的数据库只能通过离线的方式,对大数据进行索引构建,无法进行在线实时构建索引,从而导致索引的构建耗时较长,无法满足用户的实时在线查询的需求。
发明内容
有鉴于此,本说明书实施例提供了一种索引构建方法。本说明书同时涉及一种索引构建装置,一种计算设备,一种计算机可读存储介质,以及一种计算机程序,以解决现有技术中存在的技术缺陷。
根据本说明书实施例的第一方面,提供了一种索引构建方法,包括:
监听用户的数据写入操作,确定所述数据写入操作对应的写入数据;
获取所述写入数据中的关键字,在所述关键字满足索引创建条件的情况下,将所述关键字发送至所述索引构建线程,其中,所述索引创建条件为索引构建线程对应的条件;
基于所述关键字,通过所述索引构建线程构建所述写入数据的索引。
根据本说明书实施例的第二方面,提供了一种索引构建装置,包括:
监听模块,被配置为监听用户的数据写入操作,确定所述数据写入操作对应的写入数据;
发送模块,被配置为获取所述写入数据中的关键字,在所述关键字满足索引创建条件的情况下,将所述关键字发送至所述索引构建线程,其中,所述索引创建条件为索引构建线程对应的条件;
构建模块,被配置为基于所述关键字,通过所述索引构建线程构建所述写入数据的索引。
根据本说明书实施例的第三方面,提供了一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该计算机可执行指令被处理器执行时实现任意所述索引构建方法的步骤。
根据本说明书实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现任意所述索引构建方法的步骤。
根据本说明书实施例的第五方面,提供了一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行任意所述索引构建方法的步骤。
本说明书提供的索引构建方法,包括监听用户的数据写入操作,确定所述数据写入操作对应的写入数据;获取所述写入数据中的关键字,在所述关键字满足索引创建条件的情况下,将所述关键字发送至所述索引构建线程,其中,所述索引创建条件为索引构建线程对应的条件;基于所述关键字,通过所述索引构建线程构建所述写入数据的索引。
具体地,所述索引构建方法通过实时对用户的数据写入操作进行监听,从而在数据写入操作对应的写入数据中的关键字,满足索引构建线程对应的索引创建条件的情况下,基于该关键字,通过索引构建线程对写入数据的索引进行构建,从而实现了在线实时构建索引,达到了通过索引构建线程,针对用户实时写入的数据进行快速的索引构建的目的,避免了由于对大数据进行索引构建,导致耗时较长的问题,满足后续用户基于索引进行实时在线查询的需求。
附图说明
图1是本说明书一实施例提供的一种基于Milvus方案的处理示意图;
图2是本说明书一实施例提供的一种索引构建方法的流程图;
图3是本说明书一实施例提供的一种应用于进行向量的近似查询场景下的索引构建方法的处理流程图;
图4是本说明书一实施例提供的一种索引构建装置的结构示意图;
图5是本说明书一实施例提供的一种计算设备的结构框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
向量:长度为X(x≥1)的数组,通常由AI(人工智能)模型的输出。
近似检索:查找距离输入向量最近的N(x≥1)个向量,普遍用作于商品推荐、以图搜图等场景。
索引构建:对向量数据进行快速查询,需要提前对向量进行索引的构建,作为后续进行近似查询的基础。
Tair:一种Key/Value结构数据存储系统。
近似检索算法库:一种能够实现近似检索算法的库。例如实现了HNSW、PQ等近似检索算法的数据库。
Rocksdb:是一个可嵌入的、持久性的Key-Value存储。
随着互联网技术的发展,多数数据库几乎运用于存储结构化数据,例如员工信息、财务信息等有明显可以多列表示的数据;而对于非结构化数据,例如图片、视频等,通常在数据库中只能存储对应的路径等或者将信息二进制化,以键值对存入到数据库;但是由于数据库无法识别非结构化数据,导致其检索能力也受限。在AI领域,通常是对非结构化数据进行特征提取并且向量化,其输出的是一个X维的向量;针对该向量构建的索引会被用作近似查询,例如商品推荐、以图搜图等。也即是说,多数数据库仅能提供结构化数据的存储和检索,无法提供对向量的近似检索,同时,通用的向量近似检索库,只适合做离线对大数据进行索引构建,无法应用于在线实时构建索引,因此索引的构建耗时较长,无法满足有实时在线用户的要求。
基于此,本说明书提供的一种基于Milvus(高性能向量搜索引擎)方案已解决上述问题,但是,Milvu的算法库使用Faiss(一种近似检索算法库)、存储层使用Rocksdb、本质是将多个开源组件融合在一起,没有做到实时在线,同时,Milvus作为开源并较主流的向量数据库,其功能如参见图1中"离线服务"部分所示,图1是本说明书一实施例提供的一种基于Milvus方案的处理示意图;其中,Milvus基于计算层、存储层以及算法库实现。该离线服务可以理解为以离线的方式对大数据进行索引的构建,该存储层用于存储大数据、算法库用于对大数据进行索引的构建,该计算层用于支持索引构建时所需的计算资源。
具体地,用户能够向Milvus中插入数据,该Milvus对用户插入的数据进行相似索引的构建,便于后续用户通过该相似索引对插入数据进行近似查询(检索);该索引构建流程可以为获取数据→训练数据(基于数据构建索引)→索引(完成构建的索引)。
但是,Milvus只能用作离线训练、索引构建,若需要实现实时用户查询,需要独立系统(第三方)提供近似查询服务,如图1下方虚线框所示,而该Milvus为了能够实现用户的在线近似查询,通过将构建的近似索引以离线的方式导入到第三方在线服务中,通过该在线服务实现用户的在线近似查询。
同时,Milvus无法做到即插即查,构建近似索引的流程,需要从存储层获取指定数据(例如数据库的表等),然后批量送入检索引擎(算法库)构建索引。对于数据量较大的数据进行索引构建的过程中,由于算法库不同,通常需要2-5小时,此时用户侧是阻塞运行,无法进行查询等操作。
基于此,本说明书实施例中提供了一种基于KV数据库的索引构建方法,针对AI场景,支持对向量进行实时存储、实时索引构建、快速近似检索。
具体地,在本说明书中,提供了一种索引构建方法,本说明书同时涉及一种索引构建装置,一种计算设备,一种计算机可读存储介质,以及一种计算机程序,在下面的实施例中逐一进行详细说明。
参见图2,图2示出了根据本说明书一实施例提供的一种索引构建方法的流程图,具体包括以下步骤:
步骤202:监听用户的数据写入操作,确定所述数据写入操作对应的写入数据。
在实际应用中,本说明书提供的索引构建方法可以应用于数据库,用于对数据库中实时写入的数据进行索引的快速构建,以满足用户的在线实时查询需求,其中,该数据库、实时写入的数据以及索引均可以根据实际应用场景进行设置,本说明书对此不做具体限定,例如,数据库可以为KV数据库,具体可以为Tair;该实时写入的数据可以为向量、KV键值对(Key-Value)等,构建的索引包括但不限于实现近似检索的索引、主键索引、唯一索引等。
用户可以理解为向数据库中写入数据的用户,数据写入操作可以理解为用户向数据库中实时写入数据的操作,在实际应用中,该数据写入操作可以通过数据库中的原生命令实现,例如,在数据库为Tair时,实现用户插入的命令可以为lpush、rpush等命令;其中,该lpush是Tair原生命令,用来保存数组类型的数据,第一个参数是key,后续参数是key下面的元素;比如,lpush key1 1.0.2.8.3.3,其中,key1为lpush的第一个参数、1.0.2.8.3.3为lpush的第二个参数。写入数据可以理解为用户向数据库中写入的数据,该写入数据的类型可以根据实际应用场景进行设置,例如向量类型的数据、KV键值对类型的数据。
具体地,数据库能够实时的对用户的数据写入操作进行监听,在用户执行数据写入操作的情况下,数据库能够获取到该数据写入操作对应的写入数据。
在实际应用中,用户向数据库中实时写入的数据,会存放在数据库的存储层(磁盘);同时,数据库在用户执行数据写入操作的过程中,会生成该操作对应的事件,该事件中包含实现该数据写入操作的命令,以及用户实时写入的数据中的key。
基于此,获取到该数据写入操作对应的写入数据可以理解为从数据库的存储层中获取该数据写入操作对应的写入数据、或者从该数据写入操作对应的事件中,获取该数据写入操作对应的写入数据中的key。
进一步的,数据库在对用户的数据写入操作进行监听之前,还需要创建索引构建线程,便于后续基于该线程快速的对索引进行构建,以满足用户的在线实现查询的需求,具体实现方式如下。
所述监听用户的数据写入操作,确定所述数据写入操作对应的写入数据之前,还包括:
基于索引创建条件创建索引构建线程。
其中,索引创建条件可以理解为用于对索引构建线程进行创建的条件,在实际应用中,该索引创建条件为数据库接收的索引创建请求中携带的条件。在数据库为Tair的情况下,该索引构建线程可以为本说明书提供的索引构建方法,提供了一种在Tair中创建索引构建线程的命令,该命令为tai.watch;其中tai.watch有3个参数,第一个参数是需要创建的索引名字,第二个参数用于告诉Tair监听匹配特征的List数据结构(例如键值对),第三个参数告诉Tair向量维度是多少。例如,tai.watch命令为tai.watch table key*3。其中,table为第一个参数、key*为第二个参数、3为第三个参数。其中,上述三个参数即为索引创建条件。
具体地,数据库获得索引创建条件之后,基于所述索引创建条件创建一个索引构建线程,从而实现后续基于该索引构建线程快速的对索引进行构建,以满足用户的在线实现查询的需求。
具体实施时,本说明书提供的索引构建方法能够在完成索引构建线程的创建之后,为该相乘确定对应的索引构建对象(即能够实现索引构建的算法);从而实现后续索引构建线程能够调用对应的索引构建对象进行索引的构建,具体实现方式如下。
所述基于索引创建条件创建索引构建线程之后,还包括:
接收对象关联指令,其中,所述对象关联指令携带有目标索引构建对象的对象标识;
基于所述对象标识确定所述目标索引构建对象,并建立所述目标索引构建对象与所述索引构建线程的对应关系。
其中,所述对象关联指令可以理解为能够指示数据库建立索引构建线程与索引构建对象的关联关系的指令,目标索引构建对象可以理解为需要与索引构建线程进行关联的对象,对象标识可以理解为唯一表征一个索引构建对象的标识,例如,索引构建对象的编号、序号、名称等。
沿用上例,其中,索引构建对象可以为索引构建算法、对象标识可以理解为索引构建算法的算法标识。
Tair在基于tai.watch命令完成索引构建线程的创建之后,还能够接收到为该索引构建线程,确定对应的索引构建算法的指令。其中,该指令中携带有与线程建立对象关系的算法的标识;Tair基于该算法标识从自身配置的、多种类型的索引构建算法中,确定与该算法标识对应的索引构建算法,并建立该索引构建算法与索引构建线程之间的对应关系,并与后续基于该对应关系,快速且准确的确定出索引构建线程对应的索引构建算法。
进一步地,该数据库对用户的数据写入操作进行监听,可以通过该数据库中的数据监听检测实现,从而准确且快速的对用户的数据写入操作进行感知,便于后续快速的实现实时索引构建,具体方式如下。
所述监听用户的数据写入操作,确定所述数据写入操作对应的写入数据,包括:
根据数据监听对象对用户的数据写入操作进行监听;
在监听到所述数据写入操作的情况下,获取所述数据写入操作对应的写入数据。
其中,数据监听对象可以理解为数据库中能够实现对用户的操作进行监听的机制,例如数据库中的监听线程、数据库中能够实现监听功能的脚本等。
举例说明,以该索引构建方法应用于根据Tair进行索引构建为例,对数据监听对象在监听到用户的数据写入操作时,获取数据写入操作对应的写入数据做进一步说明。其中,该索引可以理解为能够实现近似检索的索引,数据监听机制可以为Tair中的监听线程。具体地,Tair中配置有能够对用户的数据写入操作进行监听的监听线程,该线程的监听过程可以为当用户通过数据写入操作向Tair中写入数据时,Tair能够为该操作生成一个事件;Tair中的监听机制能够实时对Tair生成的事件进行感知,并根据事件的标识、事件中包含的命令等因素,判断该事件是否是用户执行的数据写入操作对应的事件,若是,则确定感知的用户执行的数据写入操作对应的事件,从而基于该事件获得用户通过数据写入操作对应的写入数据。其中,在该事件中包含写入数据的情况下,可以从该事件中直接获得写入数据;此外,当监听线程在监听到用户的数据写入操作时,也可以从Tair的存储层中获取数据写入操作对应的写入数据。
本说明书实施例中,通过数据库中配置的数据监听对象对用户的数据写入操作进行监听;并且在监听到数据写入操作的情况下,获取该数据写入操作对应的写入数据。便于后续基于该写入数据快速的进行索引的构建。
步骤204:获取所述写入数据中的关键字,在所述关键字满足索引创建条件的情况下,将所述关键字发送至所述索引构建线程,其中,所述索引创建条件为索引构建线程对应的条件。
其中,关键字可以理解为用户的写入数据中能够进行索引构建的数据,例如,在写入数据为KV键值对的情况下,所述关键字可以为key。索引构建线程可以理解为数据库中用于进行实时索引构建的线程,也可以理解为数据库中用于进行实时索引构建的任务。基于该索引构建线程能够实现快速的索引构建,从而实现用户进行实时在线查询的需求。该索引创建条件可以理解为tai.watch命令中的第二个参数(key*),也可以根据实际应用场景进行设置,本说明书对此不做具体限定。
沿用上例,Tair在基于接收到tai.watch命令,完成索引构建线程的创建之后,通过监听线程对数据写入操作对应的事件进行监听,并获取事件中包含的key,在该key满足该tai.watch命令中携带的第二参数key*时,将该事件中的key发送到索引构建线程中,便于后续基于该key进行索引的构建。
步骤206:基于所述关键字,通过所述索引构建线程构建所述写入数据的索引。
具体地,在将关键字发送至索引构建线程之后,该索引构建线程通过该关键字,对写入数据的索引进行构建的过程,可以基于该索引构建线程对应的索引构建对象实现,具体方式如下。
所述基于所述关键字,通过所述索引构建线程构建所述写入数据的索引,包括步骤一至步骤二:
步骤一:确定所述索引构建线程对应的索引构建对象。
其中,索引构建对象可以理解为配置在数据库中、能够进行索引构建的算法,例如NSW算法、HNSW算法、PQ算法等。
具体地,数据库在将关键字发送至索引构建线程之后,数据库能够基于索引构建线程与索引构想对象的对应关系,从自身配置的、多种类型的索引构建对象中,确定出索引构建线程对应的索引构建对象,实现后续基于该索引构建对象完成索引的构建。
此外,确定索引构建线程对应的索引构建对象的方式,从而数据库预先确定索引构建线程与索引构建对象之间的对应关系之后,数据库还提供了让用户自己选择,对自身写入的数据库中的数据进行索引构建的索引构建对象,具体如下。
所述确定所述索引构建线程对应的索引构建对象,包括:
基于索引构建对象的对象标识生成对象选取请求,并将所述对象选取请求发送至所述用户;
接收所述用户发送的对象确定指令,其中,所述对象确定指令携带所述用户选取的索引构建对象的对象标识;
基于所述对象标识确定所述索引构建线程对应的索引构建对象。
其中,对象标识可以理解为索引构建对象的名称、编号等,对象选取请求可以理解为数据库要求用户从自身配置的一个或多个索引构建对象中,选取用户需求的索引构建对象的请求。对象确定指令可以理解为用户在选取出需求的索引构建对象后,向数据库发送的请求。
具体地,用户在向数据库中写入数据之后,数据库能够向用户发送请求用户选取索引构建对象的对象选取请求,用户在基于接收的对象选取请求确定所需求的索引构建对象之后,向数据库发送携带有其选取的索引构建对象的对象标识的对象确定指令;数据库在接收到该对象确定指令后,基于该指令中携带的对象标识,从自身配置的多种类型的索引构建对象中,确定出与该对象标识对应的索引构建对象,并建立该对象与索引构建线程的对应关系,并与后续基于该索引构建线程对应的索引构建对象,为用户写入的数据进行索引的构建。
步骤二:在所述索引构建对象为索引增量构建对象的情况下,基于所述关键字,通过所述索引增量构建对象构建所述写入数据的索引。
其中,在索引构建对象为索引构建算法的情况下,该索引增量构建对象可以理解为能够支持增量构建的算法,例如NSW算法、HNSW算法。
具体地,数据库在将关键字发送至索引构建线程之后,基于该线程对应的索引构建对象的类型,确定该对象为索引增量构建对象的情况下,基于该索引增量构建对象通过关键字,构建写入数据的索引。
进一步的,所述基于所述关键字,通过所述索引增量构建对象构建所述写入数据的索引,包括:
基于所述关键字,通过所述索引增量构建对象对历史索引进行更新,获得所述写入数据对应的更新索引,其中,所述历史索引为所述索引增量构建对象基于历史关键字构建的索引。
其中,历史索引可以理解为索引增量构建对象为历史写入数据构建的索引,该历史写入数据可以理解为用户历史向数据库中写入的数据,例如,用户历史向数据库中写入的KV键值对;对应的历史关键字可以理解为历史写入的KV键值对中的key;更新索引可以理解为基于关键字进行更新后的历史索引。
沿用上例,其中,索引增量构建对象为支持增量构建的构建算法。当Tair将写入数据的key发送至索引构建线程中,并确定该索引构建线程对应的构建算法支持增量构建的情况下,基于该支持增量构建的构建算法,通过用户实时写入的KV键值对中的key,对基于历史写入的KV键值对的key构建的历史索引进行更新,从而获得实时写入的KV键值对所对应的索引。
其中,通过key对历史索引进行更新可以为,索引构建线程接收到用户实时写入的KV键值对中的key之后,调用该线程对应的、支持增量构建的构建算法,确定出历史构建的历史索引,该历史索引可以为树状结构的索引,该树状结构的索引的叶子节点,基于用户历史写入的KV键值对中的key构建。
在确定树状结构的历史索引之后,该支持增量构建的构建算法将key作为叶子节点,并将该叶子节点按照特定的规则加入到树状结构的历史索引中,从而实现对历史索引的更新,从而更新后的索引。便于后续用户基于该更新后的索引,能够实时的对写入到Tair中的数据进行在线查询,提高了查询的效率。
本说明书实施例中,仅以历史索引为树状结构的索引为例,对索引构建方法进行进一步解释说明,该历史索引的结构可以根据实际应用场景进行设置,本说明书对历史索引的结构并不做具体限制。
本说明书提供的索引构建方法,基于关键字通过索引增量构建对象对历史索引进行更新,获得写入数据对应的更新索引。便于后续用户基于该更新后的索引,能够实时的对写入的数据进行在线查询,提高了查询的效率。
此外,在索引构建对象并非索引增量构建对象,而是索引非增量构建对象的情况下,该索引非增量构建对象无法支持索引的增量构建,因此需要获取该关键字对应的写入数据,并为该写入数据构建新的索引。具体方式如下。
所述确定所述索引构建线程对应的索引构建对象之后,还包括:
在所述索引构建对象为索引非增量构建对象的情况下,根据所述索引构建线程获取所述关键字对应的写入数据;
基于所述写入数据,通过所述索引非增量构建对象构建所述写入数据的索引。
其中,在索引构建对象为索引构建算法的情况下,该索引非增量构建对象可以理解为不支持增量构建的构建算法,例如PQ算法。
具体地,数据库在确定该索引构建对象为,不支持增量构建的索引非增量构建对象的情况下,数据库无法基于关键字对历史索引进行更新,基于此,数据库从存储层中获取该关键字对应的写入数据,例如,在关键字为KV键值对的key时,该关键字对应的写入数据可以为该key对应的KV键值对,或者key对应的向量(value)。
在获得该写入数据之后,数据库通过索引构建线程对应的索引非增量构建对象基于该写入数据构建一个新的索引,从而获得该写入数据对应的索引,从而便于用户基于该索引对写入到数据库中的数据进行在线查询。
进一步地,由于索引非增量构建对象需要为写入数据构建新的索引,因此,如果用户每往数据库中写入一个数据,数据库就为该数据建立一个索引,那么,可能造成数据库的计算资源的浪费,并且无法达到快速的进行数据查询的目标,基于此,本说明书提供的索引构建方法中,索引构建线程会在接收到关键字之后,等待1s后开始构建。若在1s后用户继续向数据库中新增数据,则停止构建,重新计时等待构建。当等待时间达到1s后,且用户不向数据库中新增数据的情况下,索引构建线程从存储层获取key对应的KV键值对,或者key对应的向量(value),基于该value以及key进行检索构建,具体从存储层获取key对应的向量的方式如下。
所述根据所述索引构建线程获取所述关键字对应的写入数据,包括:
S1:根据所述索引构建线程确定目标关键字;
S2:根据所述索引构建线程记录所述目标关键字的接收时间,并确定所述接收时间与当前时间的时间区间;
S3:在所述时间区间满足预设区间条件的情况下,根据所述索引构建线程将所述时间区间对应的所述关键字,确定为索引构建关键字,并确定所述索引构建线程是否再次接收到所述关键字,若否,则根据所述索引构建线程获取所述索引构建关键字对应的写入数据;
若是,则将所述索引构建线程再次接收到所述关键字确定为目标关键字,并执行步骤S2。
具体实施过程中,在将索引构建线程再次接收到关键字确定为目标关键字,并执行步骤S2之后,还需要执步骤S3,从而在时间区间满足预设区间条件的情况下,根据索引构建线程将时间区间对应的所述关键字确定为索引构建关键字,并继续确定索引构建线程是否再次接收到关键字。
其中,目标关键字可以理解为用于指示索引构建线程进行计时的关键字,例如,第一个发送至索引构建线程中的key,或索引构建线程进行重新计时过程中,接收到的第一个key。在实际应用中,当索引构建线程接收到该目标关键字时开始计时,该索引构建线程并将接收到目标关键字的时间,作为计时起始时间。
时间区间可以理解为一个时间范围,例如在接收时间为12:12:12.001的情况下,当前时间为12:12:12.051,那么两者的时间区间可以为12:12:12.001-12:12:12.051;预设区间条件可以根据实际应用场景进行设置,例如该预设区间条件可以为时间区间大于1s(1秒)。
索引构建关键字可以理解为能够进行索引构建的关键字。
具体地,数据库在确定索引构建线程对应的索引构建算法,为索引非增量构建对象的情况下,为了避免计算资源的浪费,会在将关键字发送至索引构建线程之后,通过该索引构建线程在确定接收到关键字为目标关键字的情况下,数据库记录下索引构建线程接收到该目标关键字的接收时间,并从该接收时间开始进行计时,实时确定该接收时间与当前时间的时间区间。
数据库在时间区间满足预设区间条件的情况下。例如预设区间条件为时间区间大于等于1s;基于此,当时间区间大于等于1s的情况下,确定该时间区间满足预设区间条件,并将该时间区间对应的关键字确定为索引构建关键字。
当数据库确定该时间区间满足预设区间条件之后,需要再次判断用户有没有继续向数据库中写入新的数据,若是,则表示用户的数据写入操作还在继续,并未将所有的数据写入到数据库中,因此,数据库将索引构建线程在时间区间之后接收的第一条关键字作为目标关键字,例如,数据库在确定用户继续向数据库中写入新的数据之后,将索引构建线程将时间区间12:12:12.001-12:12:13.001之后接收的关键字作为目标关键字,并重新开始计时。
若否,数据库则通过索引构建线程从数据库的存储层中获取该索引构建关键字对应的写入数据,便于后续索引非增量构建对象通过写入数据构建写入数据的索引。
进一步地,当数据库快速的对写入数据进行索引构建之后,用户能够通过该索引实现快速的实时在线查询,具体方式如下。
所述基于所述关键字,通过所述索引构建线程构建所述写入数据的索引之后,还包括:
接收数据查询请求,其中,所述数据查询请求包含目标索引标识以及数据查询条件;
根据所述目标索引标识从所述索引中确定目标索引;
根据所述目标索引确定与所述数据查询条件对应的写入数据。
其中,数据查询请求可以理解为用户对数据库中的数据进行查询的命令,目标索引标识可以理解为需要进行查询的索引的标识;数据查询条件可以理解为在进行数据查询时需要基于的条件,该数据查询条件可以根据实际应用场景进行设置。在实际应用中,当数据库为Tair的情况下,用户对数据库中的数据进行查询的命令可以为tai.search;tai.search是本说明书实施例中索引构建方法提供的一个新开发命令,其第一个参数是索引名字(即目标索引标识),第二个参数是表示期望获得TOPN个近似向量,后面参数是请求的向量,该第二参数以及第二个参数之后的参数可以为数据查询条件,例如,tai.search命令可以为tai.search table 10 1 2 3;其中,table为第一个参数,第二参数为10,第二参数之后的参数为1 2 3,其中,该1 2 3为用户需要进行相似检索的向量,数据库在接收到该命令之后,能够从名称为table的索引中,检索出与向量123相似的10个向量;
沿用上例,Tair再通过索引构建线程,快速的完成对写入数据进行实时索引构建之后,能够接收到用户发送的数据查询命令tai.search table 10 1 2 3;基于该命令中携带的table,确定该数据查询命令需要进行查询的索引,并基于该数据查询命令中携带的101 2 3,从table索引中查询与参数1 2 3相似度最高的10个向量。从而实现了用户的实时在线查询。
本说明书实施例提供的索引构建方法,通过实时对用户的数据写入操作进行监听,从而在数据写入操作对应的写入数据中的关键字,满足索引构建线程对应的索引创建条件的情况下,根据索引构建线程通过该关键字构建写入数据的索引,从而实现了在线实时构建索引,同时,通过索引构建线程针对用户实时写入的数据进行快速的索引构建,避免了由于对大数据进行索引构建,导致耗时较长的问题,满足后续用户基于索引进行实时在线查询的需求。
下述结合附图3,以本说明书提供的索引构建方法在进行向量的近似查询场景下的应用为例,对所述索引构建方法进行进一步说明。其中,图3示出了本说明书一实施例提供的一种应用于进行向量的近似查询场景下的索引构建方法的处理流程图,该索引构建方法应用于Tair,该Tair包括存储层、计算层以及算法库,其中,Tair基于API接口实现接收用户以及运维人员,发送的各种命令。包括tai.watch、lpush、tai.search等;存储层用于存储用户向Tair中写入的KV键值对,该KV键值对包括向量(value)以及该向量对应的key;计算层为Tair中的计算模块,用于为Tair的运行提供计算资源的支持;算法库为用于实现在Tair中对写入到Tair的KV键值对构建索引。其中,该索引为能够实现近似检索的索引。
具体地,Tair在用户向其执行数据插入操作之前,能够接收到运维人员发送的命令tai.watch table key*3,运维人员通过该命令能够告诉Tair,需要对用户插入(新增)的数据构建索引,而索引的数据来源于key满足"keys*"特征的KV键值对。Tair基于该命令创建索引构建线程,并且通过自身配置的监听线程,实时监听用户的插入操作。
在完成索引构建线程的创建后,用户通过lpush/rpush等List命令向Tair中插入数据KV键值对,即为图3中的lpush key1 1.0.2.8.3.3至lpush key4 6.6.4.9.6.1,并将KV键值对存储至Tair存储层时,Tair的监听线程会获取该插入操作对应的事件中所包含的key,其中,该key为用户通过命令向Tair中插入的KV键值对中的key。
若KV键值对的key满足特征key*,则将该key加入至key*队列中,基于该队列将key发送至索引构建线程,使得索引构建线程获取到该KV键值对所对应的key。参见图3,其中多线程消费可以理解为多个索引构建线程,共同进行索引的构建,该每个索引构建线程所需求的key可以为不同、对应的,每个索引构建线程基于key构建的索引也不同。在实际应用中,每个索引构建线程所需求的key、以及所需要构建索引,能够基于tai.watch命令定义。
Tair的索引构建线程在获取key之后,通过以后台构建的方式,快速的完成对索引的构建,从而便于后续用户进行实时在线查询,具体包括:
Tair在创建索引构建线程的过程中,可以从算法库中为不同的索引构建线程,确定对应的构建算法,其中,该算法库中配置有不同类型的构建算法。
当Tair的索引构建线程在获取key之后,Tair判断该索引构建线程对应的构建算法,是否支持支持增量构建。
如果构建算法本身支持增量构建的,例如NSW、HNSW,那么,当索引构建线程捕获到用户的数据插入操作时,会基于用户插入的KV键值对中的key立刻进行索引构建。
如果构建算法本身不支持增量构建的,例如PQ;Tair会指示索引构建线程,在接收到key后等待1s,当达到1s之后开始索引的构建;若在1s之后,用户继续向Tair中新增数据,那么Tair则指示索引构建线程,停止索引的构建,并重新计时。直至计时达到1s且用户不再向Tair中新增数据,索引构建线程开始进行索引的构建。
在构建时,索引构建线程从Tair的存储层中,获取与该key对应的向量,并基于该key以及与该key对应的向量进行检索构建。
在实际应用中,当Tair后台进行实时索引构建时,用户依旧可以执行其他命令,例如Tair提供的"tai.stat"命令,对当前索引的构建状态进行查看。当构建完成后,用户可以进行索引的检索。
在本说明书提供的实施例中,仅以用户插入的数据是KV键值对为例,对本说明书进行说明,用户插入的数据可以为任意一种类型的数据,本说明书对此不做具体限制,例如,任意一种List数据结构的数据。
本说明书提供的索引构建方法,基于数据库(Tair)的原生操作,利用监听技术对用户的操作进行监听,并在后台进行索引构建,做到用户构建索引的无感,实现了用户可以通过操作原生的List数据结构,即可自动完成构建。
同时,通过利用后台构建框架技术,解决大数据构建情况下,用户操作阻塞问题,并且,在后台进行索引构建的过程中,采用后台异步多线程索引构建,支持用户实时插入、实时构建索引,并且支持实时在线近似检索。
与上述方法实施例相对应,本说明书还提供了索引构建装置实施例,图4示出了本说明书一实施例提供的一种索引构建装置的结构示意图。如图4所示,该装置包括:
监听模块402,被配置为监听用户的数据写入操作,确定所述数据写入操作对应的写入数据;
发送模块404,被配置为获取所述写入数据中的关键字,在所述关键字满足索引创建条件的情况下,将所述关键字发送至所述索引构建线程,其中,所述索引创建条件为索引构建线程对应的条件;
构建模块406,被配置为基于所述关键字,通过所述索引构建线程构建所述写入数据的索引。
可选地,所述索引构建方法还包括创建模块,被配置为基于索引创建条件创建索引构建线程。
可选地,所述索引构建方法还包括关联模块,被配置为:
接收对象关联指令,其中,所述对象关联指令携带有目标索引构建对象的对象标识;
基于所述对象标识确定所述目标索引构建对象,并建立所述目标索引构建对象与所述索引构建线程的对应关系。
可选地,所述监听模块402,还被配置为:
根据数据监听对象对用户的数据写入操作进行监听;
在监听到所述数据写入操作的情况下,获取所述数据写入操作对应的写入数据。
可选地,所述构建模块406,还被配置为:
确定所述索引构建线程对应的索引构建对象;
在所述索引构建对象为索引增量构建对象的情况下,基于所述关键字,通过所述索引增量构建对象构建所述写入数据的索引。
可选地,所述构建模块406,还被配置为:
基于索引构建对象的对象标识生成对象选取请求,并将所述对象选取请求发送至所述用户;
接收所述用户发送的对象确定指令,其中,所述对象确定指令携带所述用户选取的索引构建对象的对象标识;
基于所述对象标识确定所述索引构建线程对应的索引构建对象。
可选地,所述构建模块406,还被配置为:
基于所述关键字,通过所述索引增量构建对象对历史索引进行更新,获得所述写入数据对应的更新索引,其中,所述历史索引为所述索引增量构建对象基于历史关键字构建的索引。
可选地,所述构建模块406,还被配置为:
在所述索引构建对象为索引非增量构建对象的情况下,根据所述索引构建线程获取所述关键字对应的写入数据;
基于所述写入数据,通过所述索引非增量构建对象构建所述写入数据的索引。
可选地,所述构建模块406,还被配置为:
S1:根据所述索引构建线程确定目标关键字;
S2:根据所述索引构建线程记录所述目标关键字的接收时间,并确定所述接收时间与当前时间的时间区间;
S3:在所述时间区间满足预设区间条件的情况下,根据所述索引构建线程将所述时间区间对应的所述关键字,确定为索引构建关键字,并确定所述索引构建线程是否再次接收到所述关键字,若否,则根据所述索引构建线程获取所述索引构建关键字对应的写入数据;
若是,则将所述索引构建线程再次接收到所述关键字确定为目标关键字,并执行步骤S2。
可选地,所述索引构建方法还包括查询模块,被配置为:
接收数据查询请求,其中,所述数据查询请求包含目标索引标识以及数据查询条件;
根据所述目标索引标识从所述索引中确定目标索引;
根据所述目标索引确定与所述数据查询条件对应的写入数据。
本说明提供的索引构建装置,通过实时对用户的数据写入操作进行监听,从而在数据写入操作对应的写入数据中的关键字,满足索引构建线程对应的索引创建条件的情况下,基于该关键字,通过索引构建线程对写入数据的索引进行构建,从而实现了在线实时构建索引,达到了通过索引构建线程,针对用户实时写入的数据进行快速的索引构建的目的,避免了由于对大数据进行索引构建,导致耗时较长的问题,满足后续用户基于索引进行实时在线查询的需求。
上述为本实施例的一种索引构建装置的示意性方案。需要说明的是,该索引构建装置的技术方案与上述的索引构建方法的技术方案属于同一构思,索引构建装置的技术方案未详细描述的细节内容,均可以参见上述索引构建方法的技术方案的描述。
图5示出了根据本说明书一个实施例提供的一种计算设备500的结构框图。该计算设备500的部件包括但不限于存储器510和处理器520。处理器520与存储器510通过总线530相连接,数据库550用于保存数据。
计算设备500还包括接入设备540,接入设备540使得计算设备500能够经由一个或多个网络560通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备540可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本说明书的一个实施例中,计算设备500的上述部件以及图5中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图5所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备500可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备500还可以是移动式或静止式的服务器。
其中,处理器520用于执行计算机可执行指令,该计算机可执行指令被处理器520执行时实现任意所述索引构建方法的步骤。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的索引构建方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述索引构建方法的技术方案的描述。
本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现任意所述索引构建方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的索引构建方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述索引构建方法的技术方案的描述。
本说明书一实施例还提供一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行任意所述索引构建方法的步骤。
上述为本实施例的一种计算机程序的示意性方案。需要说明的是,该计算机程序的示意性方案与上述的索引构建方法的技术方案属于同一构思,计算机程序的示意性方案未详细描述的细节内容,均可以参见上述索引构建方法的技术方案的描述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书并不受所描述的动作顺序的限制,因为依据本说明书,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。
Claims (13)
1.一种索引构建方法,包括:
监听用户的数据写入操作,确定所述数据写入操作对应的写入数据;
获取所述写入数据中的关键字,在所述关键字满足索引创建条件的情况下,将所述关键字发送至所述索引构建线程,其中,所述索引创建条件为索引构建线程对应的条件;
基于所述关键字,通过所述索引构建线程构建所述写入数据的索引。
2.根据权利要求1所述的索引构建方法,所述监听用户的数据写入操作,确定所述数据写入操作对应的写入数据之前,还包括:
基于索引创建条件创建索引构建线程。
3.根据权利要求2所述的索引构建方法,所述基于索引创建条件创建索引构建线程之后,还包括:
接收对象关联指令,其中,所述对象关联指令携带有目标索引构建对象的对象标识;
基于所述对象标识确定所述目标索引构建对象,并建立所述目标索引构建对象与所述索引构建线程的对应关系。
4.根据权利要求1所述的索引构建方法,所述监听用户的数据写入操作,确定所述数据写入操作对应的写入数据,包括:
根据数据监听对象对用户的数据写入操作进行监听;
在监听到所述数据写入操作的情况下,获取所述数据写入操作对应的写入数据。
5.根据权利要求1所述的索引构建方法,所述基于所述关键字,通过所述索引构建线程构建所述写入数据的索引,包括:
确定所述索引构建线程对应的索引构建对象;
在所述索引构建对象为索引增量构建对象的情况下,基于所述关键字,通过所述索引增量构建对象构建所述写入数据的索引。
6.根据权利要求5所述的索引构建方法,所述确定所述索引构建线程对应的索引构建对象,包括:
基于索引构建对象的对象标识生成对象选取请求,并将所述对象选取请求发送至所述用户;
接收所述用户发送的对象确定指令,其中,所述对象确定指令携带所述用户选取的索引构建对象的对象标识;
基于所述对象标识确定所述索引构建线程对应的索引构建对象。
7.根据权利要求5所述的索引构建方法,所述基于所述关键字,通过所述索引增量构建对象构建所述写入数据的索引,包括:
基于所述关键字,通过所述索引增量构建对象对历史索引进行更新,获得所述写入数据对应的更新索引,其中,所述历史索引为所述索引增量构建对象基于历史关键字构建的索引。
8.根据权利要求5所述的索引构建方法,所述确定所述索引构建线程对应的索引构建对象之后,还包括:
在所述索引构建对象为索引非增量构建对象的情况下,根据所述索引构建线程获取所述关键字对应的写入数据;
基于所述写入数据,通过所述索引非增量构建对象构建所述写入数据的索引。
9.根据权利要求8所述的索引构建方法,所述根据所述索引构建线程获取所述关键字对应的写入数据,包括:
S1:根据所述索引构建线程确定目标关键字;
S2:根据所述索引构建线程记录所述目标关键字的接收时间,并确定所述接收时间与当前时间的时间区间;
S3:在所述时间区间满足预设区间条件的情况下,根据所述索引构建线程将所述时间区间对应的所述关键字,确定为索引构建关键字,并确定所述索引构建线程是否再次接收到所述关键字,若否,则根据所述索引构建线程获取所述索引构建关键字对应的写入数据;
若是,则将所述索引构建线程再次接收到所述关键字确定为目标关键字,并执行步骤S2。
10.根据权利要求1所述的索引构建方法,所述基于所述关键字,通过所述索引构建线程构建所述写入数据的索引之后,还包括:
接收数据查询请求,其中,所述数据查询请求包含目标索引标识以及数据查询条件;
根据所述目标索引标识从所述索引中确定目标索引;
根据所述目标索引确定与所述数据查询条件对应的写入数据。
11.一种索引构建装置,包括:
监听模块,被配置为监听用户的数据写入操作,确定所述数据写入操作对应的写入数据;
发送模块,被配置为获取所述写入数据中的关键字,在所述关键字满足索引创建条件的情况下,将所述关键字发送至所述索引构建线程,其中,所述索引创建条件为索引构建线程对应的条件;
构建模块,被配置为基于所述关键字,通过所述索引构建线程构建所述写入数据的索引。
12.一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该计算机可执行指令被处理器执行时实现权利要求1至10任意一项所述索引构建方法的步骤。
13.一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现权利要求1至10任意一项所述索引构建方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111262763.XA CN114168589A (zh) | 2021-10-28 | 2021-10-28 | 索引构建方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111262763.XA CN114168589A (zh) | 2021-10-28 | 2021-10-28 | 索引构建方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114168589A true CN114168589A (zh) | 2022-03-11 |
Family
ID=80477564
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111262763.XA Pending CN114168589A (zh) | 2021-10-28 | 2021-10-28 | 索引构建方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114168589A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115034950A (zh) * | 2022-06-30 | 2022-09-09 | 格兰菲智能科技有限公司 | 线程构造方法及其装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120317105A1 (en) * | 2009-09-21 | 2012-12-13 | Zte Corporation | Method and Apparatus for Updating Index and Sequencing Search Results Based on Updated Index in Terminal |
CN111797134A (zh) * | 2020-06-23 | 2020-10-20 | 北京小米松果电子有限公司 | 分布式数据库的数据查询方法、装置和存储介质 |
-
2021
- 2021-10-28 CN CN202111262763.XA patent/CN114168589A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120317105A1 (en) * | 2009-09-21 | 2012-12-13 | Zte Corporation | Method and Apparatus for Updating Index and Sequencing Search Results Based on Updated Index in Terminal |
CN111797134A (zh) * | 2020-06-23 | 2020-10-20 | 北京小米松果电子有限公司 | 分布式数据库的数据查询方法、装置和存储介质 |
Non-Patent Citations (2)
Title |
---|
SHAN AN ET AL.: "Fast and Incremental Loop Closure Detection Using Proximity Graphs", 《2019 IEEE/RSJ INTERNATIONAL CONFERENCE ON INTELLIGENT ROBOTS AND SYSTEMS (IROS)》, 28 January 2020 (2020-01-28), pages 378 - 385 * |
任杰: "实时在线相似检索系统的设计和实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》, 15 July 2011 (2011-07-15), pages 138 - 957 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115034950A (zh) * | 2022-06-30 | 2022-09-09 | 格兰菲智能科技有限公司 | 线程构造方法及其装置 |
CN115034950B (zh) * | 2022-06-30 | 2023-10-24 | 格兰菲智能科技有限公司 | 线程构造方法及其装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7343568B2 (ja) | 機械学習のためのハイパーパラメータの識別および適用 | |
US9619491B2 (en) | Streamlined system to restore an analytic model state for training and scoring | |
US11403303B2 (en) | Method and device for generating ranking model | |
WO2020206910A1 (zh) | 产品信息推送方法、装置、计算机设备和存储介质 | |
CN111767047A (zh) | 一种微服务组件管理方法和装置 | |
CN111475584A (zh) | 数据处理方法、系统以及装置 | |
WO2023142399A1 (zh) | 信息搜索方法、装置、电子设备 | |
CN113297269A (zh) | 数据查询方法及装置 | |
CN114168589A (zh) | 索引构建方法及装置 | |
CN109214519B (zh) | 数据处理系统、方法和设备 | |
CN110377803B (zh) | 信息处理方法以及装置 | |
CN116597443A (zh) | 素材标签处理方法、装置、电子设备及介质 | |
CN115828992A (zh) | 处理神经网络模型的方法 | |
WO2023011237A1 (zh) | 业务处理 | |
EP4339843A1 (en) | Neural network optimization method and apparatus | |
CN115687676A (zh) | 信息检索方法、终端及计算机可读存储介质 | |
CN113780827A (zh) | 一种物品筛选方法、装置、电子设备及计算机可读介质 | |
CN111475492A (zh) | 数据处理方法以及装置 | |
CN113297264A (zh) | 用于大规模并行处理数据库的方法及装置 | |
CN113297306B (zh) | 数据处理方法及装置 | |
Toumanidis et al. | ActiveCrowds: A human-in-the-loop machine learning framework | |
CN115794984B (zh) | 数据存储方法、数据检索方法、装置、设备以及介质 | |
CN111522887B (zh) | 用于输出信息的方法和装置 | |
CN113516141B (zh) | 深度度量模型的优化方法、设备及存储介质 | |
CN113361249B (zh) | 文档判重方法、装置、电子设备和存储介质 |
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 |