CN106970937B - 一种基于本地缓存快速建立索引的方法及*** - Google Patents
一种基于本地缓存快速建立索引的方法及*** Download PDFInfo
- Publication number
- CN106970937B CN106970937B CN201710072166.8A CN201710072166A CN106970937B CN 106970937 B CN106970937 B CN 106970937B CN 201710072166 A CN201710072166 A CN 201710072166A CN 106970937 B CN106970937 B CN 106970937B
- Authority
- CN
- China
- Prior art keywords
- cache
- data
- block
- cache block
- local
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- 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/2455—Query execution
- G06F16/24552—Database cache management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种基于本地缓存快速建立索引的***,包括基础信息中心、调度中心、资源作业读取器、本地缓存构建器、数据缓冲队列和索引数据提交器;由调度中心按照基础信息中心中存储的任务时间,对任务进行发起;资源作业读取器按照数据源从数据库中读取数据至本地缓存构建器,由本地缓存构建器完成数据在本地的缓存;所述基础信息中心,用于存储缓存构建和更新任务的基础信息;所述调度中心依赖基础信息中心配置的任务时间,定时地执行任务,并从基础信息中心获取任务运行所依赖的基础信息;所述本地缓存构建器,用于负责本地缓存的管理;所述数据缓冲队列用于存放从本地缓存读入的数据。
Description
技术领域
本发明属于电子商务搜索技术领域,具体涉及一种通过本地缓存优化提升搜索索引更新的方法及***。
背景技术
当下电商平台的火热,对于商家来说,希望将越来越多的产品发布至电商平台,对于消费者也希望在电商平台中快速精准的发现自己需要的商品;而对于电商平台而言,要满足商家和消费者的需求,通常在技术层面上会建立一种快速索引商品的机制,而传统完全依赖数据更新商品索引数据已经很难满足电商搜索平台快速高效的索引任务。
随着人们对电商搜索平台商品及时性要求越来越高,目前市面上的搜索***通常将索引更新任务拆分为增量更新和全量更新两个阶段,通常面对大部分场景,通过增量更新获取数据库中的增量数据更新至搜索平台索引***中,足以解决大部分索引数据及时性的问题。但是对于搜索***中的索引的重建任务有时候也是必不可少的,当数据日益增长,每做一次重建搜索平台索引的任务,耗时也越来越长,同时对数据库的压力也很大。
目前大部分的电商平台的搜索***中,如果要对产品信息进行检索,大致需要经历如下几个步骤:
(1)从数据库中读取需要索引的产品信息;
(2)对产品信息中的各个字段(如:产品名称、产品关键词、产品属性…)进行分词,然后将写入索引中。由于B2C、B2B电商平台的差异,对产品信息进行分词也会采用不同的分词器,简单一点可能采用开源的分词器组件,如果要精准一点则需要再多花一些心思,一般的电商平台都会有自己的分词词库;
(3)用户的检索阶段,对用于的搜索词进行分词,将搜索词分词后的结果拿到搜索索引中进行查找合并排序,最终将结果返回至前端浏览器;
我们对步骤(2)做一下分析,索引的核心在于对各个字段进行分词存储,那么问题来了,对哪些进行索引,对字段如何分词,这些都是随时会发生变化的:业务上可能过几天需要添加一个索引字段;业务上可能过几天就接收到客户反馈,觉得某些词的搜索结果不精准;近期分词技术上又有了新的突破,分词算法需要调整;
上述种种因素都可能引起索引数据的全量更新,试想一下,如果我们数据库中有2000万的数据,同时这个数据库也在被电商平台的产品列表页所使用,发生一次重建需要10个小时,那么这10个小时内,首先是对数据产生了一定的压力,再者间接的影响了电商平台的产品列表页。
对于这样一个问题,现有的解决方案通常会选择一个访问量的低谷,即前台流量不大,数据库压力偏低的时间段进行索引的重建,所以很多迫切需要重建搜索平台索引的需求就无法得到满足。因而,如何实现任何时候重建搜索平台索引且又不影响数据库性能成了当前迫切需要解决的问题。
发明内容
为解决现有技术存在的局限性和不足,本发明的目的是,通过缓存段和缓存块构建本地缓存结构,将数据库表中的数据全部按照本地缓存结构进行数据存储;当搜索平台需要对所有数据重新写入索引时,按照缓存块在缓存段中的顺序依次读取数据进内存供搜索平台使用,解决搜索平台重建搜索索引对数据库强依赖的问题,降低重建索引对数据库的压力,保证在任意时刻有索引重建需求时都能进行重建索引的任务,提升了重建索引的效率。
本发明技术方案为:一种基于本地缓存快速建立索引的***,具体包括:基础信息中心、调度中心、资源作业读取器、本地缓存构建器、数据缓冲队列和索引数据提交器;由调度中心按照基础信息中心中存储的任务时间,对任务进行发起;资源作业读取器按照数据源从数据库中读取数据至本地缓存构建器,由本地缓存构建器完成数据在本地的缓存;
所述基础信息中心,用于存储缓存构建和更新任务的基础信息:本地缓存冲重建时间、搜索平台索引和本地缓存更新时间、搜索平台索引重建的时间、任务执行需要的数据源信息、任务执行需要的SQL数据、当前任务的状态(分为挂起和未挂起)、搜索平台索引和本地缓存上一次成功更新的时间、任务更新历史明细信息;
所述调度中心依赖基础信息中心配置的任务时间,定时地执行任务,并从基础信息中心获取任务运行所依赖的基础信息。
所述本地缓存构建器,用于负责本地缓存的管理,包括缓存段数量的决策、数据记录所属缓存段的查找和构建、缓存块查找、读取及更新、缓存块段索引构建及更新、缓存段元信息更新。
所述资源作业读取器用于从数据库或者本地缓存构建器中读取数据资源,并提交给数据缓冲队列;
所述数据缓冲队列用于存放从本地缓存读入的数据,并在搜索平台索引更新时,由所述索引数据提交器读取至搜索平台,实现资源作业读取器和索引数据提交器之间的隔离;
任务由所述调度中心按照基础信息中心中存储的任务时间,对缓存构建、缓存重建、缓存更新、搜索平台索引更新这四个任务主动发起;所述资源作业读取器根据数据源信息从数据库中读取数据至本地缓存构建器,由本地缓存构建器完成数据在缓存段和缓存块中的存储;
基于一种基于本地缓存快速建立索引的***,本发明还提供一种基于本地缓存快速建立索引的方法,通过缓存段和缓存块构建本地缓存结构,将数据库表中的数据全部按照本地缓存结构进行数据存储;当搜索平台需要对所有数据重新写入索引时,按照缓存块在缓存段中的顺序依次读取数据进内存供搜索平台使用,具体步骤包括:
步骤1:任务定义:将任务基本信息配置入基础信息中心中,用于任务执行是从基础信息中心中调取数据源及数据库信息,同时添加该任务至调度中心;所述任务是指缓存构建、缓存重建、缓存更新、搜索平台索引更新这四大任务;任务的基本信息主要包括任务时间及状态、任务执行所需的数据源、任务执行所需的SQL数据、任务更新历史明细、搜索平台索引或本地缓存上一次成功更新的时间;
步骤2:调度中心根据不同任务在基础信息中心中的时间配置,发起本地缓存初始化构建工作,包括缓存段和缓存块的数量分配和结构设置;本地缓存初始化由调度中心发起,资源作业读取器从数据库中遍历读取数据表进本地,将每一条数据记录按照预设的缓存段和缓存存储在本地,其中缓存块位于缓存段中,数据库表分布存储在缓存段中,数据记录分布存储在缓存块中;
步骤3:本地缓存更新及索引更新:当数据库更新时,本地缓存和搜索***索引做相应的数据更新;更新任务由调度中心发起,先由资源作业读取器从数据库表中读取增量更新数据,通过本地缓存构建器进行本地缓存更新;本地缓存更新完成后,资源作业读取器能跨过数据库,直接从本地读取缓存块数据至数据缓冲队列,供索引数据提交器提交至搜索平台进行索引更新;
步骤4:索引重建:增量数据记录全部成功更新至缓存段中后,资源作业读取器通过本地缓存构建器,从缓存端中读取缓存块内容写入数据缓存队列;本地缓存构建器在读缓存段中的缓存块数据时,以数据记录为读取单位,先从数据记录的初始缓存块开始读,并依次按照缓存块的下一个缓存块号读取数据,直至读完数据记录的所有缓存块后,再去读取下一个数据记录的缓存块;之后再由索引数据提交器从数据缓存队列中读取内容至搜索平台,完成索引的重建;
步骤2:按照任务的基本信息在本地进行本地缓存的初始化构建,包括缓存段和缓存块的数量分配和结构设置;本地缓存初始化由调度中心发起,本地缓存初始化由调度中心发起,资源作业读取器从数据库中遍历读取数据表进本地,将每一条数据记录按照预设的缓存段和缓存存储在本地,其中缓存块位于缓存段中,数据库表分布存储在缓存段中,数据记录分布存储在缓存块中;具体流程包括:
步骤2-1:调度中心发起本地缓存初始化工作,并从基础信息中心获取本地缓存初始化需要的数据源及SQL信息;
步骤2-2:资源作业读取器根据数据源和SQL信息读取数据库表,并计算数据库表的数据总量;本地缓存构建器根据数据表的数据量分配相应数目的缓存段;
所述缓存段的数据量预先定义,用于存储数据库表中部分记录的数据量;
所述缓存段的数目=数据库表的数据总量/一条缓存段的数据量
步骤2-3:资源作业读取器遍历读取数据库表中的记录,将读取出的一条记录提交给本地缓存构建器;本地缓存构建器利用Hash取模的方法,根据记录的主键值判断本条记录在本地缓存中所属的缓存段;
步骤2-4:根据步骤2-3中遍历到的记录数据量,本地缓存构建器按照缓存块预设大小,将一条记录的数据拆分并分配存储在缓存块中;所述缓存块存在于步骤2-3经确认的缓存段中;本地缓存构建器更新缓存块的信息,包括数据位、记录内部序号、数据信息长度、下一个缓存块号;
所述数据拆分数=数据需要的缓存块数=记录数据量/一条缓存块的数据量
所述数据位是数据存储的位置;
所述记录内部序号,用于标示在缓存数据遍历读取过程中已读过缓存块;记录内部序号以一条数据记录为单位,对该数据记录所分布的缓存块进行排序;
所述数据信息长度,用于记录实际存入缓存块中的数据量;
所述下一个缓存块号,用于标示在缓存数据遍历读取过程中下一个要读取的缓存块;
特别地,一条记录按照缓存块大小分布在一个缓存块或多个缓存块中;缓存块在缓存段中依次排列,用于存储数据库表中某一条记录的部分数据;
特别地,在数据读取时,依次将缓存块从本地缓存读入内存中,通过对缓存块整合,拼接成完整数据;
步骤2-5:本地缓存构建器更新缓存段的元信息,主要是包括缓存块计数器、与记录对应的缓存块索引;其中,所述缓存块计数器用于定位缓存段中最后一个缓存块的位置;所述缓存块索引用于建立某一条记录主键和该记录的起始缓存块之间的对应关系,能准确定位某一条记录的初始缓存块的位置;
步骤2-6:依次重复步骤2-3-步骤2-5,直到资源作业读取器遍历读取完数据库表中的所有记录,并提交本地缓存构建器进行这条记录在本地的缓存;
步骤3:当数据库更新时,本地缓存和搜索***索引做相应的数据更新;更新任务由调度中心发起,先由资源作业读取器从数据库表中读取增量更新数据,通过本地缓存构建器进行本地缓存更新;本地缓存更新完成后,资源作业读取器能跨过数据库,直接从本地读取缓存块数据至数据缓冲队列,供索引数据提交器提交至搜索平台进行索引更新;具体步骤包括:
步骤3-1:调度中心发起本地缓存和索引更新任务,并从基础信息中心获取与缓存、索引更新需要相关的基础信息,具体包括:任务注册时的数据源、上一次索引更新时间、SQL数据;同时根据上一次索引更新时间获取增量SQL数据;
步骤3-2:资源作业读取器遍历数据库表中的增量数据,并将该增量数据提交至本地缓存构建器;本地缓存构建器通过对记录主键的Hash计算,确定记录所属的缓存段;
步骤3-3:根据增量数据的类型,判断本地缓存中是否有相应的缓存块;若增量数据是一条更新数据或是一条删除数据,本地缓存中有存储该增量数据的缓存块;若增量数据是一条新添加数据,本地缓存中没有存储该增量数据的缓存块,需要在步骤3-2确定的缓存段中新建缓存块,存储新添加的数据;
根据不同的增量数据,本地缓存更新根据是否存在相应的缓存块执行不同的更新步骤,若增量数据是一条更新数据,转步骤3-4;若增量数据是一条删除数据,转步骤3-5;若增量数据是一条新添数据,转步骤3-6;
步骤3-4:计算更新数据的数据量,按照缓存块预设大小确定更新数据在本地缓存时需要的缓存块数量,对比更新数据所需缓存块数量和本地缓存中原数据占用的缓存块数量;
若更新数据所需缓存块数量大于原数据占用的缓存块数量,基于原缓存块进行缓存块的扩展,具体包括:(1)根据记录主键,在缓存块索引中定位原数据在本地缓存的缓存段中的初始缓存块;(2)按照原数据占有的每一个缓存块的下一个缓存块号,更新数据依次在缓存块进行数据覆盖,直到原数据的最后一个缓存块;(3)根据缓存段元信息中的缓存块计数器,定位缓存段中的末尾缓存块,并将原数据最后一个缓存块的下一个缓存块号记录为追加在末尾缓存块后的第一个缓存块;(4)按照新增缓存块的数量,更新缓存段元信息中的缓存块计数器,即更新后的缓存块计数器=更新前的缓存计数器+新增缓存块数量;
若更新数据所需缓存块数量小于原数据占用的缓存块数量,抹除多余的缓存块,具体包括:(1)根据记录主键,在缓存块索引中定位原数据在本地缓存的缓存段中的初始缓存块;(2)按照原数据占有的每一个缓存块的下一个缓存块号,更新数据依次在缓存块进行数据覆盖,直至更新数据覆盖结束;(3)根据更新数据所覆盖的最后一个缓存块的下一个缓存块号定位下一个缓存块,并按照每一个缓存块的下一个缓存块号依次清除缓存块的数据位,重置记录内部序号、数据信息长度、下一个缓存块号为-1;
步骤3-5:根据记录主键,通过查询缓存块索引检索本条记录对应的初始缓存块,获取初始缓存块的next-block-id定位第二个缓存块;抹除初始缓存块的数据,更新初始缓存块的记录内部序号、数据信息长度、下一个缓存块号为-1;获取第二个缓存块的下一个缓存块号,定位第三个缓存块;抹除第二个缓存块的数据,更新初始缓存块的记录内部序号、数据信息长度、下一个缓存块号为-1;按照上述的缓存块数据抹除步骤进行循环,直到抹除当前next-block-id为-1的缓存块,同时更新缓存块的记录内部序号、数据信息长度、下一个缓存块号为-1,至此完成缓存块的数据清除;最后在缓存块索引中删除记录主键与block-id(初始缓存块)的映射关系;
步骤3-6:计算当前新添数据的数据量,根据缓存块预设大小确定新添数据在本地缓存时需要的缓存块数量;获取步骤3-2中已确定缓存段的元信息(meta信息),根据缓存块计数器定位缓存段中末尾缓存块,并在末尾缓存块后追加同等数量的缓存块;更新缓存块计数器,同时建立新添数据的记录主键与新添数据对应的第一个缓存块之间的映射关系,即更新缓存块索引;
步骤4:增量数据记录全部成功更新至缓存段中后,资源作业读取器通过本地缓存构建器,从缓存块中读取缓存块内容写入数据缓存队列,再由索引数据提交器从数据缓存队列中读取内容至搜索平台,完成索引的重建;
特别地,本地缓存构建器在读缓存段中的缓存块数据时,以数据记录为读取单位,先从数据记录的初始缓存块开始读,并依次按照缓存块的下一个缓存块号读取数据,直至读完数据记录的所有缓存块后,再去读取下一个数据记录的缓存块;
所述步骤2中的一条数据记录按照缓存块大小分布在一个缓存块或多个缓存块中;缓存块在缓存段中依次排列,用于存储数据库表中某一条记录的部分数据;在数据读取时,资源作业读取器依次将缓存块从本地缓存读入内存中,通过对缓存块整合,拼接成完整数据;
在步骤3中,若更新数据所需缓存块数量大于原数据占用的缓存块数量,基于原缓存块进行缓存块的扩展,具体包括:(1)根据记录主键,在缓存块索引中定位原数据在本地缓存的缓存段中的初始缓存块;(2)按照原数据占有的每一个缓存块的下一个缓存块号,更新数据依次在缓存块进行数据覆盖,直到原数据的最后一个缓存块;(3)根据缓存段元信息中的缓存块计数器,定位缓存段中的末尾缓存块,并将原数据最后一个缓存块的下一个缓存块号记录为追加在末尾缓存块后的第一个缓存块;(4)按照新增缓存块的数量,更新缓存段元信息中的缓存块计数器,即更新后的缓存块计数器=更新前的缓存计数器+新增缓存块数量;
在步骤3中,若更新数据所需缓存块数量小于原数据占用的缓存块数量,抹除多余缓存块中的数据,具体包括:(1)根据记录主键,在缓存块索引中定位原数据在本地缓存的缓存段中的初始缓存块;(2)按照原数据占有的每一个缓存块的下一个缓存块号,更新数据依次在缓存块进行数据覆盖,直至更新数据覆盖结束;(3)根据更新数据所覆盖的最后一个缓存块的下一个缓存块号定位下一个缓存块,并按照每一个缓存块的下一个缓存块号依次清除缓存块的数据位,重置记录内部序号、数据信息长度、下一个缓存块号为-1。
本发明的有益效果,与现有技术相比,其显著优点以及形成的效果:
(1)本发明通过缓存段和缓存块构建本地缓存结构,数据库表分布在多个缓存段中,数据库中每一条记录分布在多个缓存块中,形成以“缓存块为主,缓存段为辅”的数据存储结构,数据的读写以缓存块为单位进入内存,降低大量数据读写对数据库的压力,节省了网络开销;
(2)本发明通过本地缓存能按时根据数据库表更新进行缓存数据更新,当搜索平台需要对所有数据重新写入索引时,按照缓存块在缓存段中的顺序依次读取数据进内存供搜索平台使用,解决搜索平台重建搜索索引对数据库强依赖的问题,保证在任意时刻有索引重建需求时都能进行重建索引的任务,提升了重建索引的效率。
附图说明
图1为本发明实施例中一种基于本地缓存快速建立索引的***结构图;
图2为本发明实施例中本地缓存结构示意图;
图3为本发明实施例中缓存块结构示意图;
图4为本发明实施例中本地缓存重建流程示意图;
图5为本发明实施例中本地缓存更新流程示意图;
图6为本发明实施例中缓存段中缓存块排列图;
图7为本发明实施例中索引重建的流程示意图;
具体实施方式
为了使得本发明的目的、技术方案和有点更加清楚,下面结合附图和具体实施对本发明进行详细描述。
图1为本发明实施例中一种基于本地缓存快速建立索引的***结构图,具体包括基础信息中心101、调度中心102、资源作业读取器103、本地缓存构建器104、数据缓冲队列105和索引数据提交器106组成;
基础信息中心101接受任务基础信息配置,调度中心102接受任务的注册,调度中心会完成writer-pool、数据缓冲队列105、reader-pool的初始化工作。当完成包括任务定义及任务配置的初始化工作后,调度中心102实时监测当前是否需要任务执行;
当有任务需要执行时,调度中心102首先判定任务的类型(本地缓存重建任务、索引/缓存更新任务、索引重建任务),根据任务类型确定资源作业读取器的资源读取位置:如果是本地缓存重建任务,那么调度中心102从数据库中读取数据直接提交给本地缓存构建器104,由本地缓存构建器104执行本地缓存初始化构建工作;如果是索引更新任务,调度中心102从数据库中读取到数据后,一是提交给本地缓存构建器104进行本地缓存的更新,二是写入数据缓存队列105中,再由索引数据提交器106从数据缓存队列105中读取数据,批量地提交至搜索平台进行索引的更新;如果是索引重建任务,调度中心102直接从本地缓存构建器104读取数据提交给提交至数据缓存队列105,索引数据提交器106从数据缓存队列105读取数据,批量地提交给搜索平台进行索引的重建。
图2为本发明实施例中本地缓存结构示意图;本地缓存主要ID Hash模块、缓存段(图中以“segment”表示)、缓存块索引、缓存块(图中以“block”表示)、缓存段元信息组成;缓存块在缓存段中依次排列;
所述ID Hash模板是用于根据某条数据记录的主键,定位该数据在本地缓存中所属缓存段;所述缓存段用于存储数据库表中部分数据记录的数据量;所述缓存块存在于缓存段中,用于存储数据记录;根据缓存块预设的数据量大小,一条记录按照缓存块大小分布在一个缓存块或多个缓存块中;所述缓存块索引用于建立某一条记录主键和该记录的起始缓存块之间的对应关系,能准确定位某一条记录的初始缓存块的位置;
所述缓存段元信息主要是包括缓存块计数器、与记录对应的缓存块索引;其中,所述缓存块计数器用于定位缓存段中最后一个缓存块的位置;所述缓存块索引用于建立某一条记录主键和该记录的起始缓存块之间的对应关系,能准确定位某一条记录的初始缓存块的位置;
缓存块是本地缓存中核心结构,如图3所示,缓存块主要由数据位、主要由数据位、记录内编号、数据长度、下一块缓存块号,其中通过该结构设计可以快速的将一条记录的多个块进行拼接解析。所述数据位是存储数据的位置;所述记录内部序号,用于标示在缓存数据遍历读取过程中已读过缓存块;记录内部序号以一条数据记录为单位,对该数据记录所分布的缓存块进行排序;所述数据信息长度,用于记录实际存入缓存块中的数据量;所述下一个缓存块号,用于标示在缓存数据遍历读取过程中下一个要读取的缓存块;
在数据读取时,依次将缓存块从本地缓存读入内存中,通过对缓存块整合,拼接成完整数据;
在本发明实施例中,缓存段预设大小为500000条记录,缓存块预设大小为1000bytes,本地缓存重建任务的数据库中有15000000条记录;图4为本发明实施例中本地缓存重建流程示意图,包括:
步骤401:资源作业读取器获取数据库表,经计算数据库的数据量为15000000条记录,按照预设缓存段大小,需要将数据库表的数据分布在30个缓存段中,即所述缓存段的数目=15000000/500000=30个;
步骤402:资源作业读取器遍历读取数据库表中的每一条记录;
步骤403:资源作业读取器判断当前数据库中是否还存在记录;如果没有,则进入步骤404,即表示已经完成缓存的构建;如果还存在记录需要读取,则进入步骤405;
步骤405:根据当前读取数据记录的主键ID值和缓存段数量,进行Hash取模;
步骤406:根据步骤506的Hash取模值,定位该数据记录需要写入的缓存段;
步骤407:假设当前遍历到的数据记录的数据量为1200bytes,按照预设的缓存块大小,计算1200bytes数据记录需要缓存块的数量,即数据需要的缓存块数=1200/1000,约等于2个;
步骤408:填充第1个数据库的数据位,即1200个bytes中的前988(即1000-4-4-4)bytes。
步骤409:填充第一个缓存块的编号位,因为该block为该记录的第1个block,所以该缓存块的记录内部序号为1。
步骤410:填充第一个缓存块的数据长度位,因为第一块数据位被占满,所以值为988;
步骤411:填充第一个缓存块的下一个缓存块号,下一个缓存块块应当该是上一个缓存块的block-id进行加1;
步骤412:第一个缓存填充构建好缓存块后,将数据记录的第一个缓存块写入缓存段中;
步骤413:完成缓存块的写入后,实际缓存段中缓存块数量发生变化,更新缓存段元信息中的缓存块计数器,以便于在本地缓存更新时跳转至缓存段末尾。另外还需要更新缓存块索引,即将记录ID和记录的block-id建立映射;
步骤414:判断当前记录是否需要写下一个缓存块,按照本发明实施例,有2个缓存块需要写下一个缓存块中,进入步骤408完成最后一块的写入;如果已经是最后一块了,那么进入步骤402,继续读取下一条数据记录;
图5为本发明实施例中本地缓存更新流程示意图,具体步骤包括:
步骤501:按照基础信息中心存储的本地缓存上一次成功更新的时间,资源作业读取器从数据库表中遍历读取增量更新的数据,即从上次缓存更新至现在,数据库表中已经变更的数据;
步骤502:资源作业读取器判断增量数据记录是否已经读完;如果已经读完,本地缓存更新已完成;如果没有读完,转步骤503;
步骤503:根据增量数据记录的主键ID和缓存段数量进行Hash取模;
步骤504:按照Hash值,确定该增量数据记录所属缓存段;
步骤505:查询缓存块索引,定位该增量数据记录在缓存段中的初始缓存块;
步骤506:判断增量数据记录的初始缓存块是否存在;若不存在,说明增量数据是一条新添数据,转步骤507;若存在,说明增量数据是一条更新数据,转步骤512;
步骤507:查询缓存段元信息的缓存块计数器,获取缓存段中包含缓存块的总数;
步骤508:根据步骤507得到的缓存段中的缓存块数量,定位至缓存段中末尾缓存块;
步骤509-步骤511:按照缓存块预设大小,将新添数据记录拆分存储在缓存块中,并将新增的缓存块追加在缓存段末尾,具体参考本地缓存构建的步骤408至步骤413;
步骤512:通过缓存块索引定位该更新数据的初始缓存块;
步骤513:在本发明实施例中,增量数据记录原长度为1200bytes,在本地缓存中占据2个缓存块;若更新后该记录的长度为2200bytes,需要3个缓存块,在现有的缓存块数目基础上,需要新增缓存块,进入步骤514;若更新后该记录的长度为500bytes,需要1个缓存块,现有的缓存块数目基础上,需要减少缓存块,进入步骤516。
步骤514:由于更新数据的缓存块数量(即3个)多于原数据的缓存块数量(即2个),更新数据按照缓存块大小,填满原数据的2个缓存块;根据缓存段元信息中的缓存块计数器定位至缓存段末尾,新增1个缓存块存储多余的更新数据;变更原数据的第二个缓存块的数据长度为998,下一个缓存号指向新增缓存块的位置;
步骤515:新增缓存块是更新数据的第三个缓存块,记录内部序号值为“3”,下一个缓存块号为“-1”;
步骤516:更新缓存段元信息中的缓存块计数器;本发明实施例中新增一个缓存块,缓存块计数器增加“1”;转步骤602,资源作业读取器继续读取下一个增量数据;
步骤517:先覆盖记录的第一个block,数据位用实际的500个bytes填充,记录内部编号不变,依然为1,数据长度位即为500,因为更新后只需要一个block,所以block中的下一个block-id即为-1。
步骤518:根据原数据第一个缓存块的下一个缓存号,定位原数据的第2个缓存块,清除该缓存块的数据位,,重置记录内部编号位、数据长度位、下一块编号位为-1;
在本发明实施例中,本地缓存的某一个缓存段中有3条记录,具体为:记录1:{block1,block4};记录2:{block2,block5};记录3:{block3,block6};并按照图6顺序排列在缓存段中;所有缓存块的信息入下表所示:
表:缓存块的信息明细
记录号 | 缓存块号 | 记录内部序号 | 下一个缓存块号 |
记录1 | block1 | 1 | block4 |
记录2 | block2 | 1 | block5 |
记录3 | block3 | 1 | block6 |
记录1 | block4 | 2 | -1 |
记录2 | block5 | 2 | -1 |
记录3 | block6 | 2 | -1 |
当搜索平台索引需要重建时,需要将本地缓存中所有数据重新写入索引,图7为本发明实施例中索引重建的流程示意图,具体步骤包括:
步骤701:重建搜索平台索引要求将所有数据重新写入索引,调度中心发起索引重建任务,资源作业读取器遍历本地缓存中的所有缓存段;
步骤702:判断本地缓存中的缓存段是否都遍历读取完;若全部遍历完,表示索引重建结束;若没有遍历完,资源作业读取器从当前遍历到的缓存段中读取缓存块;
步骤703:资源作业读取器按照“每次读取一条记录”的原则,按缓存块排列顺序,先读取缓存段中第一个缓存块block1;
步骤704:获取block1的下一个缓存块号(即block4),资源作业读取器读取记录1的第二个缓存块block4;
步骤705:获取block4的下一个缓存块号(即-1),此时记录1已全部读取结束,资源作业读取器从记录1的初始缓存块block1开始,读取邻近的缓存块(即block2);
步骤706:判断缓存块block2的记录内部序号,由于block2是记录2的初始缓存块,block2的记录内部序号为“1”;
步骤707:获取block2的下一个缓存号(即block5),资源作业读取器读取记录2的第二个缓存块block5;
步骤708:获取block5的下一个缓存块号(即-1),此时记录2已全部读取结束;
步骤709:当前已读入内存中多个独立的缓存块拼接成完整的数据记录;在本发明实施例中,缓存块block2和缓存块block5拼接成完整的数据记录2;
步骤710:完整的数据记录由资源作业读取器读入数据缓存列表中,再有索引数据提交器传至搜索平台;在本发明实施例中,数据记录2被提交至搜索平台;
步骤711:资源作业读取器从记录2的初始缓存块block2开始,读取邻近的缓存块(即block3);
步骤712:判断邻近缓存块是否存在;如果存在,继续执行步骤711;如果不存在,说明当前缓存段中的所有缓存块已经遍历读取完,转步骤702;在本发明实施例中,block3是记录2的初始缓存块(block2)的邻近缓存块(block3);
步骤713:获取该记录初始缓存块的邻近缓存块的记录内部序号,如若是“1”,继续按照步骤706-步骤708的方法继续读取缓存块;如果非“1”,继续读邻近的缓存块,直到读取的缓存块记录内部序号为1,再按照步骤706-步骤708的方法继续读取缓存块;
本发明还可有其他多种实施方式,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员可根据本发明做出各种相应的改变和变形,这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (6)
1.一种基于本地缓存快速建立索引的***,其特征是,包括基础信息中心、调度中心、资源作业读取器、本地缓存构建器、数据缓冲队列和索引数据提交器;由调度中心按照基础信息中心中存储的任务时间,对任务进行发起;资源作业读取器按照数据源从数据库中读取数据至本地缓存构建器,由本地缓存构建器完成数据在本地的缓存;
所述基础信息中心,用于存储缓存构建和更新任务的基础信息:本地缓存重建时间、搜索平台索引和本地缓存更新时间、搜索平台索引重建的时间、任务执行需要的数据源信息、任务执行需要的SQL数据、分为挂起和未挂起当前任务的状态、搜索平台索引和本地缓存上一次成功更新的时间、任务更新历史明细信息;
所述调度中心依赖基础信息中心配置的任务时间,定时地执行任务,并从基础信息中心获取任务运行所依赖的基础信息;
所述本地缓存构建器,用于负责本地缓存的管理,包括缓存段数量的决策、数据记录所属缓存段的查找和构建、缓存块查找、读取及更新、缓存块段索引构建及更新、缓存段元信息更新;
所述资源作业读取器用于从数据库或者本地缓存构建器中读取数据资源,并提交给数据缓冲队列;
所述数据缓冲队列用于存放从本地缓存读入的数据,并在搜索平台索引更新时,由所述索引数据提交器读取至搜索平台,实现资源作业读取器和索引数据提交器之间的隔离;
所述资源作业读取器根据数据源信息从数据库中读取数据至本地缓存构建器,由本地缓存构建器完成数据在缓存段和缓存块中的存储;
通过缓存段和缓存块构建本地缓存结构,将数据库表中的数据全部按照本地缓存结构进行数据存储;当搜索平台需要对所有数据重新写入索引时,按照缓存块在缓存段中的顺序依次读取数据进内存供搜索平台使用,具体步骤包括:
步骤1:任务定义:将任务基本信息配置入基础信息中心中,用于任务执行是从基础信息中心中调取数据源及数据库信息,同时添加该任务至调度中心;所述任务是指缓存构建、缓存重建、缓存更新、搜索平台索引更新这四大任务;任务的基本信息包括任务时间及状态、任务执行所需的数据源、任务执行所需的SQL数据、任务更新历史明细、搜索平台索引或本地缓存上一次成功更新的时间;
步骤2:调度中心根据不同任务在基础信息中心中的时间配置,发起本地缓存初始化构建工作,包括缓存段和缓存块的数量分配和结构设置;本地缓存初始化由调度中心发起,资源作业读取器从数据库中遍历读取数据表进本地,将每一条数据记录按照预设的缓存段和缓存存储在本地,其中缓存块位于缓存段中,数据库表分布存储在缓存段中,数据记录分布存储在缓存块中;
步骤2具体流程包括:
步骤2-1:调度中心发起本地缓存初始化工作,并从基础信息中心获取本地缓存初始化需要的数据源及SQL信息;
步骤2-2:资源作业读取器根据数据源和SQL信息读取数据库表,并计算数据库表的数据总量;本地缓存构建器根据数据表的数据量分配相应数目的缓存段;
所述缓存段的数据量预先定义,用于存储数据库表中部分记录的数据量;
所述缓存段的数目 = 数据库表的数据总量/一条缓存段的数据量;
步骤2-3:资源作业读取器遍历读取数据库表中的记录,将读取出的一条记录提交给本地缓存构建器;本地缓存构建器利用Hash取模的方法,根据记录的主键值判断本条记录在本地缓存中所属的缓存段;
步骤2-4:根据步骤2-3中遍历到的记录数据量,本地缓存构建器按照缓存块预设大小,将一条记录的数据拆分并分配存储在缓存块中;所述缓存块存在于步骤2-3经确认的缓存段中;本地缓存构建器更新缓存块的信息,包括数据位、记录内部序号、数据信息长度、下一个缓存块号;
数据拆分数=数据需要的缓存块数=记录数据量/一条缓存块的数据量
所述数据位是数据存储的位置;
所述记录内部序号,用于标示在缓存数据遍历读取过程中已读过缓存块;记录内部序号以一条数据记录为单位,对该数据记录所分布的缓存块进行排序;
所述数据信息长度,用于记录实际存入缓存块中的数据量;
所述下一个缓存块号,用于标示在缓存数据遍历读取过程中下一个要读取的缓存块;
一条记录按照缓存块大小分布在一个缓存块或多个缓存块中;缓存块在缓存段中依次排列,用于存储数据库表中某一条记录的部分数据;
在数据读取时,依次将缓存块从本地缓存读入内存中,通过对缓存块整合,拼接成完整数据;
步骤2-5:本地缓存构建器更新缓存段的元信息,包括缓存块计数器、与记录对应的缓存块索引;其中,所述缓存块计数器用于定位缓存段中最后一个缓存块的位置;所述缓存块索引用于建立某一条记录主键和该记录的起始缓存块之间的对应关系,能准确定位某一条记录的初始缓存块的位置;
步骤2-6:依次重复步骤2-3-步骤2-5,直到资源作业读取器遍历读取完数据库表中的所有记录,并提交本地缓存构建器进行这条记录在本地的缓存;
步骤3:本地缓存更新及索引更新:当数据库更新时,本地缓存和搜索***索引做相应的数据更新;更新任务由调度中心发起,先由资源作业读取器从数据库表中读取增量更新数据,通过本地缓存构建器进行本地缓存更新;本地缓存更新完成后,资源作业读取器能跨过数据库,直接从本地读取缓存块数据至数据缓冲队列,供索引数据提交器提交至搜索平台进行索引更新;
步骤4:索引重建:增量数据记录全部成功更新至缓存段中后,资源作业读取器通过本地缓存构建器,从缓存端中读取缓存块内容写入数据缓存队列;本地缓存构建器在读缓存段中的缓存块数据时,以数据记录为读取单位,先从数据记录的初始缓存块开始读,并依次按照缓存块的下一个缓存块号读取数据,直至读完数据记录的所有缓存块后,再去读取下一个数据记录的缓存块;之后再由索引数据提交器从数据缓存队列中读取内容至搜索平台,完成索引的重建。
2.根据权利要求1所述的基于本地缓存快速建立索引的***,其特征是,步骤3具体步骤包括:
步骤3-1:调度中心发起本地缓存和索引更新任务,并从基础信息中心获取与缓存、索引更新需要相关的基础信息,具体包括:任务注册时的数据源、上一次索引更新时间、SQL数据;同时根据上一次索引更新时间获取增量SQL数据;
步骤3-2:资源作业读取器遍历数据库表中的增量数据,并将该增量数据提交至本地缓存构建器;本地缓存构建器通过对记录主键的Hash计算,确定记录所属的缓存段;
步骤3-3:根据增量数据的类型,判断本地缓存中是否有相应的缓存块;若增量数据是一条更新数据或是一条删除数据,本地缓存中有存储该增量数据的缓存块;若增量数据是一条新添加数据,本地缓存中没有存储该增量数据的缓存块,需要在步骤3-2确定的缓存段中新建缓存块,存储新添加的数据;
根据不同的增量数据,本地缓存更新根据是否存在相应的缓存块执行不同的更新步骤,若增量数据是一条更新数据,转步骤3-4;若增量数据是一条删除数据,转步骤3-5;若增量数据是一条新添数据,转步骤3-6;
步骤3-4:计算更新数据的数据量,按照缓存块预设大小确定更新数据在本地缓存时需要的缓存块数量,对比更新数据所需缓存块数量和本地缓存中原数据占用的缓存块数量;
若更新数据所需缓存块数量大于原数据占用的缓存块数量,基于原缓存块进行缓存块的扩展,具体包括:1)根据记录主键,在缓存块索引中定位原数据在本地缓存的缓存段中的初始缓存块;2)按照原数据占有的每一个缓存块的下一个缓存块号,更新数据依次在缓存块进行数据覆盖,直到原数据的最后一个缓存块;3)根据缓存段元信息中的缓存块计数器,定位缓存段中的末尾缓存块;并将原数据最后一个缓存块的下一个缓存块号记录为追加在末尾缓存块后的第一个缓存块;4)按照新增缓存块的数量,更新缓存段元信息中的缓存块计数器,即更新后的缓存块计数器=更新前的缓存计数器+新增缓存块数量;
若更新数据所需缓存块数量小于原数据占用的缓存块数量,抹除多余的缓存块,具体包括:1)根据记录主键,在缓存块索引中定位原数据在本地缓存的缓存段中的初始缓存块;2)按照原数据占有的每一个缓存块的下一个缓存块号,更新数据依次在缓存块进行数据覆盖,直至更新数据覆盖结束;3)根据更新数据所覆盖的最后一个缓存块的下一个缓存块号定位下一个缓存块,并按照每一个缓存块的下一个缓存块号依次清除缓存块的数据位,重置记录内部序号、数据信息长度、下一个缓存块号为-1;
步骤3-5:根据记录主键,通过查询缓存块索引检索本条记录对应的初始缓存块,获取初始缓存块的next-block-id定位第二个缓存块;抹除初始缓存块的数据,更新初始缓存块的记录内部序号、数据信息长度、下一个缓存块号为-1 ;获取第二个缓存块的下一个缓存块号,定位第三个缓存块;抹除第二个缓存块的数据,更新初始缓存块的记录内部序号、数据信息长度、下一个缓存块号为-1 ;按照上述的缓存块数据抹除步骤进行循环,直到抹除当前next-block-id为-1的缓存块,同时更新缓存块的记录内部序号、数据信息长度、下一个缓存块号为-1,至此完成缓存块的数据清除;最后在缓存块索引中删除记录主键与block-id即初始缓存块的映射关系;
步骤3-6:计算当前新添数据的数据量,根据缓存块预设大小确定新添数据在本地缓存时需要的缓存块数量;获取步骤3-2中已确定缓存段的元信息即meta信息,根据缓存块计数器定位缓存段中末尾缓存块,并在末尾缓存块后追加同等数量的缓存块;更新缓存块计数器,同时建立新添数据的记录主键与新添数据对应的第一个缓存块之间的映射关系,即更新缓存块索引。
3.根据权利要求1所述的基于本地缓存快速建立索引的***,其特征是,步骤4:增量数据记录全部成功更新至缓存段中后,资源作业读取器通过本地缓存构建器,从缓存块中读取缓存块内容写入数据缓存队列,再由索引数据提交器从数据缓存队列中读取内容至搜索平台,完成索引的重建;
本地缓存构建器在读缓存段中的缓存块数据时,以数据记录为读取单位,先从数据记录的初始缓存块开始读,并依次按照缓存块的下一个缓存块号读取数据,直至读完数据记录的所有缓存块后,再去读取下一个数据记录的缓存块。
4.根据权利要求1所述的基于本地缓存快速建立索引的***,其特征是,所述步骤2中的一条数据记录按照缓存块大小分布在一个缓存块或多个缓存块中;缓存块在缓存段中依次排列,用于存储数据库表中某一条记录的部分数据;在数据读取时,资源作业读取器依次将缓存块从本地缓存读入内存中,通过对缓存块整合,拼接成完整数据。
5.根据权利要求1所述的基于本地缓存快速建立索引的***,其特征是,在步骤3中,若更新数据所需缓存块数量大于原数据占用的缓存块数量,基于原缓存块进行缓存块的扩展,具体包括:1)根据记录主键,在缓存块索引中定位原数据在本地缓存的缓存段中的初始缓存块;2)按照原数据占有的每一个缓存块的下一个缓存块号,更新数据依次在缓存块进行数据覆盖,直到原数据的最后一个缓存块;3)根据缓存段元信息中的缓存块计数器,定位缓存段中的末尾缓存块,并将原数据最后一个缓存块的下一个缓存块号记录为追加在末尾缓存块后的第一个缓存块;4)按照新增缓存块的数量,更新缓存段元信息中的缓存块计数器,即更新后的缓存块计数器=更新前的缓存计数器+新增缓存块数量。
6.根据权利要求1所述的基于本地缓存快速建立索引的***,其特征是,在步骤3中,若更新数据所需缓存块数量小于原数据占用的缓存块数量,抹除多余缓存块中的数据,具体包括:1)根据记录主键,在缓存块索引中定位原数据在本地缓存的缓存段中的初始缓存块;2)按照原数据占有的每一个缓存块的下一个缓存块号,更新数据依次在缓存块进行数据覆盖,直至更新数据覆盖结束;3)根据更新数据所覆盖的最后一个缓存块的下一个缓存块号定位下一个缓存块,并按照每一个缓存块的下一个缓存块号依次清除缓存块的数据位,重置记录内部序号、数据信息长度、下一个缓存块号为-1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710072166.8A CN106970937B (zh) | 2017-02-08 | 2017-02-08 | 一种基于本地缓存快速建立索引的方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710072166.8A CN106970937B (zh) | 2017-02-08 | 2017-02-08 | 一种基于本地缓存快速建立索引的方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106970937A CN106970937A (zh) | 2017-07-21 |
CN106970937B true CN106970937B (zh) | 2021-01-22 |
Family
ID=59334768
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710072166.8A Active CN106970937B (zh) | 2017-02-08 | 2017-02-08 | 一种基于本地缓存快速建立索引的方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106970937B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108108130A (zh) * | 2017-12-22 | 2018-06-01 | 深圳忆联信息***有限公司 | 一种提升固态硬盘读写性能的方法及固态硬盘 |
CN112286973B (zh) * | 2020-11-19 | 2022-09-30 | 每日互动股份有限公司 | 数据消息的存储方法、装置、计算机设备及存储介质 |
CN113806374A (zh) * | 2021-09-30 | 2021-12-17 | 上海健交科技服务有限责任公司 | 一种面向大数据的数据流式缓存方法及*** |
CN115269648B (zh) * | 2022-07-07 | 2023-08-18 | 浙江恒生长运网络科技有限公司 | 一种批量抽取班次信息的班次查询管控方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5812996A (en) * | 1994-07-12 | 1998-09-22 | Sybase, Inc. | Database system with methods for optimizing query performance with a buffer manager |
CN1272656A (zh) * | 1999-04-30 | 2000-11-08 | 国际商业机器公司 | 内容-索引搜索***和方法 |
CN1522409A (zh) * | 2001-06-09 | 2004-08-18 | 存储交易株式会社 | 用于数据库***的考虑了高速缓存的并行控制方案 |
US8296394B1 (en) * | 2007-04-10 | 2012-10-23 | AT & T Intellectual Property II, LP | Method and system for caching real-time data |
-
2017
- 2017-02-08 CN CN201710072166.8A patent/CN106970937B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5812996A (en) * | 1994-07-12 | 1998-09-22 | Sybase, Inc. | Database system with methods for optimizing query performance with a buffer manager |
CN1272656A (zh) * | 1999-04-30 | 2000-11-08 | 国际商业机器公司 | 内容-索引搜索***和方法 |
CN1522409A (zh) * | 2001-06-09 | 2004-08-18 | 存储交易株式会社 | 用于数据库***的考虑了高速缓存的并行控制方案 |
US8296394B1 (en) * | 2007-04-10 | 2012-10-23 | AT & T Intellectual Property II, LP | Method and system for caching real-time data |
Also Published As
Publication number | Publication date |
---|---|
CN106970937A (zh) | 2017-07-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10303596B2 (en) | Read-write control method for memory, and corresponding memory and server | |
CN107391653B (zh) | 一种分布式NewSQL数据库***及图片数据储存方法 | |
CN106970937B (zh) | 一种基于本地缓存快速建立索引的方法及*** | |
US8429134B2 (en) | Distributed database recovery | |
US9171027B2 (en) | Managing a multi-version database | |
CN106886375A (zh) | 存储数据的方法和装置 | |
CN107992269B (zh) | 一种基于去重ssd的事务写入方法 | |
CN110018989B (zh) | 一种快照比对的方法和装置 | |
US20130254240A1 (en) | Method of processing database, database processing apparatus, computer program product | |
CN107665219B (zh) | 一种日志管理方法及装置 | |
JP2013525881A5 (zh) | ||
CN107077480A (zh) | 基于查询需求自适应地从当前时间的行存储数据库中构建列存储数据库的方法和*** | |
CN106716409A (zh) | 基于查询需求从行存储数据库自适应地构建和更新列存储数据库的方法和*** | |
US20190102259A1 (en) | Logging process in a data storage system | |
US20090030880A1 (en) | Model-Based Analysis | |
CN112434027A (zh) | 多维度数据的索引方法、装置、计算机设备和存储介质 | |
CN111475736A (zh) | 社区挖掘的方法、装置和服务器 | |
CN114416798A (zh) | 基于数据依赖关系和一致性保证的缓存管理方法及装置 | |
US20160203197A1 (en) | Method and System for Automatic Management of Dynamically Allocated Memory in a Computing Unit | |
US10430115B2 (en) | System and method for optimizing multiple packaging operations in a storage system | |
CN112364021A (zh) | 业务数据处理方法、装置及存储介质 | |
US8533398B2 (en) | Combination based LRU caching | |
US10452496B2 (en) | System and method for managing storage transaction requests | |
CN111399759B (zh) | 读数据、写数据的方法、以及对象文件*** | |
CN112100175B (zh) | 分区数据定向传递方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |