CN116755615A - 数据处理方法及装置 - Google Patents
数据处理方法及装置 Download PDFInfo
- Publication number
- CN116755615A CN116755615A CN202310610574.XA CN202310610574A CN116755615A CN 116755615 A CN116755615 A CN 116755615A CN 202310610574 A CN202310610574 A CN 202310610574A CN 116755615 A CN116755615 A CN 116755615A
- Authority
- CN
- China
- Prior art keywords
- key
- size
- read
- layer
- layers
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 20
- 238000000034 method Methods 0.000 claims description 13
- 230000009191 jumping Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 20
- 238000007906 compression Methods 0.000 description 16
- 230000006835 compression Effects 0.000 description 12
- 238000004590 computer program Methods 0.000 description 10
- 235000019633 pungent taste Nutrition 0.000 description 6
- 230000003321 amplification Effects 0.000 description 5
- 238000003199 nucleic acid amplification method Methods 0.000 description 5
- 238000005457 optimization Methods 0.000 description 4
- 230000003247 decreasing effect Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 2
- 238000005056 compaction Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供一种数据处理方法及装置。该数据处理方法包括:获取预设时长内从日志结构合并LSM树中读取的热键;确定所述读取的热键的总大小;基于确定的所述读取的热键的总大小调整所述LSM树的多个层中的每个层的大小。
Description
技术领域
本公开涉及数据处理。更具体地,本公开涉及一种数据处理方法和用于执行数据处理方法的装置。
背景技术
目前,存储和访问数百拍字节(PB)的数据是一个非常大的挑战,开源的RocksDB是用来存储和访问数百拍字节(PB)的数据的一种数据库。RocksDB是Facebook的开放的存储数据库,其是用C++编写的嵌入式的键值(Key-Value,简称为KV)型数据库,且RocksDB使用日志结构合并树(Log Structured Merge,简称为LSM)存储引擎存储数据,数据在存储设备上以排序序列表(Sorted Sequence Table,简称为SST)文件的形式存在。
但是,相关技术中的RocksDB,在压缩(Compaction)过程中键被混合并保存在下层,读取的数据没有根据热度保持在不同的级别,这将导致高读取放大率和糟糕的读取性能,特别是在读取量大的工作负载下。
发明内容
示例根据本公开的示例实施例,提供一种数据处理方法,包括:获取预设时长内从日志结构合并LSM树中读取的热键;确定所述读取的热键的总大小;基于确定的所述读取的热键的总大小调整所述LSM树的多个层中的每个层的大小。
可选地,所述获取预设时长内从日志结构合并LSM树中读取的热键的步骤可包括:确定读取热度阈值;获取基于所述读取热度阈值确定的热键。
可选地,所述基于所述读取的热键的总大小调整所述LSM树的多个层中的每个层的大小的步骤可包括:确定所述预设时长内所述多个层中的当前层的上层的总大小;基于所述读取的热键的总大小和所述当前层的上层的总大小调整所述多个层中的每个层的大小。
可选地,所述基于所述读取的热键的总大小和所述当前层的上层的总大小调整所述多个层中的每个层的大小的步骤可包括:将所述读取的热键的总大小和所述当前层的上层的总大小进行比较,得到比较结果;基于所述比较结果确定是否调整所述多个层中的每个层的大小;当确定调整所述多个层中的每个层的大小时,根据第一规则来调整所述多个层中的每个层的大小。
可选地,所述基于所述比较结果确定是否调整所述多个层中的每个层的大小的步骤可包括:当所述读取的热键的总大小位于所述当前层的上层的总大小的第一倍数范围时,确定调整所述多个层中的每个层的大小;当所述读取的热键的总大小位于所述当前层的上层的总大小的第二倍数范围时,确定不调整所述多个层中的每个层的大小;当所述读取的热键的总大小位于所述当前层的上层的总大小的第三倍数范围和第四倍数范围时,根据第二规则对读取热度阈值进行更新,并且跳转至获取所述预设时长内从所述LSM树中读取的键中基于所述读取热度阈值确定的全部热键的步骤。
可选地,所述根据第一规则来调整所述多个层中的每个层的大小的步骤可包括:将所述多个层中的从上到下的第一数量个层的大小分别减小第一数值的第一预设比例;将所述多个层中的从下到上的第二数量个层的大小分别增大第一数值的第二预设比例。
可选地,所述确定所述预设时长内所述多个层中的当前层的上层的总大小的步骤可包括:将所述预设时长内所述多个层中的位于所述当前层之上的全部层的数据文件中的键之和,确定为所述预设时长内所述当前层的上层的总大小。
可选地,所述方法还可包括:获取将所述多个层中的当前层中的当前数据文件和所述当前层的下一层中与所述当前数据文件重叠的数据文件进行合并得到的合并文件,其中,所述合并文件包括至少一个键;判断所述至少一个键中的每个键是热键还是冷键;将所述至少一个键中的热键分发到所述当前层,将所述至少一个键中的冷键分发到所述下一层。
可选地,所述判断所述至少一个键中的每个键是热键还是冷键的步骤可包括:基于键的访问次数判断所述至少一个键中的每个键是热键还是冷键。
可选地,所述基于键的访问次数判断所述至少一个键中的每个键是热键还是冷键的步骤可包括:确定所述当前数据文件中的键的总大小,作为第一数值;获取所述至少一个键的访问次数,确定所述至少一个键中访问次数处于预设范围内的键的总大小,作为第二数值;确定所述当前层中排列在所述当前数据文件之后的第一个数据文件中的第一个键的大小,作为第三数值;当第一数值小于第二数值时,根据访问次数从高到低的顺序从所述至少一个键中选择大小不超过第一数值的一半的键,并且当第二数值小于第一数值时,根据访问次数从高到低的顺序从所述至少一个键中选择大小不超过第二数值的键;将所述选择的键中小于第三数值的键确定为热键,并且将所述至少一个键中的除了所述热键之外的键确定为冷键。
根据本公开的示例实施例,提供一种数据处理装置,包括:读取热键获取单元,被配置为获取预设时长内从日志结构合并LSM树中读取的热键;读取大小确定单元,被配置为确定所述读取的热键的总大小;和层大小调整单元,被配置为基于确定的所述读取的热键的总大小调整所述LSM树的多个层中的每个层的大小。
可选地,所述读取热键获取单元可被配置为:确定读取热度阈值;获取基于所述读取热度阈值确定的热键。
可选地,所述层大小调整单元可被配置为:确定所述预设时长内所述多个层中的当前层的上层的总大小;基于所述读取的热键的总大小和所述当前层的上层的总大小调整所述多个层中的每个层的大小。
可选地,所述层大小调整单元可被配置为:将所述读取的热键的总大小和所述当前层的上层的总大小进行比较,得到比较结果;基于所述比较结果确定是否调整所述多个层中的每个层的大小;当确定调整所述多个层中的每个层的大小时,根据第一规则来调整所述多个层中的每个层的大小。
可选地,所述层大小调整单元可被配置为:当所述读取的热键的总大小位于所述当前层的上层的总大小的第一倍数范围时,确定调整所述多个层中的每个层的大小;当所述读取的热键的总大小位于所述当前层的上层的总大小的第二倍数范围时,确定不调整所述多个层中的每个层的大小;当所述读取的热键的总大小位于所述当前层的上层的总大小的第三倍数范围和第四倍数范围时,根据第二规则对读取热度阈值进行更新,并且触发所述读取热键获取单元重新执行获取所述预设时长内从所述LSM树中读取的键中基于所述读取热度阈值确定的全部热键的操作,以使得所述读取大小确定单元重新执行确定所述读取的热键的总大小的操作,并且所述层大小调整单元重新执行基于所述读取的热键的总大小调整所述LSM树的多个层中的每个层的大小的操作。
可选地,所述层大小调整单元可被配置为:将所述多个层中的从上到下的第一数量个层的大小分别减小第一数值的第一预设比例;将所述多个层中的从下到上的第二数量个层的大小分别增大第一数值的第二预设比例。
可选地,所述层大小调整单元可被配置为:将所述预设时长内所述多个层中的位于所述当前层之上的全部层的数据文件中的键之和,确定为所述预设时长内所述当前层的上层的总大小。
可选地,所述装置还可包括:文件获取单元,被配置为获取将所述多个层中的当前层中的当前数据文件和所述当前层的下一层中与所述当前数据文件重叠的数据文件进行合并得到的合并文件,其中,所述合并文件包括至少一个键;键冷热判断单元,被配置为判断所述至少一个键中的每个键是热键还是冷键;键分发单元,被配置为将所述至少一个键中的热键分发到所述当前层,将所述至少一个键中的冷键分发到所述下一层。
可选地,所述键冷热判断单元可被配置为:基于键的访问次数判断所述至少一个键中的每个键是热键还是冷键。
可选地,所述键冷热判断单元可被配置为:确定所述当前数据文件中的键的总大小,作为第一数值;获取所述至少一个键的访问次数,确定所述至少一个键中访问次数处于预设范围内的键的总大小,作为第二数值;确定所述当前层中排列在所述当前数据文件之后的第一个数据文件中的第一个键的大小,作为第三数值;当第一数值小于第二数值时,根据访问次数从高到低的顺序从所述至少一个键中选择大小不超过第一数值的一半的键,并且当第二数值小于第三数值时,根据访问次数从高到低的顺序从所述至少一个键中选择大小不超过第二数值的键;将所述选择的键中小于第三数值的键确定为热键,并且将所述至少一个键中的除了所述热键之外的键确定为冷键。
根据本公开的示例实施例,提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序被处理器执行时,实现根据本公开的示例实施例的数据处理方法。
根据本公开的示例实施例,提供一种计算装置,包括:至少一个处理器;至少一个存储器,存储有计算机程序,当所述计算机程序被所述至少一个处理器执行时,实现根据本公开的示例实施例的数据处理方法。
根据本公开的示例实施例,提供一种计算机程序产品,该计算机程序产品中的指令可由计算机设备的处理器执行以完成根据本公开的示例实施例的数据处理方法。
附图说明
通过下面结合示例地示出实施例的附图进行的描述,本公开的示例实施例的上述和其他目的和特点将会变得更加清楚,其中:
图1示出根据本公开的一个示例实施例的数据处理方法的流程图;
图2示出根据本公开的另一示例实施例的数据处理方法的流程图;
图3示出根据本公开的示例实施例的数据处理系统的示意图;
图4示出根据本公开的示例实施例的访问次数增加的示意图;
图5示出根据本公开的示例实施例的两个文件与下层的重叠文件进行合并的示意图;
图6示出根据本公开的示例实施例的热度管理器确定键的热度的示意图;
图7示出根据本公开的示例实施例的调整每层大小的规则R的示例;
图8示出根据本公开的示例实施例的文件分类器分发键的示意图;
图9示出根据本公开的示例实施例的读取的热数据向上层移动的示意图;
图10示出根据本公开的示例实施例的LSM树中读取数据的热度分布的示图;
图11示出根据本公开的一个示例实施例的数据处理装置的框图;
图12示出根据本公开的另一示例实施例的数据处理装置的框图;和
图13示出根据本公开的示例实施例的计算装置的示意图。
具体实施方式
现将详细参照本公开的示例实施例,所述实施例在附图中示出,其中,相同的标号始终可指相同的部件。
层级压缩(leveled compaction)是LSM KV存储中一个流行的压缩策略。当第n层的大小超过其目标大小时,第n层的一个文件F(sst2)被挑选出来,并合并到第n+1层中与F有重叠键范围的文件中,其方式类似于合并排序。在这个压缩过程中,键被混合存储在下层。在这种情况下,必须穿越多个层次来读取数据,所以对读取不友好。由于读取的热数据和冷数据在各层中是混合存储的,而读取的热数据大多保存在最后一层,所以读取放大很大,读取性能很差。
如果将24小时内访问10次或以上的KV对定义为热KV对,那么读取访问的KV对中约有50%是热KV对,写入访问的KV对中有5%是热KV对。在这个工作负载中,读取操作的热KV对的比例很高,而且比写入操作的比例高得多。在一种相关技术中,使用三个层次(LSM内存、存储、提交日志)的整体组合优化来减少写放大。在内存层面的优化上,该技术将冷热键值对分开,并将所有的热键值对存储在内存中,根据工作负载的热度分布,可以知道,热读数据太多,内存无法存储,这消耗了大量内存,增加了成本。
在另一种相关技术中,在快存储中为热对象回收空间的优势与慢速存储中压缩的成本之间进行平衡。在执行压缩时,将热键保留在上层,将冷键刷到下层。由于快速层(NVM)的空间很快就被填满了,需要决定哪些对象要从NVM迁移到闪存。这导致了一个基本的权衡:在NVM中保留大量受欢迎的对象,确保从NVM中提供更高的访问比例,但这是以迁移或压缩效率为代价的。该技术需要在上层大小固定的情况下在读取性能和压缩效率之间进行权衡。
本申请提出了一种针对读密集型工作负载的优化方案,通过分离读热键和冷键,在压缩过程中动态调整层大小。通过这种方式,可以在不牺牲压缩效率的前提下,大大降低读放大,提高读取性能,同时也节省内存成本。
图1示出根据本公开的一个示例实施例的数据处理方法的流程图。
参照图1,在步骤S101,获取预设时长内从日志结构合并LSM树中读取的热键。
在本公开的示例实施例中,在获取预设时长内从日志结构合并LSM树中读取的热键时,可首先确定读取热度阈值,然后获取所述预设时长内从所述LSM树中读取的键中基于所述读取热度阈值确定的全部热键,作为所述预设时长内从所述LSM树中读取的热键。
在步骤S102,确定所述读取的热键的总大小。
在步骤S103,基于所述读取的热键的总大小调整所述LSM树的多个层中的每个层的大小。
在本公开的示例实施例中,在基于所述读取的热键的总大小调整所述LSM树的多个层中的每个层的大小时,可首先确定所述预设时长内所述多个层中的当前层(例如,层4)的上层的总大小,然后基于所述读取的热键的总大小和所述当前层的上层的总大小调整所述多个层中的每个层的大小。
在本公开的示例实施例中,在基于所述读取的热键的总大小和所述当前层的上层的总大小调整所述多个层中的每个层的大小时,可首先将所述读取的热键的总大小和所述当前层的上层的总大小进行比较,得到比较结果,然后基于所述比较结果确定是否调整所述多个层中的每个层的大小,并且当确定调整所述多个层中的每个层的大小时,根据第一规则来调整所述多个层中的每个层的大小。
在本公开的示例实施例中,在基于所述比较结果确定是否调整所述多个层中的每个层的大小时,可首先当所述读取的热键的总大小位于所述当前层的上层的总大小的第一倍数范围时,确定调整所述多个层中的每个层的大小。然后,当所述读取的热键的总大小位于所述当前层的上层的总大小的第二倍数范围时,确定不调整所述多个层中的每个层的大小;当所述读取的热键的总大小位于所述当前层的上层的总大小的第三倍数范围和第四倍数范围时,根据第二规则对读取热度阈值进行更新,并且跳转至基于所述读取热度阈值确定预设时长内读取的键中的全部热键的步骤。
例如,第一倍数范围可以是b×L_Size>T_Size>c×L_Size;第二倍数范围可以是a×L_Size<T_Size<b×L_Size;第三倍数范围可以是T_Size<a×L_Size;第四倍数范围可以是T_Size>c×L_Size。
第二规则可以是将读取热度阈值更新为原来的预定倍数。例如,第二规则可以是T=c1×T或者T=c2×T等。
在本公开的示例实施例中,在根据第一规则来调整所述多个层中的每个层的大小时,可首先将所述多个层中的从上到下的第一数量个层的大小分别减小第一数值的第一预设比例,并且将所述多个层中的从下到上的第二数量个层的大小分别增大第一数值的第二预设比例。
例如,可将6个层中的第1层至第5层的大小分别增大第一预设比例的第一数值(T_Size),并且将6个层中的第6层的大小分别减小第二预设比例的第一数值(T_Size)。
作为示例,将层1(level1)增加k1×T_Size(k1=0.01);将层2(level2)增大k2×T_Size(k2=0.1);将层3(level3)增加k3×T_Size(k3=0.2);将层4(level4)增加k4×T_Size(k4=0.3);将层5(level5)增加k5×T_Size(k5=0.39);将层6(level6)减小T_Size。应理解,k1、k2、...、k5等可以是其他数值,本公开对此不进行限定。
在本公开的示例实施例中,在确定所述预设时长内所述多个层中的当前层(例如,层4)的上层的总大小时,可将所述预设时长内所述多个层中的位于所述当前层之上的全部层(例如,层1、层2、层3)的数据文件中的键之和,确定为所述预设时长内所述当前层的上层的总大小。
图2示出根据本公开的另一示例实施例的数据处理方法的流程图。
参照图2,在步骤S201,获取将所述日志结构合并LSM树的多个层中的当前层中的当前数据文件和所述当前层的下一层中与所述当前数据文件重叠的数据文件进行合并得到的合并文件。这里,所述合并文件包括至少一个键。这里,所述合并文件包括至少一个键(例如,key7、key10、key11、key15、key26、key27)。当前层中的当前数据文件是被选择进行合并的数据文件。
在步骤S202,判断所述至少一个键中的每个键是热键还是冷键。
在本公开的示例实施例中,在判断所述至少一个键中的每个键是热键还是冷键时,可基于键的访问次数(例如,键被访问的次数)判断所述至少一个键中的每个键是热键还是冷键。
在本公开的示例实施例中,在基于键的访问次数判断所述至少一个键中的每个键是热键还是冷键时,可首先确定所述当前数据文件中的键的总大小,作为第一数值,获取所述至少一个键的访问次数,确定所述至少一个键中访问次数处于预设范围内的键的总大小,作为第二数值,确定所述当前层中排列在所述当前数据文件之后的第一个数据文件中的第一个键的大小,作为第三数值。然后,当第一数值小于第二数值时,根据访问次数从高到低的顺序从所述至少一个键中选择大小不超过第一数值的一半的键,并且当第二数值小于第三数值时,根据访问次数从高到低的顺序从所述至少一个键中选择大小不超过第二数值的键。之后,将所述选择的键中小于第三数值的键确定为热键,并且将所述至少一个键中的除了所述热键之外的键确定为冷键。
例如,在判断所述至少一个键中的每个键是热键还是冷键时,可首先获取上层被删除文件的总大小(S),并记录其右边第一个文件的第一个键的大小K。之后,查询热度表中的访问次数,从高到低排序,选择前20%(该值可根据实际应用动态调整),并计算前20%的总大小S2。然后,选择总大小不超过S/2和S2中较小的那个的那些键(例如,S/2<S2时,选择选择总大小不超过S/2的那些键;S2<S/2时,选择选择总大小不超过S2的那些键)。如果某个键在表中没有找到,则不参与排序,并直接将其标志位设置为0(识别为冷键),然后再判断下一个键。如果某个键大于K,直接将标志位设置为0(冷)以确保热键产生的文件被回写后上层仍处于有序状态,否则设置为1(热),然后判断下一个键。
在步骤S203,获取预设时长内从所述LSM树中读取的热键。
在本公开的示例实施例中,在获取预设时长内从日志结构合并LSM树中读取的热键时,可首先确定读取热度阈值,然后获取所述预设时长内从所述LSM树中读取的键中基于所述读取热度阈值确定的全部热键,作为所述预设时长内从所述LSM树中读取的热键。
在步骤S204,确定所述读取的热键的总大小。
在步骤S205,基于所述读取的热键的总大小调整所述LSM树的多个层中的每个层的大小。
在本公开的示例实施例中,在基于所述读取的热键的总大小调整所述LSM树的多个层中的每个层的大小时,可首先确定所述预设时长内所述多个层中的当前层(例如,层4)的上层的总大小,然后基于所述读取的热键的总大小和所述当前层的上层的总大小调整所述多个层中的每个层的大小。
在本公开的示例实施例中,在基于所述读取的热键的总大小和所述当前层的上层的总大小调整所述多个层中的每个层的大小时,可首先将所述读取的热键的总大小和所述当前层的上层的总大小进行比较,得到比较结果,然后基于所述比较结果确定是否调整所述多个层中的每个层的大小,并且当确定调整所述多个层中的每个层的大小时,根据第一规则来调整所述多个层中的每个层的大小。
在本公开的示例实施例中,在基于所述比较结果确定是否调整所述多个层中的每个层的大小时,可首先当所述读取的热键的总大小位于所述当前层的上层的总大小的第一倍数范围时,确定调整所述多个层中的每个层的大小。然后,当所述读取的热键的总大小位于所述当前层的上层的总大小的第二倍数范围时,确定不调整所述多个层中的每个层的大小;当所述读取的热键的总大小位于所述当前层的上层的总大小的第三倍数范围和第四倍数范围时,根据第二规则对读取热度阈值进行更新,并且跳转至基于所述读取热度阈值确定预设时长内读取的键中的全部热键的步骤。
例如,第一倍数范围可以是b×L_Size>T_Size>c×L_Size;第二倍数范围可以是a×L_Size<T_Size<b×L_Size;第三倍数范围可以是T_Size<a×L_Size;第四倍数范围可以是T_Size>c×L_Size。
第二规则可以是将读取热度阈值更新为原来的预定倍数。例如,第二规则可以是T=c1×T或者T=c2×T等。
在本公开的示例实施例中,在根据第一规则来调整所述多个层中的每个层的大小时,可首先将所述多个层中的从上到下的第一数量个层的大小分别减小第一数值的第一预设比例,并且将所述多个层中的从下到上的第二数量个层的大小分别增大第一数值的第二预设比例。
例如,可将6个层中的第1层至第5层的大小分别增大第一预设比例的第一数值(T_Size),并且将6个层中的第6层的大小分别减小第二预设比例的第一数值(T_Size)。
作为示例,将层1(level1)增加k1×T_Size(k1=0.01);将层2(level2)增大k2×T_Size(k2=0.1);将层3(level3)增加k3×T_Size(k3=0.2);将层4(level4)增加k4×T_Size(k4=0.3);将层5(level5)增加k5×T_Size(k5=0.39);将层6(level6)减小T_Size。应理解,k1、k2、...、k5等可以是其他数值,本公开对此不进行限定。
在本公开的示例实施例中,在确定所述预设时长内所述多个层中的当前层(例如,层4)的上层的总大小时,可将所述预设时长内所述多个层中的位于所述当前层之上的全部层(例如,层1、层2、层3)的数据文件中的键之和,确定为所述预设时长内所述当前层的上层的总大小。
在步骤S206,将所述至少一个键中的热键分发到所述当前层,将所述至少一个键中的冷键分发到所述下一层。
随着时间的推移,通过动态调整每一层的大小,读取的热键(热数据)不断向上层移动。上层保留了大部分读取和写入的热键(热数据),从而在不牺牲压缩效率的情况下减少了读放大。
图3示出根据本公开的示例实施例的数据处理系统的示意图。
如图3所示,数据处理系统包括热度表管理器、文件收集器、热度识别管理器、层大小管理器、文件分类器。
热度表管理器在执行读取、扫描等操作时,需要维护和更新一个热度表。热度表被维护在内存中,记录了键(key)和键被访问的总次数,这代表了键的热度。热度表所占用的内存小于M。
图4示出了根据本公开的示例实施例的访问次数增加的示意图。如图4所示,当访问键11时,键11的访问次数加1。
文件收集器用于收集压缩过程中相邻两层合并后的文件(键)。这些文件(键)被用作热度管理器的输入数据。在压缩过程中,当热KV对被写回上层时,会产生很多小文件(如sst13,sst15),为了防止写回上层的文件越来越小,可判断上层所选的文件(O1)是否小于target_file_size_base(P)的1/3,如果是,再选择一个文件与下层的重叠文件进行合并。
图5示出根据本公开的示例实施例的两个文件与下层的重叠文件进行合并的示意图。如图5所示,所选择的文件sst13是小文件,即,文件sst13小于target_file_size_base(P)的1/3。因此,选择文件sst15与文件sst13一起与下层的重叠文件进行合并。
图6示出根据本公开的示例实施例的热度管理器确定键的热度的示意图。如图6所示,热度管理器根据下述原则来确定键的热度。
原则1.选择访问次数前20%的key。
例如,如图6所示,在总共有6个KV对回写时,因为6×20%=1.2,向下取整为1,所以挑选访问次数最高的key10。
原则2.被选择为热键的总大小不能超过上层被删除文件大小的一半。
例如,因为删除文件(sst13+sst15包含2个KV对),2/2=1,所以挑选1个KV对当作热键。
原则3.在热度表中没有被查询到的可以被当作冷键(标志位Flag=0)。
例如,key15在热度表中不存在,所以其标志位Flag为0。
原则4.如果可以不小于上层被选为进行压缩的文件右边第一个文件的第一个键大小,则被当作冷键(标志位Flag=0)。该点保证了热键产生的文件被回写后上层仍处于有序状态。比如key26>key25(sst25文件中第一个键),那么key26的标志位Flag=0。
热度识别管理器在确定键的热度时可执行以下操作:
1、在压缩过程中获取所有合并后需要写回的KV对;
2、获取上层被删除文件的总大小(S),并记录其右边第一个文件的第一个键的大小K;
3、查询热度表中的访问次数,从高到低排序,选择前20%(该值可根据实际应用动态调整),并计算前20%的总大小S2。选择总大小不超过S/2和S2中较小的那个的那些键;
4、如果某个键在表中没有找到,则不参与排序,并直接将其标志位设置为0(识别为冷键),然后再判断下一个键;
5、如果某个键大于K,直接将标志位设置为0(冷),否则设置为1(热),然后判断下一个键。
层大小管理器通过调整层大小和读取热度阈值T,根据读取的热数据的大小动态改变每个层的大小。
层大小管理器在动态改变每个层的大小时可执行以下操作:
1、计算t时间内前N-1个上层的总大小(L_Size)。L_Size表征前N-1个上层的数据在t时间内的总大小,前N-1个上层是第N层之上的N-1个层。t时间内可以是例如但不限于5s内。
2、设置读取热度阈值T,如果一个读取键的访问次数大于T,则这个读取键被视为热键。
3、计算t时间内所有读取的热数据的总大小(T_Size)。T_Size表征所有读取的热数据在t时间内的总大小。
4、判断L_Size和T_Size之间的关系
如果b×L_Size>T_Size>c×L_Size,则根据规则R调整每层大小
如果T_Size<a×L_Size,则T=c1×T,并且跳到执行操作2
如果T_Size>cL_Size,则T=c2×T,并且跳到执行操作2
如果a×L_Size<T_Size<b×L_Size,则结束。
作为示例,c1=0.5,c2=2,a=0.1,b=0.5,c=0.8(这些参数都可以动态调整,c1<1,c2>1)。
图7示出根据本公开的示例实施例的调整每层大小的规则R的示例。如图7所示,根据调整每层大小的规则R可以进行以下调整。
将层1(level1)增加k1×T_Size(k1=0.01);
将层2(level2)增大k2×T_Size(k2=0.1);
将层3(level3)增加k3×T_Size(k3=0.2);
将层4(level4)增加k4×T_Size(k4=0.3);
将层5(level5)增加k5×T_Size(k5=0.39);
将层6(level6)减小T_Size。
应理解,k1、k2、...、k5等的大小可以动态调整。
文件分类器是用来根据热度来分发键的。由热键(Flag=1)产生的文件(SSTables)被写回上层,而由冷键(Flag=0)产生的文件(SSTables)被写回下层。因此,大部分热键的读取都是在上层命中的,这将减少读放大。
图8示出根据本公开的示例实施例的文件分类器分发键的示意图。如图8所示,热键key10被写回上层(即,层N)的文件sst26中,key7、key11、key15、key26、key27被写回下层(即,层N+1)的文件sst27或文件sst28中。
图9示出根据本公开的示例实施例的读取的热数据向上层移动的示意图。如图9所示,在时间T1,上层被写入的热数据(即,写热数据)占据,大部分读取的热数据(即,读热数据)被存储在下层。
随着时间的推移T1->T2->T3,读取的热数据逐渐从下层移到上层,并通过扩大上层尺寸和减少下层尺寸,与写入的热数据一起占据上层。
图10示出根据本公开的示例实施例的LSM树中读取数据的热度分布的示图。如图10所示,随着时间的推移,通过本技术的优化,热度分布散乱的读取数据可以改变为热度的分层分布。
此外,根据本公开的示例实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序被执行时,实现根据本公开的示例实施例的数据处理方法。
在本公开的示例实施例中,所述计算机可读存储介质可承载有一个或者多个程序,当所述计算机程序被执行时可实现以下步骤:获取预设时长内从日志结构合并LSM树中读取的热键;确定所述读取的热键的总大小;基于所述读取的热键的总大小调整所述LSM树的多个层中的每个层的大小。
在本公开的示例实施例中,所述计算机可读存储介质可承载有一个或者多个程序,当所述计算机程序被执行时可实现以下步骤:获取将所述多个层中的当前层中的当前数据文件和所述当前层的下一层中与所述当前数据文件重叠的数据文件进行合并得到的合并文件,其中,所述合并文件包括至少一个键;判断所述至少一个键中的每个键是热键还是冷键;获取预设时长内从日志结构合并LSM树中读取的热键;确定所述读取的热键的总大小;基于所述读取的热键的总大小调整所述LSM树的多个层中的每个层的大小;将所述至少一个键中的热键分发到所述当前层,将所述至少一个键中的冷键分发到所述下一层。
计算机可读存储介质例如可以是,但不限于,电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开的实施例中,计算机可读存储介质可以是任何包含或存储计算机程序的有形介质,该计算机程序可以被指令执行系统、装置或者器件使用或者与其结合使用。计算机可读存储介质上包含的计算机程序可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。计算机可读存储介质可以包含在任意装置中;也可以单独存在,而未装配入该装置中。
此外,根据本公开的示例实施例,还提供一种计算机程序产品,该计算机程序产品中的指令可由计算机设备的处理器执行以完成根据本公开的示例实施例的数据处理的方法。
以上已经结合图1至图10对根据本公开的示例实施例的数据处理方法进行了描述。在下文中,将参照图11和图12对根据本公开的示例实施例的数据处理装置及其单元进行描述。
图11示出根据本公开的一个示例实施例的数据处理装置的框图。
参照图11,数据处理装置包括读取热键获取单元111、读取大小确定单元112和层大小调整单元113。
读取热键获取单元111被配置为获取预设时长内从日志结构合并LSM树中读取的热键。
在本公开的示例实施例中,读取热键获取单元111可被配置为:确定读取热度阈值;获取所述预设时长内从所述LSM树中读取的键中基于所述读取热度阈值确定的全部热键,作为所述预设时长内从所述LSM树中读取的热键。
读取大小确定单元112被配置为确定所述读取的热键的总大小。
层大小调整单元113被配置为基于所述读取的热键的总大小调整所述LSM树的多个层中的每个层的大小。
在本公开的示例实施例中,层大小调整单元113可被配置为:确定所述预设时长内所述多个层中的当前层的上层的总大小;基于所述读取的热键的总大小和所述当前层的上层的总大小调整所述多个层中的每个层的大小。
在本公开的示例实施例中,层大小调整单元113可被配置为:将所述读取的热键的总大小和所述当前层的上层的总大小进行比较,得到比较结果;基于所述比较结果确定是否调整所述多个层中的每个层的大小;当确定调整所述多个层中的每个层的大小时,根据第一规则来调整所述多个层中的每个层的大小。
在本公开的示例实施例中,层大小调整单元113可被配置为:当所述读取的热键的总大小位于所述当前层的上层的总大小的第一倍数范围时,确定调整所述多个层中的每个层的大小;当所述读取的热键的总大小位于所述当前层的上层的总大小的第二倍数范围时,确定不调整所述多个层中的每个层的大小;当所述读取的热键的总大小位于所述当前层的上层的总大小的第三倍数范围和第四倍数范围时,根据第二规则对读取热度阈值进行更新,并且触发所述读取热键获取单元重新执行获取所述预设时长内从所述LSM树中读取的键中基于所述读取热度阈值确定的全部热键的操作,以使得所述读取大小确定单元重新执行确定所述读取的热键的总大小的操作,并且所述层大小调整单元重新执行基于所述读取的热键的总大小调整所述LSM树的多个层中的每个层的大小的操作。
在本公开的示例实施例中,层大小调整单元113可被配置为:将所述多个层中的从上到下的第一数量个层的大小分别减小第一数值的第一预设比例;将所述多个层中的从下到上的第二数量个层的大小分别增大第一数值的第二预设比例。
在本公开的示例实施例中,层大小调整单元113可被配置为:将所述预设时长内所述多个层中的位于所述当前层之上的全部层的数据文件中的键之和,确定为所述预设时长内所述当前层的上层的总大小。
图12示出根据本公开的另一示例实施例的数据处理装置的框图。
参照图12,数据处理装置包括文件获取单元121、键冷热判断单元122、读取热键获取单元123、读取大小确定单元124、层大小调整单元125和键分发单元126。
文件获取单元121被配置为获取将所述多个层中的当前层中的当前数据文件和所述当前层的下一层中与所述当前数据文件重叠的数据文件进行合并得到的合并文件。这里,所述合并文件包括至少一个键。
键冷热判断单元122被配置为判断所述至少一个键中的每个键是热键还是冷键。
在本公开的示例实施例中,键冷热判断单元122可被配置为:基于键的访问次数判断所述至少一个键中的每个键是热键还是冷键。
在本公开的示例实施例中,键冷热判断单元122可被配置为:确定所述当前数据文件中的键的总大小,作为第一数值;获取所述至少一个键的访问次数,确定所述至少一个键中访问次数处于预设范围内的键的总大小,作为第二数值;确定所述当前层中排列在所述当前数据文件之后的第一个数据文件中的第一个键的大小,作为第三数值;当第一数值小于第二数值时,根据访问次数从高到低的顺序从所述至少一个键中选择大小不超过第一数值的一半的键,并且当第二数值小于第三数值时,根据访问次数从高到低的顺序从所述至少一个键中选择大小不超过第二数值的键;将所述选择的键中小于第三数值的键确定为热键,并且将所述至少一个键中的除了所述热键之外的键确定为冷键。
读取热键获取单元123被配置为获取预设时长内从日志结构合并LSM树中读取的热键。
在本公开的示例实施例中,读取热键获取单元123可被配置为:确定读取热度阈值;获取所述预设时长内从所述LSM树中读取的键中基于所述读取热度阈值确定的全部热键,作为所述预设时长内从所述LSM树中读取的热键。
读取大小确定单元124被配置为确定所述读取的热键的总大小。
层大小调整单元125被配置为基于所述读取的热键的总大小调整所述LSM树的多个层中的每个层的大小。
在本公开的示例实施例中,层大小调整单元125可被配置为:确定所述预设时长内所述多个层中的当前层的上层的总大小;基于所述读取的热键的总大小和所述当前层的上层的总大小调整所述多个层中的每个层的大小。
在本公开的示例实施例中,层大小调整单元125可被配置为:将所述读取的热键的总大小和所述当前层的上层的总大小进行比较,得到比较结果;基于所述比较结果确定是否调整所述多个层中的每个层的大小;当确定调整所述多个层中的每个层的大小时,根据第一规则来调整所述多个层中的每个层的大小。
在本公开的示例实施例中,层大小调整单元125可被配置为:当所述读取的热键的总大小位于所述当前层的上层的总大小的第一倍数范围时,确定调整所述多个层中的每个层的大小;当所述读取的热键的总大小位于所述当前层的上层的总大小的第二倍数范围时,确定不调整所述多个层中的每个层的大小;当所述读取的热键的总大小位于所述当前层的上层的总大小的第三倍数范围和第四倍数范围时,根据第二规则对读取热度阈值进行更新,并且触发所述读取热键获取单元重新执行获取所述预设时长内从所述LSM树中读取的键中基于所述读取热度阈值确定的全部热键的操作,以使得所述读取大小确定单元重新执行确定所述读取的热键的总大小的操作,并且所述层大小调整单元重新执行基于所述读取的热键的总大小调整所述LSM树的多个层中的每个层的大小的操作。
在本公开的示例实施例中,层大小调整单元125可被配置为:将所述多个层中的从上到下的第一数量个层的大小分别减小第一数值的第一预设比例;将所述多个层中的从下到上的第二数量个层的大小分别增大第一数值的第二预设比例。
在本公开的示例实施例中,层大小调整单元125可被配置为:将所述预设时长内所述多个层中的位于所述当前层之上的全部层的数据文件中的键之和,确定为所述预设时长内所述当前层的上层的总大小。
键分发单元126被配置为将所述至少一个键中的热键分发到所述当前层,将所述至少一个键中的冷键分发到所述下一层。
以上已经结合图11和图12对根据本公开的示例实施例的数据处理装置进行了描述。接下来,结合图13对根据本公开的示例实施例的计算装置进行描述。
图13示出根据本公开的示例实施例的计算装置的示意图。
参照图13,根据本公开的示例实施例的计算装置13,包括存储器131和处理器132,所述存储器131上存储有计算机程序,当所述计算机程序被处理器132执行时,实现根据本公开的示例实施例的数据处理方法。
在本公开的示例实施例中,当所述计算机程序被处理器132执行时,可实现以下步骤:获取预设时长内从日志结构合并LSM树中读取的热键;确定所述读取的热键的总大小;基于所述读取的热键的总大小调整所述LSM树的多个层中的每个层的大小。
在本公开的示例实施例中,当所述计算机程序被处理器132执行时,可实现以下步骤:获取将所述多个层中的当前层中的当前数据文件和所述当前层的下一层中与所述当前数据文件重叠的数据文件进行合并得到的合并文件,其中,所述合并文件包括至少一个键;判断所述至少一个键中的每个键是热键还是冷键;获取预设时长内从日志结构合并LSM树中读取的热键;确定所述读取的热键的总大小;基于所述读取的热键的总大小调整所述LSM树的多个层中的每个层的大小;将所述至少一个键中的热键分发到所述当前层,将所述至少一个键中的冷键分发到所述下一层。
本公开实施例中的计算装置可以包括但不限于诸如移动电话、笔记本电脑、PDA(个人数字助理)、PAD(平板电脑)、台式计算机等的装置。图13示出的计算装置仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
以上已参照图1至图13描述了根据本公开的示例实施例的数据处理方法及装置。然而,应该理解的是:图11和图12中所示的数据处理装置及其单元可分别被配置为执行特定功能的软件、硬件、固件或上述项的任意组合,图13中所示的计算装置并不限于包括以上示出的组件,而是可根据需要增加或删除一些组件,并且以上组件也可被组合。
根据本公开的示例实施例的数据处理方法及装置,通过获取预设时长内从日志结构合并LSM树中读取的热键,确定所述读取的热键的总大小,基于所述读取的热键的总大小调整所述LSM树的多个层中的每个层的大小,从而通过调整层大小来提高数据读取性能。
尽管已经参照其示例实施例具体显示和描述了本公开,但是本领域的技术人员应该理解,在不脱离权利要求所限定的本公开的精神和范围的情况下,可以对其进行形式和细节上的各种改变。
Claims (11)
1.一种数据处理方法,包括:
获取预设时长内从日志结构合并LSM树中读取的热键;
确定所述读取的热键的总大小;
基于确定的所述读取的热键的总大小调整所述LSM树的多个层中的每个层的大小。
2.根据权利要求1所述的方法,其中,所述获取预设时长内从日志结构合并LSM树中读取的热键的步骤包括:
确定读取热度阈值;
获取基于所述读取热度阈值确定的热键。
3.根据权利要求2所述的方法,其中,所述基于所述读取的热键的总大小调整所述LSM树的多个层中的每个层的大小的步骤包括:
确定所述预设时长内所述多个层中的当前层的上层的总大小;
基于所述读取的热键的总大小和所述当前层的上层的总大小调整所述多个层中的每个层的大小。
4.根据权利要求3所述的方法,其中,所述基于所述读取的热键的总大小和所述当前层的上层的总大小调整所述多个层中的每个层的大小的步骤包括:
将所述读取的热键的总大小和所述当前层的上层的总大小进行比较,得到比较结果;
基于所述比较结果确定是否调整所述多个层中的每个层的大小;
当确定调整所述多个层中的每个层的大小时,根据第一规则来调整所述多个层中的每个层的大小。
5.根据权利要求4所述的方法,其中,所述基于所述比较结果确定是否调整所述多个层中的每个层的大小的步骤包括:
当所述读取的热键的总大小位于所述当前层的上层的总大小的第一倍数范围时,确定调整所述多个层中的每个层的大小;
当所述读取的热键的总大小位于所述当前层的上层的总大小的第二倍数范围时,确定不调整所述多个层中的每个层的大小;
当所述读取的热键的总大小位于所述当前层的上层的总大小的第三倍数范围和第四倍数范围时,根据第二规则对读取热度阈值进行更新,并且跳转至获取所述预设时长内从所述LSM树中读取的键中基于所述读取热度阈值确定的全部热键的步骤。
6.根据权利要求4所述的方法,其中,所述根据第一规则来调整所述多个层中的每个层的大小的步骤包括:
将所述多个层中的从上到下的第一数量个层的大小分别减小第一数值的第一预设比例;
将所述多个层中的从下到上的第二数量个层的大小分别增大第一数值的第二预设比例。
7.根据权利要求3所述的方法,其中,所述确定所述预设时长内所述多个层中的当前层的上层的总大小的步骤包括:
将所述预设时长内所述多个层中的位于所述当前层之上的全部层的数据文件中的键之和,确定为所述预设时长内所述当前层的上层的总大小。
8.根据权利要求1所述的方法,还包括:
获取将所述多个层中的当前层中的当前数据文件和所述当前层的下一层中与所述当前数据文件重叠的数据文件进行合并得到的合并文件,其中,所述合并文件包括至少一个键;
判断所述至少一个键中的每个键是热键还是冷键;
将所述至少一个键中的热键分发到所述当前层,将所述至少一个键中的冷键分发到所述下一层。
9.根据权利要求8所述的方法,其中,所述判断所述至少一个键中的每个键是热键还是冷键的步骤包括:
基于键的访问次数判断所述至少一个键中的每个键是热键还是冷键。
10.根据权利要求9所述的方法,其中,所述基于键的访问次数判断所述至少一个键中的每个键是热键还是冷键的步骤包括:
确定所述当前数据文件中的键的总大小,作为第一数值;
获取所述至少一个键的访问次数,确定所述至少一个键中访问次数处于预设范围内的键的总大小,作为第二数值;
确定所述当前层中排列在所述当前数据文件之后的第一个数据文件中的第一个键的大小,作为第三数值;
当第一数值小于第二数值时,根据访问次数从高到低的顺序从所述至少一个键中选择大小不超过第一数值的一半的键,并且当第二数值小于第一数值时,根据访问次数从高到低的顺序从所述至少一个键中选择大小不超过第二数值的键;
将所述选择的键中小于第三数值的键确定为热键,并且将所述至少一个键中的除了所述热键之外的键确定为冷键。
11.一种数据处理装置,包括:
读取热键获取单元,被配置为获取预设时长内从日志结构合并LSM树中读取的热键;
读取大小确定单元,被配置为确定所述读取的热键的总大小;和
层大小调整单元,被配置为基于确定的所述读取的热键的总大小调整所述LSM树的多个层中的每个层的大小。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310610574.XA CN116755615A (zh) | 2023-05-26 | 2023-05-26 | 数据处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310610574.XA CN116755615A (zh) | 2023-05-26 | 2023-05-26 | 数据处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116755615A true CN116755615A (zh) | 2023-09-15 |
Family
ID=87946868
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310610574.XA Pending CN116755615A (zh) | 2023-05-26 | 2023-05-26 | 数据处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116755615A (zh) |
-
2023
- 2023-05-26 CN CN202310610574.XA patent/CN116755615A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8200889B2 (en) | Variable space page mapping method and apparatus for flash memory device | |
US9665485B2 (en) | Logical and physical block addressing for efficiently storing data to improve access speed in a data deduplication system | |
US20160188227A1 (en) | Method and apparatus for writing data into solid state disk | |
US8341350B2 (en) | Analyzing sub-LUN granularity for dynamic storage tiering | |
JP2017021804A (ja) | 不揮発性メモリ装置におけるデータ特性基盤データ配置を活用するためのインターフェイス提供方法及びシステム並びに不揮発性メモリ装置とそのデータ特性基盤データ配置方法 | |
US20190361811A1 (en) | Data processing apparatus and prefetch method | |
US8375186B2 (en) | Spatial extent migration for tiered storage architecture | |
CN103186350A (zh) | 混合存储系统及热点数据块的迁移方法 | |
CN111324303B (zh) | Ssd垃圾回收方法、装置、计算机设备及存储介质 | |
KR20130030238A (ko) | 비휘발성 메모리를 갖는 시스템을 위한 고속 트리 플래트닝 | |
CN103019887A (zh) | 数据备份方法及装置 | |
CN112286459A (zh) | 一种数据处理方法、装置、设备及介质 | |
EP3789883A1 (en) | Storage fragment managing method and terminal | |
Chai et al. | LDC: a lower-level driven compaction method to optimize SSD-oriented key-value stores | |
US20210349866A1 (en) | Deduplication-Adapted Casedb For Edge Computing | |
CN112231242A (zh) | 数据缓存方法、存储控制装置、及存储设备 | |
US20100125697A1 (en) | Computing device having storage, apparatus and method of managing storage, and file system recorded recording medium | |
CN102253985B (zh) | 一种文件系统数据的管理方法及系统 | |
CN110413228A (zh) | 一种映射表管理方法、系统及电子设备和存储介质 | |
US9361402B2 (en) | Tiered index management | |
US20110107056A1 (en) | Method for determining data correlation and a data processing method for a memory | |
CN110704139A (zh) | 一种图标分类的方法及装置 | |
US8996786B2 (en) | Nonvolatile memory system and block management method | |
US9507794B2 (en) | Method and apparatus for distributed processing of file | |
CN111552438A (zh) | 一种对象写入的方法、装置、服务器和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |