CN117725052A - 索引创建方法、装置、计算机设备和计算机可读存储介质 - Google Patents
索引创建方法、装置、计算机设备和计算机可读存储介质 Download PDFInfo
- Publication number
- CN117725052A CN117725052A CN202311033961.8A CN202311033961A CN117725052A CN 117725052 A CN117725052 A CN 117725052A CN 202311033961 A CN202311033961 A CN 202311033961A CN 117725052 A CN117725052 A CN 117725052A
- Authority
- CN
- China
- Prior art keywords
- data
- index
- target
- created
- updated
- 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
- 238000000034 method Methods 0.000 title claims abstract description 53
- 230000015654 memory Effects 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 17
- 230000001360 synchronised effect Effects 0.000 claims description 11
- 230000006870 function Effects 0.000 description 8
- 238000012217 deletion Methods 0.000 description 7
- 230000037430 deletion Effects 0.000 description 7
- 238000010276 construction Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 235000015067 sauces Nutrition 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种索引创建方法、装置、计算机设备和计算机可读存储介质,通过接收针对数据库的索引创建请求,数据库中包括在接收到索引创建指令之前写入的历史数据;根据索引创建请求,对在线写入数据库的目标数据创建对应的索引,目标数据包括更新数据和新增数据中的至少一种,更新数据用于对数据库中的被更新数据进行更新;若目标数据为更新数据,则对已创建的索引中与目标数据对应的被更新数据的索引标记为已被删除状态;针对历史数据,若已创建的索引中不包括历史数据对应的索引,则异步创建历史数据对应的索引,实现数据库可持续在线写入,使数据库中的数据可以及时更新,保证数据库中数据的准确性。
Description
技术领域
本申请涉及通信技术领域,具体涉及一种索引创建方法、装置、计算机设备和计算机可读存储介质。
背景技术
对于在线数据库服务,在其运行时创建索引的十分常见的需求,创建索引的过程可以划分为三个阶段,阶段一为数据回填,阶段二为数据回填完成前的在线写入,阶段三为数据回填完成后的在线写入。阶段一和阶段二为异步流程,为了避免阶段一和阶段二之间的冲突,通常采用在数据回填完成之前,先暂停在线写入,在数据回填完成后,再恢复在线写入,避免冲突。暂停在线写入会使数据库中的数据无法更新,进而导致数据库无法提供准确的数据。
发明内容
本申请实施例提供一种索引创建方法、装置、计算机设备和计算机可读存储介质,可以实现数据库的持续在线写入,从而使数据库中的数据可以及时更新,保证数据库中数据的准确性。
本申请实施例提供的一种索引创建方法,包括:
接收针对数据库的索引创建请求,所述数据库中包括在接收到所述索引创建指令之前写入的历史数据;
根据所述索引创建请求,对在线写入所述数据库的目标数据创建对应的索引,所述目标数据包括更新数据和新增数据中的至少一种,所述更新数据用于对所述数据库中的被更新数据进行更新;
若所述目标数据为更新数据,则对已创建的索引中与所述目标数据对应的被更新数据的索引标记为已被删除状态;
针对所述历史数据,若已创建的索引中不包括所述历史数据对应的索引,则异步创建所述历史数据对应的索引。
相应的,本申请实施例还提供的一种索引创建装置,包括:
接收单元,用于接收针对数据库的索引创建请求,所述数据库中包括在接收到所述索引创建指令之前写入的历史数据;
同步创建单元,用于根据所述索引创建请求,对在线写入所述数据库的目标数据创建对应的索引,所述目标数据包括更新数据和新增数据中的至少一种,所述更新数据用于对所述数据库中的被更新数据进行更新;
标记单元,用于若所述目标数据为更新数据,则对已创建的索引中与所述目标数据对应的被更新数据的索引标记为已被删除状态;
异步创建单元,用于针对所述历史数据,若已创建的索引中不包括所述历史数据对应的索引,则异步创建所述历史数据对应的索引。
在一实施例中,所述标记单元,包括:
索引构建子单元,用于若所述目标数据为更新数据,则对所述被更新数据构建索引,得到候选索引;
查询子单元,用于根据所述候选索引对所述已创建的索引进行查询;
第一删除标记子单元,用于若已创建的索引中包括与所述候选索引相同的目标索引,则将所述目标索引标记为已被删除状态。
在一实施例中,所述标记单元,还包括:
候选索引创建子单元,用于若已创建的索引中不包括与所述候选索引相同的目标索引,则基于所述候选索引创建所述被更新数据对应的索引;
第二删除标记子单元,用于将基于所述候选索引创建的索引标记为已被删除状态。
在一实施例中,所述异步创建单元,包括:
异步索引构建子单元,用于根据所述历史数据构建对应的候选索引;
异步索引创建子单元,用于若所述已创建的索引中不包括所述候选索引,则在数据访问同步机制下,异步创建所述历史数据对应的索引,所述数据访问同步机制用于阻止与所述历史数据对应的索引被其他创建索引的进程访问。
在一实施例中,所述索引创建装置还包括:
删除处理单元,用于若所述历史数据的索引创建完成,则对已创建的索引中被标记为已删除状态的索引进行删除处理。
在一实施例中,所述同步创建索引单元,包括:
目标列确定子单元,用于根据所述索引创建请求确定所述目标数据表中用于创建索引的目标列;
数据获取子单元,用于获取在线写入所述目标数据表的目标数据关于所述目标列的列数据;
同步索引创建子单元,用于根据所述目标数据关于所述目标列的列数据,创建所述目标数据的索引。
在一实施例中,数据获取子单元,包括:
列确定模块,用于若所述目标数据为更新数据,则确定基于所述目标数据对所述目标数据表中的被更新数据所更新的列;
列数据获取模块,用于若所述被更新数据所更新的列包括所述目标列,则获取在线写入所述目标数据表的目标数据关于所述目标列的列数据。
相应的,本申请实施例还提供的一种计算机设备,包括存储器和处理器;所述存储器存储有计算机程序,所述处理器用于运行所述存储器内的计算机程序,以执行本申请实施例提供的任一种索引创建方法。
相应的,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,所述计算机程序被处理器加载以执行本申请实施例提供的任一种索引创建方法。
本申请实施例通过接收针对数据库的索引创建请求,数据库中包括在接收到索引创建指令之前写入的历史数据;根据索引创建请求,对在线写入数据库的目标数据创建对应的索引,目标数据包括更新数据和新增数据中的至少一种,更新数据用于对数据库中的被更新数据进行更新;若目标数据为更新数据,则对已创建的索引中与目标数据对应的被更新数据的索引标记为已被删除状态;针对历史数据,若已创建的索引中不包括历史数据对应的索引,则异步创建历史数据对应的索引。
本申请实施例通过标记已被删除状态,标识数据不可再用,替代删除操作,使异步创建历史数据的索引时,可以确定索引是不存在还是被删除,避免对历史数据创建的索引,与在线写入的目标数据对应的索引产生冲突,从而不需要暂停在线写入,实现数据库可持续在线写入,使数据库中的数据可以及时更新,保证数据库中数据的准确性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的索引创建方法的流程图;
图2是本申请实施例提供的索引创建阶段示意图;
图3是本申请实施例提供的索引创建装置示意图;
图4是本申请实施例提供的计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供一种索引创建方法、装置、计算机设备和计算机可读存储介质。该索引创建装置可以集成在计算机设备中,该计算机设备可以是服务器,也可以是终端等设备。
其中,该终端可以包括手机、穿戴式智能设备、平板电脑、笔记本电脑、个人计算(PC,Personal Computer)、以及车载计算机等。
其中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。
以下分别进行详细说明。需说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。
本实施例将从索引创建装置的角度进行描述,该索引创建装置具体可以集成在计算机设备中,该计算机设备可以是服务器,也可以是终端等设备。
本申请实施例提供的一种索引创建方法,如图1所示,该索引创建方法的具体流程可以如下:
101、接收针对数据库的索引创建请求,数据库中包括在接收到索引创建指令之前写入的历史数据。
其中,索引创建请求可以用于指示服务器对数据库中的数据创建索引,比如可以通过索引创建请求指示服务器对请求指定的目标数据表建立索引。
对于在线数据库服务,经常会有需要在其运行时创建索引的需求,服务器服务运行时会不断地接收数据,并将相应的数据存储于数据库中,所以在服务器接收到索引创建请求时,数据库一般已存储有数据,即历史数据。比如,索引创建请求针对于目标数据表,在接收到索引创建请求之前,服务器会将相应的数据存储在目标数据表中。
因此,索引的创建还需要对历史数据进行回填,保证创建的索引中包括历史数据对应的索引。
如图2所示,现有的创建索引的过程可以划分为三个阶段,阶段一(Stage1)为数据回填,阶段二(Stage2)为数据回填完成前的在线写入,阶段三(Stage3)为数据回填完成后的在线写入。
在线写入的数据包括新增数据和对历史数据的更新数据,如果是更新数据可能会导致阶段一和阶段二产生冲突,为了避免阶段一和阶段二之间的冲突,通常采用在数据回填完成之前,先暂停在线写入,在数据回填完成后,再恢复在线写入,进入持续在线写入的阶段三。
暂停在线写入期间,数据库中的数据无法更新,依赖于数据库获取实时数据的应用程序无法获取到准确到数据,从而呈现错误的、过时的数据,进而导致用户查询到的数据不准确。
102、根据索引创建请求,对在线写入数据库的目标数据创建对应的索引,目标数据包括更新数据和新增数据中的至少一种,更新数据用于对数据库中的被更新数据进行更新。
其中,目标数据为实时写入数据库中的数据,目标数据可以是更新数据,也可以是新增数据,更新数据为对数据库中已有的数据进行更新的数据,比如,数据库中存储有用户A的数据,更新数据可以是对用户A的全部或者部分数据进行更新的数据;新增数据则可以认为是增加了一个新用户的数据。
比如,服务器可以索引创建请求,获取在线写入数据库的目标数据,并根据目标数据创建对应的索引。
在一实施例中,目标数据存储于目标数据表中,索引创建请求可以指定以目标数据表中的指定列创建索引,那么服务器可以根据目标数据与指定列对应的值创建目标数据的索引,索引创建请求针对于数据库中的目标数据表,即步骤“根据索引创建请求,对在线写入数据库的目标数据创建对应的索引”,具体可以包括:
根据索引创建请求确定目标数据表中用于创建索引的目标列;
获取在线写入目标数据表的目标数据关于目标列的列数据;
根据目标数据关于目标列的列数据,创建目标数据的索引。
比如,索引创建请求指示服务器对数据库中的目标数据表建立索引的,并指定了用于创建索引的目标列,目标列的数量不限,服务器根据索引创建请求确定用户创建索引的目标列,获取目标数据关于目标列的列数据,基于列数据构建目标数据的索引,并写入该索引。
目标数据关于目标列的列数据可以是指目标数据对应目标数据表的行记录中,与目标列对应的数据。
索引可以以数据表的形式存储,也可以以其他数据结构存储,在此不做限制。
假设目标数据表的列包括{ID,时间,作者,标题,关键词},可以以ID列和与关键词列构建索引(即ID列和关键词列为目标列),得到关键词-ID结构的索引;目标数据为{781,10:30,瞄酱,午餐吃什么,午餐/DIY},则目标数据的索引为午餐/DIY-781。
服务器基于更新数据可以对被更新数据进行更新,更新的部分数据可能包含目标列下的数据,如果对目标列下的数据进行更新,则需要重新生成索引,避免基于索引查询不到更新后的数据,所以,创建索引前需要先确定发生数据更新的列,即在一实施例中,步骤“获取在线写入目标数据表的目标数据关于目标列的列数据”,具体可以包括:
若目标数据为更新数据,则确定基于目标数据对目标数据表中的被更新数据所更新的列;
若被更新数据所更新的列包括目标列,则获取在线写入目标数据表的目标数据关于目标列的列数据。
比如,若目标数据为更新数据,则确定目标数据对于被更新数据所更新的列,若更新的列包括目标列,则获取目标数据在目标列下的列数据,以生成索引,若更新的列不包括目标列,则不执行索引生成流程。
可选的,也可以构建索引后,查询已构建的索引中是否存在相同的索引,若有,则不写入该索引;否则,写入该索引。
103、若目标数据为更新数据,则对已创建的索引中与目标数据对应的被更新数据的索引标记为已被删除状态。
其中,被更新数据为服务器基于目标数据所要更新的数据,比如,数据库中存储有数据A1,目标数据为A2,服务器将数据A1更新为数据A2,那么A1为A2对应的被更新数据。
对于数据表,数据表中存储有关于用户X的行记录,目标数据为关于用户X的更新数据,那么用户X的行记录为被更新数据。
若目标数据为更新数据,已创建的索引中可能存在被更新数据的索引,也可能不存在被更新数据的索引。
比如,数据回填开始时,获取历史数据的数据快照,并基于数据快照中的数据进行数据回填,假设数据快照中存在数据K,在服务器对数据K进行回填之前,数据K被目标数据更新为数据P,此时,由于数据K还未回填,所以已创建的索引中不存在数据K的索引;若数据K被目标数据更新为数据P时,数据K已被回填,则已创建的索引中存在数据K的索引。
对于已创建的索引包括被更新数据的索引的情况,可以标记该索引已被删除,避免服务器提供的数据不准确,即在一实施例中,步骤“若目标数据为更新数据,则对已创建的索引中与目标数据对应的索引标记为已被删除状态”,具体可以包括:
若目标数据为更新数据,则对被更新数据构建索引,得到候选索引;
根据候选索引对已创建的索引进行查询;
若已创建的索引中包括与候选索引相同的目标索引,则将目标索引标记为已被删除状态。
比如,如果目标数据为更新数据,对被更新数据构建索引,得到候选索引,然后对已创建的索引进行查询,若已创建的索引中包括与候选索引相同的目标索引,即以创建的索引中已存在被更新数据的索引,则将目标索引标记为已被删除状态。
比如可以通过墓碑(tombstone)机制将被更新数据的索引标记为被删除状态,或者是通过其他标识标记该索引已被删除。
对于已创建的索引中不存在被更新数据的索引的情况,为了避免数据回填时写入被更新数据的索引,可以在创建目标数据的索引时,创建被更新数据的索引,然后将创建的索引标记为删除状态,以避免数据回填时,在有新数据(目标数据)的索引情况下,写入旧数据(被更新数据)的索引,即在一实施例中,步骤“根据候选索引对已创建的索引进行查询之后”,本申请实施例提供的索引创建方法具体还可以包括:
若已创建的索引中不包括与候选索引相同的目标索引,则基于候选索引创建被更新数据的索引;
将基于候选索引创建的索引标记为已被删除状态。
如果已创建的索引中不包括与候选索引相同的目标索引,则基于候选索引创建被更新数据的索引,并将基于候选索引创建的被更新数据的索引标记为已被删除状态,此处创建被更新数据的索引,又将创建的索引标记为已被删除状态的目的在于,数据回填时,可以确定历史数据已被修改,不再创建已被更新的数据的索引。
本申请实施例中通过特殊的写操作(写入删除标记)标识数据不再可用,以替代删除操作,在不侵入存储引擎的前提下,服务器感知到删除行为,从而解决了异步数据回填,与同步在线写入之间的冲突,无需在数据回填完成之前暂停在线写入,实现可持续在线写入。
104、针对历史数据,若已创建的索引中不包括历史数据对应的索引,则异步创建历史数据对应的索引。
对于历史数据,在创建历史数据的索引时,对已创建的索引进行查询,如果已创建的索引中不包括历史数据的索引,则异步创建历史数据的索引。如果已创建的索引中存在历史数据的索引,则跳过针对该历史数据的索引创建流程。
对于在线写入数据库的目标数据,服务器会同步创建目标数据的索引,以及异步创建历史数据的索引,当两个或多个进程或线程尝试同时访问或修改同一块数据,从而导致数据不一致或程序出现错误(Race Condition),可以在创建索引时,通过latch“锁住”索引,使得同时只有一个进程能够访问该索引,即在一实施例中,步骤“针对历史数据,若已创建的索引中不包括历史数据对应的索引,则异步创建历史数据对应的索引”,具体可以包括:
根据历史数据构建对应的候选索引;
若已创建的索引中不包括候选索引,则在数据访问同步机制下,异步创建历史数据对应的索引,所述数据访问同步机制用于阻止与历史数据对应的索引被其他创建索引的进程访问。
其中,当多个线程尝试同时访问共享资源时,可能会出现竞争,数据访问同步机制可以用于确保数据访问的同步机制。
数据访问同步机制可以是互斥锁或者是轻量级锁(Latch),Latch是轻量级锁资源,用于快速,短时间的锁定资源,防止多个并发进程同时修改访问某个共享资源。
比如,以数据访问同步机制为Latch机制进行说明,根据历史数据构建对应的候选索引,基于候选索引获取latch,以“锁住”已创建的索引中,与候选索引相同的索引,避免其他进程访问,可以理解的是,如果已创建的索引中,不包括与候选索引相同的索引,则对构建的候选索引进行锁定,然后在latch机制下,异步创建历史数据对应的索引,索引创建完成后释放latch。
通过latch可以保证索引仅处于索引存在或者索引不存在的其中一种状态下,避免同/异步任务之间的冲突。Latch的IO成本较低,因此索引构建引入Latch的开销实际很低,并且在数据回填完成后就不再需要引入latch了。
而对于用于标记索引已被删除的标识,可以在数据回填完成后通过异步任务将其回收,减少对内存的占用,即在一实施例中,步骤“针对历史数据,若已创建的索引中不包括历史数据对应的索引,则异步创建历史数据对应的索引”之后,本申请实施例提供的索引创建方法具体还可以包括:
若历史数据的索引创建完成,则对已创建的索引中被标记为已删除状态的索引进行删除处理。
如果历史数据的索引创建完成,则对已创建的索引中被标记为已删除状态的索引进行删除处理。
在数据回填完成之后,则不存在与创建在线写入数据的索引,异步的索引创建任务,再接收到在线写入的目标数据时,对于被更新数据,直接从已创建的索引中删除被更新数据的索引,并创建目标数据的索引即可,不再对其索引标记为已被删除状态,也需要通过latch锁定索引。
由上可知,本申请实施例通过接收针对数据库的索引创建请求,数据库中包括在接收到索引创建指令之前写入的历史数据;根据索引创建请求,对在线写入数据库的目标数据创建对应的索引,目标数据包括更新数据和新增数据中的至少一种,更新数据用于对数据库中的被更新数据进行更新;若目标数据为更新数据,则对已创建的索引中与目标数据对应的被更新数据的索引标记为已被删除状态;针对历史数据,若已创建的索引中不包括历史数据对应的索引,则异步创建历史数据对应的索引。
本申请实施例通过标记已被删除状态,标识数据不可再用,替代删除操作,使异步创建历史数据的索引时,可以确定索引是不存在还是被删除,避免对历史数据创建的索引,与在线写入的目标数据对应的索引产生冲突,从而不需要暂停在线写入,实现数据库可持续在线写入,使数据库中的数据可以及时更新,保证数据库中数据的准确性。
为了便于更好地实施本申请实施例提供的索引创建方法,在一实施例中还提供了一种索引创建装置。其中名词的含义与上述索引创建方法中相同,具体实现细节可以参考方法实施例中的说明。
该索引创建装置具体可以集成在计算机设备中,如图3所示,该索引创建装置可以包括:接收单元301、同步创建单元302、标记单元303和异步创建单元304,具体如下:
(1)接收单元301,用于接收针对数据库的索引创建请求,数据库中包括在接收到索引创建指令之前写入的历史数据。
(2)同步创建单元302,用于根据索引创建请求,对在线写入数据库的目标数据创建对应的索引,目标数据包括更新数据和新增数据中的至少一种,更新数据用于对数据库中的被更新数据进行更新。
在一实施例中,同步创建索引单元302,包括:
目标列确定子单元,用于根据索引创建请求确定目标数据表中用于创建索引的目标列;
数据获取子单元,用于获取在线写入目标数据表的目标数据关于目标列的列数据;
同步索引创建子单元,用于根据目标数据关于目标列的列数据,创建目标数据的索引。
在一实施例中,数据获取子单元,包括:
列确定模块,用于若目标数据为更新数据,则确定基于目标数据对目标数据表中的被更新数据所更新的列;
列数据获取模块,用于若被更新数据所更新的列包括目标列,则获取在线写入目标数据表的目标数据关于目标列的列数据。
(3)标记单元303,用于若目标数据为更新数据,则对已创建的索引中与目标数据对应的被更新数据的索引标记为已被删除状态。
在一实施例中,标记单元303,包括:
索引构建子单元,用于若目标数据为更新数据,则对被更新数据构建索引,得到候选索引;
查询子单元,用于根据候选索引对已创建的索引进行查询;
第一删除标记子单元,用于若已创建的索引中包括与候选索引相同的目标索引,则将目标索引标记为已被删除状态。
在一实施例中,标记单元303,包括:
候选索引创建子单元,用于若已创建的索引中不包括与候选索引相同的目标索引,则基于候选索引创建被更新数据对应的索引;
第二删除标记子单元,用于将基于候选索引创建的索引标记为已被删除状态。
(4)异步创建单元304,用于针对历史数据,若已创建的索引中不包括历史数据对应的索引,则异步创建历史数据对应的索引。
在一实施例中,异步创建单元304,包括:
异步索引构建子单元,用于根据历史数据构建对应的候选索引;
异步索引创建子单元,用于若已创建的索引中不包括候选索引,则在数据访问同步下,异步创建历史数据对应的索引,数据访问同步机制用于阻止与历史数据对应的索引被其他创建索引的进程访问。
在一实施例中,索引创建装置还包括:
删除处理单元,用于若历史数据的索引创建完成,则对已创建的索引中被标记为已删除状态的索引进行删除处理。
由上可知,本申请实施例索引创建装置通过接收单元301接收针对数据库的索引创建请求,数据库中包括在接收到索引创建指令之前写入的历史数据;同步创建单元302根据索引创建请求,对在线写入数据库的目标数据创建对应的索引,目标数据包括更新数据和新增数据中的至少一种,更新数据用于对数据库中的被更新数据进行更新;若目标数据为更新数据,则标记单元303对已创建的索引中与目标数据对应的被更新数据的索引标记为已被删除状态;异步创建单元304针对历史数据,若已创建的索引中不包括历史数据对应的索引,则异步创建历史数据对应的索引。
本申请实施例通过标记已被删除状态,标识数据不可再用,替代删除操作,使异步创建历史数据的索引时,可以确定索引是不存在还是被删除,避免对历史数据创建的索引,与在线写入的目标数据对应的索引产生冲突,从而不需要暂停在线写入,实现数据库可持续在线写入,使数据库中的数据可以及时更新,保证数据库中数据的准确性。
本申请实施例还提供一种计算机设备,该计算机设备可以是终端,也可以是服务器,如图4所示,其示出了本申请实施例所涉及的计算机设备的结构示意图,具体来讲:
该计算机设备可以包括一个或者一个以上处理核心的处理器1001、一个或一个以上计算机可读存储介质的存储器1002、电源1003和输入单元1004等部件。本领域技术人员可以理解,图4中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器1001是该计算机设备的控制中心,利用各种接口和线路连接整个计算机设备的各个部分,通过运行或执行存储在存储器1002内的软件程序和/或模块,以及调用存储在存储器1002内的数据,执行计算机设备的各种功能和处理数据,从而对计算机设备进行整体监控。可选的,处理器1001可包括一个或多个处理核心;优选的,处理器1001可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和计算机程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1001中。
存储器1002可用于存储软件程序以及模块,处理器1001通过运行存储在存储器1002的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器1002可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的计算机程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器1002可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器1002还可以包括存储器控制器,以提供处理器1001对存储器1002的访问。
计算机设备还包括给各个部件供电的电源1003,优选的,电源1003可以通过电源管理系统与处理器1001逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源1003还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该计算机设备还可包括输入单元1004,该输入单元1004可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,计算机设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,计算机设备中的处理器1001会按照如下的指令,将一个或一个以上的计算机程序的进程对应的可执行文件加载到存储器1002中,并由处理器1001来运行存储在存储器1002中的计算机程序,从而实现各种功能,如下:
接收针对数据库的索引创建请求,数据库中包括在接收到索引创建指令之前写入的历史数据;
根据索引创建请求,对在线写入数据库的目标数据创建对应的索引,目标数据包括更新数据和新增数据中的至少一种,更新数据用于对数据库中的被更新数据进行更新;
若目标数据为更新数据,则对已创建的索引中与目标数据对应的被更新数据的索引标记为已被删除状态;
针对历史数据,若已创建的索引中不包括历史数据对应的索引,则异步创建历史数据对应的索引。
以上各个操作的具体实施可参见前面的实施例,在此不作赘述。
由上可知,本申请实施例的计算机设备可以通过接收针对数据库的索引创建请求,数据库中包括在接收到索引创建指令之前写入的历史数据;根据索引创建请求,对在线写入数据库的目标数据创建对应的索引,目标数据包括更新数据和新增数据中的至少一种,更新数据用于对数据库中的被更新数据进行更新;若目标数据为更新数据,则对已创建的索引中与目标数据对应的被更新数据的索引标记为已被删除状态;针对历史数据,若已创建的索引中不包括历史数据对应的索引,则异步创建历史数据对应的索引。
本申请实施例通过标记已被删除状态,标识数据不可再用,替代删除操作,使异步创建历史数据的索引时,可以确定索引是不存在还是被删除,避免对历史数据创建的索引,与在线写入的目标数据对应的索引产生冲突,从而不需要暂停在线写入,实现数据库可持续在线写入,使数据库中的数据可以及时更新,保证数据库中数据的准确性。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例中各种可选实现方式中提供的方法。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过计算机程序来完成,或通过计算机程序控制相关的硬件来完成,该计算机程序可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请实施例提供一种计算机可读存储介质,其中存储有计算机程序,该计算机程序,能够被处理器进行加载,以执行本申请实施例所提供的任一种索引创建方法。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该计算机可读存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该计算机可读存储介质中所存储的计算机程序,可以执行本申请实施例所提供的任一种索引创建方法,因此,可以实现本申请实施例所提供的任一种索引创建方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上对本申请实施例所提供的一种索引创建方法、装置、计算机设备和计算机可读存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种索引创建方法,其特征在于,包括:
接收针对数据库的索引创建请求,所述数据库中包括在接收到所述索引创建指令之前写入的历史数据;
根据所述索引创建请求,对在线写入所述数据库的目标数据创建对应的索引,所述目标数据包括更新数据和新增数据中的至少一种,所述更新数据用于对所述数据库中的被更新数据进行更新;
若所述目标数据为更新数据,则对已创建的索引中与所述目标数据对应的被更新数据的索引标记为已被删除状态;
针对所述历史数据,若已创建的索引中不包括所述历史数据对应的索引,则异步创建所述历史数据对应的索引。
2.根据权利要求1所述的方法,其特征在于,所述若所述目标数据为更新数据,则对已创建的索引中与所述目标数据对应的被更新数据的索引标记为已被删除状态,包括:
若所述目标数据为更新数据,则对所述被更新数据构建索引,得到候选索引;
根据所述候选索引对所述已创建的索引进行查询;
若已创建的索引中包括与所述候选索引相同的目标索引,则将所述目标索引标记为已被删除状态。
3.根据权利要求2所述的方法,其特征在于,所述根据所述候选索引对所述已创建的索引进行查询之后,所述方法还包括:
若已创建的索引中不包括与所述候选索引相同的目标索引,则基于所述候选索引创建所述被更新数据对应的索引;
将基于所述候选索引创建的索引标记为已被删除状态。
4.根据权利要求1所述的方法,其特征在于,所述针对所述历史数据,若已创建的索引中不包括所述历史数据对应的索引,则异步创建所述历史数据对应的索引,包括:
根据所述历史数据构建对应的候选索引;
若所述已创建的索引中不包括所述候选索引,则在数据访问同步机制下,异步创建所述历史数据对应的索引,所述数据访问同步机制用于阻止与所述历史数据对应的索引被其他创建索引的进程访问。
5.根据权利要求1所述的方法,其特征在于,所述针对所述历史数据,若已创建的索引中不包括所述历史数据对应的索引,则异步创建所述历史数据对应的索引之后,所述方法还包括:
若所述历史数据的索引创建完成,则对已创建的索引中被标记为已删除状态的索引进行删除处理。
6.根据权利要求1所述的方法,其特征在于,所述索引创建请求针对于所述数据库中的目标数据表,所述根据所述索引创建请求,对在线写入所述数据库的目标数据创建对应的索引,包括:
根据所述索引创建请求确定所述目标数据表中用于创建索引的目标列;
获取在线写入所述目标数据表的目标数据关于所述目标列的列数据;
根据所述目标数据关于所述目标列的列数据,创建所述目标数据的索引。
7.根据权利要求6所述的方法,其特征在于,所述获取在线写入所述目标数据表的目标数据关于所述目标列的列数据,包括:
若所述目标数据为更新数据,则确定基于所述目标数据对所述目标数据表中的被更新数据所更新的列;
若所述被更新数据所更新的列包括所述目标列,则获取在线写入所述目标数据表的目标数据关于所述目标列的列数据。
8.一种索引创建装置,其特征在于,包括:
接收单元,用于接收针对数据库的索引创建请求,所述数据库中包括在接收到所述索引创建指令之前写入的历史数据;
同步创建单元,用于根据所述索引创建请求,对在线写入所述数据库的目标数据创建对应的索引,所述目标数据包括更新数据和新增数据中的至少一种,所述更新数据用于对所述数据库中的被更新数据进行更新;
标记单元,用于若所述目标数据为更新数据,则对已创建的索引中与所述目标数据对应的被更新数据的索引标记为已被删除状态;
异步创建单元,用于针对所述历史数据,若已创建的索引中不包括所述历史数据对应的索引,则异步创建所述历史数据对应的索引。
9.一种计算机设备,其特征在于,包括存储器和处理器;所述存储器存储有计算机程序,所述处理器用于运行所述存储器内的计算机程序,以执行权利要求1至7任一项所述的索引创建方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储计算机程序,所述计算机程序被处理器加载,以执行权利要求1至7任一项所述的索引创建方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311033961.8A CN117725052A (zh) | 2023-08-16 | 2023-08-16 | 索引创建方法、装置、计算机设备和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311033961.8A CN117725052A (zh) | 2023-08-16 | 2023-08-16 | 索引创建方法、装置、计算机设备和计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117725052A true CN117725052A (zh) | 2024-03-19 |
Family
ID=90209424
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311033961.8A Pending CN117725052A (zh) | 2023-08-16 | 2023-08-16 | 索引创建方法、装置、计算机设备和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117725052A (zh) |
-
2023
- 2023-08-16 CN CN202311033961.8A patent/CN117725052A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110597595B (zh) | 多语言信息的提供方法、配置方法、装置、设备和介质 | |
CN106874281B (zh) | 实现数据库读写分离的方法和装置 | |
CN114780252A (zh) | 数据仓库系统的资源管理方法及装置 | |
US8527478B1 (en) | Handling bulk and incremental updates while maintaining consistency | |
CN110908644B (zh) | 状态节点的配置方法、装置、计算机设备和存储介质 | |
CN113051279A (zh) | 数据消息的存储方法、存储装置、电子设备及存储介质 | |
CN109165259B (zh) | 基于网络附属存储的索引表更新方法、处理器及存储装置 | |
CN107391539A (zh) | 事务处理方法、服务器和存储介质 | |
CN117725052A (zh) | 索引创建方法、装置、计算机设备和计算机可读存储介质 | |
CN115113989B (zh) | 事务执行方法、装置、计算设备及存储介质 | |
CN115617797A (zh) | 一种业务元数据字段动态拓展方法、电子设备及存储介质 | |
CN115455006A (zh) | 数据处理方法、数据处理装置、电子设备及存储介质 | |
CN113157722A (zh) | 一种数据处理方法、装置、服务器、系统及存储介质 | |
CN114385657A (zh) | 数据存储方法、装置及存储介质 | |
CN114564924A (zh) | 数据插入方法、装置、设备及存储介质 | |
CN113434938A (zh) | Bim模型的检查方法、装置、计算机设备及存储介质 | |
CN112559568A (zh) | 一种虚拟物品确定方法、装置及计算机可读存储介质 | |
CN110297898A (zh) | 异步编译方法及装置 | |
CN110347333A (zh) | 提高克隆镜像性能的方法、装置、计算机设备及存储介质 | |
CN117931095B (zh) | 地图数据存储方法、装置、电子设备和存储介质 | |
CN114253944B (zh) | 数据库双向同步方法、装置和电子设备 | |
CN113760860B (zh) | 一种数据读取方法和装置 | |
US11836121B1 (en) | Delta merge with location data | |
CN117171419B (zh) | 内容处理方法、装置、电子设备、存储介质及程序产品 | |
CN111241042B (zh) | 一种基于Etcd的分布锁实现方法、系统及设备 |
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 |