CN113515518A - 数据存储方法、装置、计算机设备和存储介质 - Google Patents
数据存储方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN113515518A CN113515518A CN202010280458.2A CN202010280458A CN113515518A CN 113515518 A CN113515518 A CN 113515518A CN 202010280458 A CN202010280458 A CN 202010280458A CN 113515518 A CN113515518 A CN 113515518A
- Authority
- CN
- China
- Prior art keywords
- data
- hierarchical
- memory table
- memory
- attribute
- 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
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/2282—Tablespace storage structures; Management thereof
Abstract
本申请涉及一种数据存储方法、装置、计算机设备和存储介质。所述方法包括:获取待写入数据,待写入数据包括账户标识和时间戳序列;将待写入数据按照时间戳序列写入内存的第一属性内存表中;根据第一属性内存表的数据量对第一属性内存表进行属性转换,得到第二属性内存表;根据第二属性内存表中数据的时间戳序列和账户标识确定所述数据的层级目录;层级目录为磁盘中的层级存储库所对应的层级目录,磁盘中包括至少两个层级存储库;根据层级目录将第二属性内存表中的数据按照时间戳序列迁移至磁盘中对应的层级存储库。采用本方法能够有效提高数据存储效率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种数据存储方法、装置、计算机设备和存储介质。
背景技术
随着互联网通信技术的迅速发展,各种各样的即时通讯软件层出不穷。随着用户量、消息数量的增大,系统会产生海量数据。例如,在IM系统(Instant Messenger,即时通信系统)中,对消息收发实时性的要求较高。而如何在海量数据、高并发场景下保持消息收发实时性成为了一个难题。传统的技术中,消息存储系统通常是搭建在开源的存储组件上,如采用Mysql、Redis(Remote Dictionary Server,远程字典服务)等数据库对数据进行存储,以便于后续数据的处理。
然而,Mysql数据库的存取性能有限,数据收发的速度较为缓慢;Redis全内存存储性能高,但存储容量有限。现有方式中消息的实时收发的效率较低。因此,在海量数据下如何有效提高数据存储效率成为目前需要解决的一个技术问题。
发明内容
基于此,有必要针对上述技术问题,提供一种能够有效提高数据存储效率的数据存储方法、装置、计算机设备和存储介质。
一种数据存储方法,所述方法包括:
获取待写入数据,所述待写入数据包括账户标识和时间戳序列;
将所述待写入数据按照所述时间戳序列写入内存的第一属性内存表中;
根据所述第一属性内存表的数据量对第一属性内存表进行属性转换,得到第二属性内存表;
根据所述第二属性内存表中数据的时间戳序列和账户标识确定所述数据的层级目录;所述层级目录为磁盘中的层级存储库所对应的层级目录,所述磁盘中包括至少两个层级存储库;
根据所述层级目录将所述第二属性内存表中的数据按照所述时间戳序列迁移至磁盘中对应的层级存储库。
一种数据存储装置,所述装置包括:
数据获取模块,用于获取待写入数据,所述待写入数据包括账户标识和时间戳序列;
第一存储模块,用于将所述待写入数据按照所述时间戳序列写入内存的第一属性内存表中;根据所述第一属性内存表的数据量对第一属性内存表进行属性转换,得到第二属性内存表;
数据迁移模块,用于根据所述第二属性内存表中数据的时间戳序列和账户标识确定所述数据的层级目录;所述层级目录为磁盘中的层级存储库所对应的层级目录,所述磁盘中包括至少两个层级存储库;
第二存储模块,用于根据所述层级目录将所述第二属性内存表中的数据按照所述时间戳序列迁移至磁盘中对应的层级存储库。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取待写入数据,所述待写入数据包括账户标识和时间戳序列;
将所述待写入数据按照所述时间戳序列写入内存的第一属性内存表中;
根据所述第一属性内存表的数据量对第一属性内存表进行属性转换,得到第二属性内存表;
根据所述第二属性内存表中数据的时间戳序列和账户标识确定所述数据的层级目录;所述层级目录为磁盘中的层级存储库所对应的层级目录,所述磁盘中包括至少两个层级存储库;
根据所述层级目录将所述第二属性内存表中的数据按照所述时间戳序列迁移至磁盘中对应的层级存储库。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取待写入数据,所述待写入数据包括账户标识和时间戳序列;
将所述待写入数据按照所述时间戳序列写入内存的第一属性内存表中;
根据所述第一属性内存表的数据量对第一属性内存表进行属性转换,得到第二属性内存表;
根据所述第二属性内存表中数据的时间戳序列和账户标识确定所述数据的层级目录;所述层级目录为磁盘中的层级存储库所对应的层级目录,所述磁盘中包括至少两个层级存储库;
根据所述层级目录将所述第二属性内存表中的数据按照所述时间戳序列迁移至磁盘中对应的层级存储库。
上述数据存储方法、装置和计算机设备,服务器获取待写入数据后,将待写入数据按照时间戳序列写入内存的第一属性内存表中,由此能够使得最新的消息存储在内存。若内存中第一属性内存表的数据量达到预设阈值,则将第一属性内存表转换为第二属性内存表;根据第二属性内存表中数据的时间戳序列和账户标识确定数据的层级目录,通过根据时间戳序列和账户标识确定数据的层级目录,进而根据层级目录将待迁移数据按照时间戳序列迁移至磁盘中对应的层级存储库。由于层级目录为磁盘中的层级存储库所对应的层级目录,磁盘中包括至少两个层级存储库,由此使得磁盘中的数据按照时间热度序列进行分层存储。时间戳序列反应了数据的冷热度,由此能够高效地将数据按照数据的冷热度进行分层存储,在读取数据时能够根据数据的冷热度快速地从相应的层级存储库读取数据,从而有效提高了数据的存储效率,进而即使在海量数据、高并发场景下,仍能够有效提高数据的收发速度和效率。
附图说明
图1为一个实施例中数据存储方法的应用环境图;
图2为一个实施例中数据存储方法的流程示意图;
图3为另一个实施例中数据存储方法的流程示意图;
图4为一个实施例中数据存储过程的示意图;
图5为一个实施例中构建索引文件和数据文件的示意图;
图6为一个实施例中数据查询步骤的流程示意图;
图7为另一个实施例中数据查询步骤的流程示意图;
图8为一个实施例中数据读取过程的示意图;
图9为一个实施例中数据存储装置的结构框图;
图10为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的数据存储方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104通过网络进行通信。服务器104获取终端102发送的待写入数据,将待写入数据按照时间戳序列写入内存的第一属性内存表中;根据第一属性内存表的数据量对第一属性内存表进行属性转换,得到第二属性内存表;根据第二属性内存表中数据的时间戳序列和账户标识确定数据的层级目录;层级目录为磁盘中的层级存储库所对应的层级目录,磁盘中包括至少两个层级存储库;根据层级目录将第二属性内存表中的数据按照时间戳序列迁移至磁盘中对应的层级存储库。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种数据存储方法,以该方法应用于图1中的终端为例进行说明,包括以下步骤:
步骤S202,获取待写入数据,待写入数据包括账户标识和时间戳序列。
其中,待写入数据是指需要存储的数据,例如待写入数据可以为即时通讯数据、业务数据、任务通知等数据。例如,在IM系统(Instant Messenger,即时通信系统)中,会产生大量的通讯数据,需要将这些大量的通讯数据存储至对应的数据存储系统。
例如,用户可以通过终端向服务器发起各种操作请求,例如数据通讯请求、数据上传请求、通知下发请求等。终端向服务器发送操起请求后,服务器根据操作请求获取需要存储的待写入数据。
其中,待写入数据包括了账户标识和时间戳序列。账户标识可以为每个用户对应的用户信息标识符,例如在相应业务系统的账户标识。时间戳是一份能够表示一份数据在某个特定时间之前已经存在的、完整的、可验证的数据,通常是一个字符序列,用于唯一标识数据的写入时间。时间戳序列则表示待写入数据的时间序列符。时间戳序列可以反映消息冷热特点,即数据的热度。
具体地,数据存储系统中包括一个或多个服务器,服务器中包括内存和磁盘。数据存储系统则包括多个层级的存储空间,包括内存和磁盘,磁盘中还包括多个层级的层级存储库,从而形成多层级结构的数据存储系统。其中,磁盘中还包括层及目录对应的多个层级存储库,每个层级目录对应一个层级存储库。层级存储库用于对数据进行分层存储。
步骤S204,将待写入数据按照时间戳序列写入内存的第一属性内存表中。
其中,内存表是指服务器的内存中用于存储数据的表结构,内存表的属性可以包括可写入内存表,即临时内存表;还可以包括只读内存表,即不可更改的内存表。第一属性内存表可以为可写入内存表,第二属性内存表可以为只读内存表。例如,服务器可以通过内存表按照哈希散列索引把数据保存在内存中,因此具有极快的速度,适合缓存中小型数据库。内存表存放在内存中,内存表最大所需内存可以预先设定。当数据超过临时表的最大值设定时,则将数据转存至磁盘。
服务器获取待写入数据后,首先按照时间戳序列的顺序将待存储数据存储至内存中的第一属性内存表中。
步骤S206,根据第一属性内存表的数据量对第一属性内存表进行属性转换,得到第二属性内存表。
其中,内存中包括至少两个内存表,其中至少包括一个第一属性内存表和一个第二属性内存表。第一属性内存表为可写入内存表,第二属性内存表为只读内存表。每个内存表都预先设置了数据存储容量。
服务器按照时间戳序列的顺序将待存储数据存储至内存中的第一属性内存表中,监测内存中每个内存表的数据量。若第一内存表中的数据量达到对应的容量阈值后,则对第一属性内存表进行属性转换,转换为第二属性内存表,即将临时属性的可写入内存表转换为只读属性的只读内存表。其中,内存表的属性转换不会导致其中存储的数据发生变化。
具体地,服务器将待写入数据存储至内存时,可以将带写入数据解析为键值对数据写入内存表进行存储。例如可以采用key-value键值对的形式存储。其中,key是关键字,value是值。Key-value数据库是一种以键值对存储数据的一种数据库,每个键都会对应一个唯一的值。采用key-value分布式存储,可以通过主键进行查询,这种方式存放数据量大、支持高并发且查询速度较快。
例如,内存中的第一属性内存表可以MemTable内存表,第二属性内存表可以为Immutable。其中,MemTable是一种在内存中保存数据的数据结构,用于存储最新写入的数据。在达到预设的数据量时,MemTable中的数据会flush到SST file中。MemTable既可以支持读服务也可以支持写服务,写操作会首先将数据写入Memtable,读操作在query SSTfiles之前会首先从MemTable中query数据。一旦MemTable满了,就会转换为只读的不可改变的,然后会创建一个新的MemTable来提供新的写操作。后台线程负责将MemTable中的数据flush到SST file,然后这个MemTable就会被销毁。
内存中的数据以Memtable存储,例如可以采用skiplist进行存储。当达到预设容量则转换为Immutable,由后台线程存储进磁盘中。同时另开一个新Memtable记录数据。Memtable记录修改新key-value对。其中,Memtable可读可写,Immutable不可更改。
步骤S208,根据第二属性内存表中数据的时间戳序列和账户标识确定数据的层级目录;层级目录为磁盘中的层级存储库所对应的层级目录,磁盘中包括至少两个层级存储库。
其中,磁盘中包括多个层级存储库,层级存储库包括对应的层级目录,每个层级目录对应一个层级存储库。磁盘中包括至少两个层级存储库,例如可以包括底层存储库和高层存储库。
当第二属性内存表的数据量达到预设存储量时,服务器则将第二属性内存表的数据迁移至磁盘中。
具体地,服务器根据时间戳序列确定第二属性内存表中的待迁移数据,并根据数据的时间戳序列和账户标识确定待迁移数据在磁盘中的层级目录。具体地,服务器可以按照时间戳序列的先后顺序首先将旧的数据迁移至磁盘中较低的层级存储库,并依次将新的数据迁移至磁盘的更高一级的层级存储库中。
在一个实施例中,第一属性内存表为可写内存表,第二属性内存表为只读内存表;若内存中第一属性内存表的数据量达到第一阈值,将第一属性内存表进行属性转换,生成第二属性内存表;当内存中第二属性内存表的数据量达到第二阈值时,根据时间戳序列确定第二属性内存表中的待迁移数据;将第一属性内存表转换为第二属性内存表后,在内存中创建新的可写内存表;可写内存表用于存储新的待写入数据。
服务器中内存的数据存储量可以预先配置,其中,可写入内存表和只读内存表的数据存储量可以分别配置。第一阈值表示可写入内存表的数据存储量阈值,第二阈值表示只读内存表的数据存储量阈值。例如,内存中可以包括多个可写入内存表和只读内存表,每个内存表配置了相应的数据存储量阈值。具体地,服务器在存储数据时,首先将数据按照时间戳序列写入内存的可写入内存表中。当可写入内存表中的数据达到第一阈值时,将可写入内存表的属性转换为不可更改的只读内存表。服务器将可写入内存表转换为只读内存表后,在内存中创建新的可写内存表,用于存储新的待写入数据。
进一步地,若内存中的可读内存表的数据量达到第二阈值时,根据时间戳序列确定只读内存表中的待迁移数据,并调用线程依次将按照时间戳序列将第二属性内存表中的数据迁移至磁盘中。从而能够有效对数据进行分层存储,有效提高了数据的存储效率。
步骤S210,根据层级目录将第二属性内存表中的数据按照时间戳序列迁移至磁盘中对应的层级存储库。
其中,磁盘的层级存储库中可以按照数据的账户标识进行存储,例如可以将某个账户标识在某一时间段内的数据作为一个整体进行存储。例如,服务器可以采用基于LSM-Tree模型的层级结构对数据进行存储。LSM-tree是一个多层结构,针对key-value数据进行存储,主要利用了磁盘的顺序写的特性。LSM-tree存储模型首先是内存的层,保存了所有最近写入的数据,这个内存结构是有序的,并且可以随时原地更新,同时支持随时查询。磁盘中则包括了多个层级存储库,每一个层级存储库是有序的数据存储结构。
服务器根据时间戳序列确定第二属性内存表中需要存储至磁盘的待迁移数据,并根据时间戳序列和账户标识确定待迁移数据对应的层级目录,进而将待迁移数据按照层级目录和相应的时间戳序列存储至相应的层级存储库中。
服务器将数据迁移至磁盘后,还可以进一步根据层级目录利用账户标识建立数据相应的索引文件,每个层级目录下可以对应多个索引文件,每个索引文件可以对应多个相应的数据文件,索引文件可以用于快速查询对应的数据。时间戳序列反映了数据的热度,即数据的冷热特点,由此能够有效地将时间较旧的历史数据存储在磁盘的高层存储库中,将相对较热的数据存储在磁盘的低层存储库中,将最新的数据存储在内存中。这种存储方式按照时间戳序列对应的数据热度和账户标识分层存储,能够高效地对数据进行存储,有效提高了数据的存储效率。从而在读取数据时,能够按照数据热度快速有效地获取所需的数据。
进一步地,服务器将待写入数据按照时间戳序列写入内存的第一属性内存表后,还可以根据时间戳序列确定数据的热度值。其中,热度值可以根据时间戳序列计算得到。例如可以将预设时间段内的时间戳序列划分为对应的热度值,如同一个账户标识的预设时间段内的数据确定为同一个热度值,例如预设时间段内可以为一分钟内、一小时内、一天内等等。服务器进而根据第一属性内存表的数据量对第一属性内存表进行属性转换,得到第二属性内存表。进一步根据第二属性内存表中数据的热度值和账户标识确定数据的层级目录。服务器进而根据层级目录将第二属性内存表中的数据按照热度值的顺序迁移至磁盘中对应的层级存储库,由此能够有效地按照数据的热度值,即数据的冷热特征,将数据进行分层存储,有效提高了数据的存储效率,进而有效提高了数据的读取效率。
在其中一个实施例中,该方法还包括:当层级存储库中的当前层级存储库中的数据量达到层级存储阈值时,生成新建的层级目录和层级存储库;新建的层级存储库用于存储待迁移数据;当层级存储库中的层级数量达到层级阈值时,按照层级序列将上一层级存储库中的文件合并至下一层相邻的层级存储库中。
服务器还可以预先设置磁盘中的层级存储库的层数,磁盘中的层级存储库可以分为低层和高层。其中高层中存储了较旧的历史数据,低层存储了相对较热的数据。每层的层级存储库就可以存储一个时间段的数据。例如,最高层可以为第一层,服务器可以将一个月以前的数据存储在磁盘的高层的第一层;将一周前的数据存储在第二层,将三天前的数据存储在第三层,以此逐层将数据进行存储,最低层存储的数据为最热的数据。
当层级存储库中的第一层级存储库中的数据量达到层级存储阈值时,生成新建的层级目录和层级存储库,用于存储新的待迁移数据。
磁盘中最高层的层级存储库可以为第一层级存储库,当磁盘的层级存储库中的第一层级存储库中的文件数量达到数量阈值时,按照层级序列将上一层级存储库中的文件合并至下一层相邻的层级存储库中。例如,若磁盘预设的层数为二十层,当磁盘的层级目录达到二十层时,则首先从第一层级存储库开始将相邻层的数据合并至第一层级存储库,依次按照层级序列将上一级层级存储库中的数据合并至下一层相邻的层级存储库中,由此有效地对磁盘中的层级目录进行调整,以继续存储更多的数据,从而有效提高了数据的存储效率。
上述数据存储方法中,服务器获取待写入数据后,根据时间戳序列将待写入数据写入内存的第一属性内存表中,由此能够使得最新的消息存储在内存。若内存中第一属性内存表的数据量达到预设阈值,则将第一属性内存表转换为第二属性内存表;根据第二属性内存表中数据的时间戳序列和账户标识确定数据的层级目录,通过根据时间戳序列和账户标识确定数据的层级目录,进而根据层级目录将待迁移数据按照时间戳序列迁移至磁盘中对应的层级存储库。由于层级目录为磁盘中的层级存储库所对应的层级目录,磁盘中包括至少两个层级存储库,由此使得磁盘中的数据按照时间热度进行分层存储。时间戳序列反应了数据的冷热度,由此能够高效地将数据按照数据的冷热度进行分层存储,在读取数据时能够根据数据的冷热度快速地从相应的层级存储库读取数据,从而有效提高了数据的存储效率,进而即使在海量数据、高并发场景下,仍能够有效提高数据的收发速度和效率。
在一个实施例中,如图3所示,提供了一种数据存储方法,具体包括:
步骤S302,获取待写入数据,待写入数据包括账户标识和时间戳序列。
步骤S304,根据时间戳序列将待写入数据写入内存的第一属性内存表中。
步骤S306,根据第一属性内存表的数据量对第一属性内存表进行属性转换,得到第二属性内存表。
步骤S308,根据第二属性内存表中数据的时间戳序列和账户标识确定数据的层级目录;层级目录为磁盘中的层级存储库所对应的层级目录,磁盘中包括至少两个层级存储库。
步骤S310,根据层级目录将第二属性内存表中的数据迁移至磁盘中对应的层级存储库。
步骤S312,根据第二属性内存表中待迁移数据的账户标识确定对应的索引标识。
步骤S314,根据索引标识生成待迁移数据的索引文件,根据待迁移数据的键值对生成对应的数据文件。
步骤S316,根据索引标识建立索引文件和数据文件的索引,将索引文件加载至内存中。
其中,在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。通过索引标识可以快速找到所需的内容。
服务器将待写入数据写入内存的第一属性内存表后,若内存中第一属性内存表的数据量达到预设阈值,则将第一属性内存表转换为第二属性内存表;根据第二属性内存表中数据的时间戳序列和账户标识确定数据的层级目录,通过根据时间戳序列和账户标识确定数据的层级目录,进而根据层级目录将待迁移数据迁移至磁盘中对应的层级存储库。
具体地,服务器将待迁移数据迁移至磁盘中对应的层级存储库的过程中,根据待迁移数据的账户标识确定对应的索引标识,根据索引标识生成待迁移数据的索引文件,索引文件可以直接存储在层级目录中,也可以单独进行存储。待迁移数据在磁盘中可以按照键值对的形式存储,服务器则根据待迁移数据的键值对生成对应的数据文件。进而根据索引标识建立索引文件和数据文件的索引,并将索引文件加载至内存中,使得在读取数据时,若待读取数据不在内存中,则可直接在内存的索引文件中查找待读取数据对应的索引,进而能够快速有效地在磁盘中查找到对应的数据,由此能够加快数据读取速度和减少磁盘IO的内容。例如,服务器可以将待迁移数据根据对应的层级目录生成索引文件和数据文件,例如索引文件可以为.idx形式的索引文件,数据文件可以为.data形式的文件,并利用idx文件按照uin粒度对data文件建立索引。其中,uin可以为数据的账户标识。
通过按照层级目录将数据存储至磁盘中相应的层级存储库中,并建立索引,由此使得磁盘中的数据按照时间热度序列进行分层存储。在读取数据时从而能够快速有效地根据时间戳序列和索引查询到相应的数据,有效提高了数据的存储效率,并且在海量数据、高并发场景下能够有效提高数据的收发速度和效率。
在一个实施例中,根据时间戳序列和账户标识确定待迁移数据的层级目录,根据层级目录将待迁移数据迁移至磁盘中的层级存储库包括:根据时间戳序列和索引标识确定待迁移数据的层级目录;将待迁移数据的索引文件和数据文件存储至磁盘中层级目录对应的层级存储库。
其中,索引文件中包括了账户标识,索引标识可以为账户标识。每个索引文件可以包括多个索引标识,每个索引标识可以对应一个或多个对应的数据文件。
服务器将待迁移数据迁移至磁盘中对应的层级存储库的过程中,根据待迁移数据的账户标识确定每个数据的索引标识,并建立对应的索引文件和数据文件。服务器根据时间戳序列和索引标识确定待迁移数据的层级目录,将待迁移数据的索引文件和数据文件存储至磁盘中层级目录对应的层级存储库。其中,数据文件中的数据可以按照键值对的序列进行存储。
例如,索引文件中可以包括多个用户的账户标识,索引中包括账户信息,每个数据都包括相应的序列号,例如可以为时间戳序列。用户的的数据可以按照key-value键值对存储在索引文件对应的数据文件中。例如,数据存储系统中可以包括多个存储服务器,每个用户会分配到一个服务器,每个服务器存储多个用户的数据文件。这些数据文件可以按账户标识和时间戳序列进行排序,每个数据文件可以存储多条数据,例如第一个数据文件可以存储第1-10万条数据,第二个数据文件存储第10-20万条数据,从而有序地对数据进行存储。由此使得磁盘中的数据按照时间热度序列进行分层存储,从而在读取数据时从而能够快速有效地根据时间戳序列和索引查询到相应的数据,有效提高了数据的存储效率和查询效率。
在一个实施例中,该方法还包括:根据时间戳序列确定第二属性内存表中待迁移数据的迁移序列;根据迁移序列调用线程将待迁移数据迁移至磁盘。
其中,线程是操作系统能够进行运算调度的最小单位,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。多线程是指从软件或者硬件上实现多个线程并发执行的技术。采用多线程方式能够在同一时间执行多于一个线程,从而能够提升整体处理性能。队列是一种线性表数据结构,当有较多线程需要处理时,可以采用线程队列的方式通过线程对相应的请求进行处理。
例如,在将第二属性内存表的数据迁移至磁盘的过程中,可以分别调用多个线程队列,根据时间戳序列确定待迁移数据的迁移序列,服务器则通过线程队列按照迁移序列分别将待迁移数据迁移至磁盘,以按照时间戳序列传输待迁移数据,由此能够有效对数据迁移过程中的资源消耗始进行负载均衡,从而能够有效保证数据处理效率。
在一个实施例中,在将待写入数据写入内存的第一属性内存表中之前,还包括:获取待写入数据对应的日志文件;根据账户标识和时间戳序列将日志文件存储至磁盘中的日志存储库。
其中,日志文件是记录在操作系统或其他软件运行中发生的事件或在通信软件的不同用户之间的消息的文件,用于记录系统操作事件的记录文件或文件集合,可分为事件日志和消息日志。具有处理历史数据、诊断问题的追踪以及理解系统的活动等重要作用。例如,在即时通讯系统中,多个用户在进行通讯时,日志文件可以记录相应的通讯数据,即时消息和客户端通常提供存储加密日志的机会以增强用户的隐私,如可以包括用户操作类型、账户标识、操作数据等内容。
服务器接收到用户终端发送的操作请求后,首先根据操作请求的内容生成相应的日志文件,日志文件中包括数据的账户标识和时间戳序列。服务器在将待写入数据写入内存的第一属性内存表中之前,首先将日志文件存储至磁盘的日志存储库中,再将待写入数据写入内存的第一属性内存表中。由此能够有效避免在数据丢失或者系统崩溃时,从日志文件中恢复相关的数据,进而能够有效保证数据存储的有效性和完整性。
在一个实施例中,该方法还包括:当内存中的数据丢失时,根据账户标识和时间戳序列在日志文件中查找对应的丢失数据;将丢失数据从日志文件中恢复至内存中。
当内存中的数据丢失时,由于在将数据写入内存之前,已经将相应的日志文件存储在磁盘中。服务器则可以根据账户标识和时间戳序列在磁盘的日志文件中查找到相应的丢失数据,并将这部分丢失数据从日志文件中恢复至内存中,并按照账户标识和时间戳序列恢复至内存的相应位置的内存表中。通过在将数据写入内存之前,将操作记录写入日志文件并将日志文件存储至磁盘中,然后再将待写入数据写入内存中,由此即时系统崩溃或其他异常情况导致数据丢失,也可以从日志文件中恢复内存中的数据,不会造成数据丢失,从而有效提高了数据的存储可靠性和存储效率。
在一个具体的实施例中,数据存储系统可以包括日志文件、可写内存表、只读内存表和多个层级存储库。如图4所示,图4为具体的数据存储过程示意图。例如日志文件可以标识为log文件,可写内存表可以表示为MemTable,只读内存表可以标识为ImmuTable,层级存储库可以标识为levelN。其中,MemTable为当前可写入的内存表,该内存表可以采用SkipList存储key-value键值对数据,SkipList按key有序。服务器获取带写入数据后,将待写入数据按照时间戳序列依次存储至MemTable内存表中。当MemTable内存占用达到阈值,则把该MemTable变成只读的ImmuTable,并生成新的MemTable,用于新写入数据。随着数据不断写入,ImmuTable的个数会越来越多,当个数达到一定的界限后,后台线程会把最旧的一个ImmuTable Dump到磁盘。
图5为构建索引文件和数据文件的示意图,如图5所示,将数据存储至磁盘时,生成新的data文件和相应的索引文件idx,data文件内部按key-value键值对进行有序存储,将idx文件与相对应的data文件按照uin粒度建立索引,即可以利用账户标识建立索引文件与数据文件直接的索引。磁盘中的data文件和idx文件按照层来进行组织,每层目录有若干个data文件和idx文件。新写入的data文件和idx文件进入最高层levelN,当最高层的文件数达到阈值后,服务器则在磁盘中重新创建一个目录,可以命名为Level N+1,用于存放新生成的data文件和idx文件。由此使得磁盘中的数据按照时间热度序列进行有序的分层存储,从而在读取数据时从而能够快速有效地根据时间戳序列和索引查询到相应的数据,有效提高了数据的存储效率和查询效率。
在一个实施例中,如图6所示,该方法还包括数据查询的步骤,具体包括:
步骤S602,获取终端发送的数据查询请求,数据查询请求携带账户标识和请求信息。
步骤S604,根据请求信息确定时间戳序列范围,根据账户标识在内存中查找时间戳序列范围对应待读取数据。
步骤S606,利用待读取数据生成对应的查询结果,将查询结果返回至终端。
服务器将数据存储后,用户还可以通过终端向服务器发起数据查询请求,以读取所需的数据,查询请求中携带用户的账户标识以及具体的请求信息,例如待查找数据的时间范围。具体地,服务器获取终端发送的数据查询请求后,根据请求信息确定时间戳序列范围,服务器首先根据账户标识在内存中查找时间戳序列范围对应待读取数据。若内存中存在待读取数据时,服务器则利用待读取数据生成对应的查询结果,并将查询结果返回至终端。
若内存中存在待读取数据,表示待读取数据为较热的数据。若内存中不存在待读取数据,则表示为较旧的历史数据,服务器则需要从磁盘中获取对应的待读取数据,并返回给终端。通常较热的时间近的数据访问频率较高,由此能够快速从内存中或磁盘的低层中获取所需的数据。通过将数据按照时间热度序列进行分层存储,从而在读取数据时从而能够快速有效地根据时间戳序列在相应的层级结构中查询到相应的数据,有效提高了数据的查询效率。
在一个实施例中,如图7所示,数据查询的过程中,根据索引标识获取对应的数据文件的步骤,具体包括:
步骤S702,获取终端发送的数据查询请求,数据查询请求携带账户标识和请求信息。
步骤S704,根据请求信息确定时间戳序列范围,根据账户标识在内存中查找时间戳序列范围对应待读取数据。
步骤S706,利用待读取数据生成对应的查询结果,将查询结果返回至终端。
步骤S708,当查询结果为空时,根据时间戳序列范围确定待读取数据在磁盘中的层级目录。
步骤S710,根据账户标识按照层级目录的层级序列查找对应的索引标识。
步骤S712,获取索引标识对应的索引文件,根据索引文件获取对应的数据文件;利用数据文件生成查询结果,将查询结果返回至终端。
服务器获取终端发送的数据查询请求后,根据请求信息确定时间戳序列范围,服务器首先根据账户标识在内存中查找时间戳序列范围对应待读取数据。若内存中存在待读取数据时,服务器则利用待读取数据生成对应的查询结果,并将查询结果返回至终端。
若内存中不存在待读取数据,则表示为较旧的历史数据,服务器则需要从磁盘中获取对应的待读取数据。具体地,服务器先从磁盘的最高层开始查找,首先根据时间戳序列范围确定待读取数据在磁盘中的层级目录,并根据账户标识按照层级目录的层级序列查找对应的索引标识。服务器查找到索引标识后,再根据索引标识获取对应的数据文件,从而获取到对应的待读取数据。服务器在磁盘中进行查找时,可以通过对索引文件进行二分查找,可以根据账户标识快速判断待读取数据是否落在该索引对应的数据文件中,从而能够快速查找到相应的数据。
进一步地,服务器建立索引文件后,将建立的索引文件存储内存中,由此可以直接在内存中加载索引文件。若内存中不存在待读取数据时,服务器还可以直接加载内存中的索引文件,在索引文件中查找待读取数据对应的索引标识,进而根据索引标识确定待读取数据在磁盘中的层级目录,并根据索引标识和账户标识在磁盘中相应的层及目录中进行查找。查找到索引标识后,再根据账户标识获取对应的数据文件,从而获取到对应的待读取数据。通过在内存中的索引文件中查找待读取数据对应的索引标识,进而能够快速有效地在磁盘中查找到对应的数据,由此能够加快数据读取速度和减少磁盘IO的内容。
图8为一个具体的实施例中的数据读取流程,如图8所示,当终端需要读取用户的N条数据时,服务器获取终端发送的数据查询请求后,首先在内存中的MemTable内存表中查找。若MemTable内存表中已有N条数据,则直接获取对应的数据,并返回至终端。如果MemTable内存表中不够N条数据,则继续在内存中的多个Immutable内存表中去读取,若读够N条数据,就获取对应的数据并返回至终端。否则,服务器则从磁盘中进行查找。
服务器在磁盘进行查找过程中,首先从最高层第M层的索引文件中查找,需要从该层最新的索引文件遍历到最旧的索引文件,直到找到索引标识和时间戳序列范围对应N条消息为止。如果在该层没有读够N条消息,则需要继续顺序遍历查找第M-1层到第1层。由于第M-1层到第1层,层内的data文件之间是排好序的,因此在查找这些层的数据时,每层最多需要一次磁盘I/O(磁盘读写指令),则可以把该层的属于这个索引标识对应的数据文件全部读出来。由此有效提高了数据的查询效率。
在其中一个实施例中,为了加快读取速度和减少磁盘I/O,服务器根据账户标识与对应的数据文件建立索引文件后,将索引文件存储至进内存。服务器在内存中被查询到满足条件的数据时,则直接通过对内存中的索引文件进行二分查找,可以快速判断账户标识对应的待查找数据是否落在该索引对应的数据文件中,并且可以快速确定数据文件对应的层级目录和存储位置,从而可以快速从磁盘中获取对应的数据文件,并将查询到的数据返回至终端。通过将数据按照时间热度序列进行分层存储,建立相应的索引文件,并将索引文件存储在内存中,从而在读取数据时从而能够快速有效地根据索引标识确定数据在磁盘中的位置,从而能够快速查询到相应的数据,有效提高了数据的查询效率。
本申请还提供一种应用场景,该应用场景应用上述的数据存储方法。具体地,该数据存储方法在该应用场景的应用如下:
以通讯数据为例,在即时通讯应用场景中,随着用户之间的通讯需求增大,会产生大量的通讯数据,需要理由数据存储系统对这些通讯数据进行存储。服务器在对通讯数据进行存储时,首先按照通讯数据的时间戳序列依次将通讯数据存储至内存中的可写入内存表中。当内存中可写入内存表的数据存储量达到阈值后,则将可写入内存表转换为只读内存表。当内存中的只读内存表的数据量也达到对应的阈值时,服务器则将只读内存表中的通讯数据按照时间戳序列的顺序依次迁移至磁盘中。具体地,服务器根据通讯数据的时间戳序列和账户标识确定相应的层级目录,例如确定时间戳较旧的历时通讯数据的层级目录为高层,如可以为表示levelN,当高层的数据存储量达到阈值后,则重新创建一个层级目录,如可以表示为levelN+1。较热的通讯数据则按照时间戳序列确定对应的层级目录为levelN+1。由此能够有效地对通讯数据进行存储,从而用户在查询数据时,能够按照数据的时间戳序列对应的层级快速查询到所需的数据。
应该理解的是,虽然图2、3、6、7的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2、3、6、7中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图9所示,提供了一种数据存储装置900,该装置可以采用软件模块或硬件模块,或者是二者的结合成为计算机设备的一部分,该装置具体包括:数据获取模块902、第一存储模块904、数据迁移模块906和第二存储模块908,其中:
数据获取模块902,用于获取待写入数据,待写入数据包括账户标识和时间戳序列;
第一存储模块904,用于将待写入数据按照时间戳序列写入内存的第一属性内存表中;根据第一属性内存表的数据量对第一属性内存表进行属性转换,得到第二属性内存表;
数据迁移模块906,用于根据第二属性内存表中数据的时间戳序列和账户标识确定数据的层级目录;层级目录为磁盘中的层级存储库所对应的层级目录,磁盘中包括至少两个层级存储库;
第二存储模块908,用于根据层级目录将第二属性内存表中的数据按照时间戳序列迁移至磁盘中对应的层级存储库。
在一个实施例中,第一属性内存表为可写内存表,第二属性内存表为只读内存表;第一存储模块904还用于若内存中可写内存表的数据量达到第一阈值,将可写内存表进行属性转换,得到只读内存表;在内存中创建新的可写内存表;新的可写内存表用于存储新的待写入数据;当内存中只读内存表的数据量达到第二阈值时,根据时间戳序列确定只读内存表中的待迁移数据。
在一个实施例中,第二存储模块908还用于根据第二属性内存表中待迁移数据的账户标识确定对应的索引标识;根据索引标识生成待迁移数据的索引文件,根据待迁移数据的键值对生成对应的数据文件;根据索引标识建立索引文件和数据文件的索引,将索引文件加载至内存中。
在一个实施例中,第二存储模块908还用于根据时间戳序列和索引标识确定待迁移数据的层级目录;将待迁移数据的索引文件和数据文件存储至磁盘中层级目录对应的层级存储库。
在一个实施例中,第二存储模块908还用于当层级存储库中的当前层级存储库中的数据量达到层级存储阈值时,生成新建的层级目录和层级存储库;新建的层级存储库用于存储待迁移数据;当层级存储库的层级数量达到层级阈值时,按照层级序列将上一层级存储库中的文件合并至下一层相邻的层级存储库中。
在一个实施例中,该装置还包括数据查询模块,用于获取终端发送的数据查询请求,数据查询请求携带账户标识和请求信息;根据请求信息确定时间戳序列范围,根据账户标识在内存中查找时间戳序列范围对应待读取数据;利用待读取数据生成对应的查询结果,将查询结果返回至终端。
在一个实施例中,数据查询模块还用于当查询结果为空时,根据时间戳序列范围确定待读取数据在磁盘中的层级目录;根据账户标识按照层级目录的层级序列查找对应的索引标识;获取索引标识对应的索引文件,根据索引文件获取对应的数据文件;利用数据文件生成查询结果,将查询结果返回至终端。
关于数据存储装置的具体限定可以参见上文中对于数据存储方法的限定,在此不再赘述。上述数据存储装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图10所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储待写入数据、日志文件等数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据存储方法。
本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种数据存储方法,其特征在于,所述方法包括:
获取待写入数据,所述待写入数据包括账户标识和时间戳序列;
将所述待写入数据按照所述时间戳序列写入内存的第一属性内存表中;
根据所述第一属性内存表的数据量对第一属性内存表进行属性转换,得到第二属性内存表;
根据所述第二属性内存表中数据的时间戳序列和账户标识确定所述数据的层级目录;所述层级目录为磁盘中的层级存储库所对应的层级目录,所述磁盘中包括至少两个层级存储库;
根据所述层级目录将所述第二属性内存表中的数据按照所述时间戳序列迁移至所述磁盘中对应的层级存储库。
2.根据权利要求1所述的方法,其特征在于,所述第一属性内存表为可写内存表,所述第二属性内存表为只读内存表;所述方法还包括:
若所述内存中所述可写内存表的数据量达到第一阈值,将所述可写内存表进行属性转换,得到只读内存表;在所述内存中创建新的可写内存表;所述新的可写内存表用于存储新的待写入数据;
当所述内存中所述只读内存表的数据量达到第二阈值时,根据所述时间戳序列确定所述只读内存表中的待迁移数据。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
根据所述第二属性内存表中待迁移数据的账户标识确定对应的索引标识;
根据所述索引标识生成所述待迁移数据的索引文件,根据所述待迁移数据的键值对生成对应的数据文件;
根据所述索引标识建立所述索引文件和所述数据文件的索引,将所述索引文件加载至所述内存中。
4.根据权利要求3所述的方法,其特征在于,所述根据所述时间戳序列和所述账户标识确定所述待迁移数据的层级目录,根据所述层级目录将所述待迁移数据迁移至磁盘中的层级存储库包括:
根据所述时间戳序列和所述索引标识确定所述待迁移数据的层级目录;
将所述待迁移数据的索引文件和数据文件存储至磁盘中所述层级目录对应的层级存储库。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述层级存储库中的当前层级存储库中的数据量达到层级存储阈值时,生成新建的层级目录和层级存储库;所述新建的层级存储库用于存储待迁移数据;
当所述层级存储库的层级数量达到层级阈值时,按照层级序列将上一层级存储库中的文件合并至下一层相邻的层级存储库中。
6.根据权利要求1至5任意一项所述的方法,其特征在于,所述方法还包括:
获取终端发送的数据查询请求,所述数据查询请求携带账户标识和请求信息;
根据所述请求信息确定时间戳序列范围,根据所述账户标识在所述内存中查找所述时间戳序列范围对应待读取数据;
利用所述待读取数据生成对应的查询结果,将所述查询结果返回至所述终端。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
当所述查询结果为空时,根据所述时间戳序列范围确定所述待读取数据在所述磁盘中的层级目录;
根据所述账户标识按照所述层级目录的层级序列查找对应的索引标识;
获取所述索引标识对应的索引文件,根据所述索引文件获取对应的数据文件;利用所述数据文件生成查询结果,将所述查询结果返回至所述终端。
8.一种数据存储装置,其特征在于,所述装置包括:
数据获取模块,用于获取待写入数据,所述待写入数据包括账户标识和时间戳序列;
第一存储模块,用于将所述待写入数据按照所述时间戳序列写入内存的第一属性内存表中;根据所述第一属性内存表的数据量对第一属性内存表进行属性转换,得到第二属性内存表;
数据迁移模块,用于根据所述第二属性内存表中数据的时间戳序列和账户标识确定所述数据的层级目录;所述层级目录为磁盘中的层级存储库所对应的层级目录,所述磁盘中包括至少两个层级存储库;
第二存储模块,用于根据所述层级目录将所述第二属性内存表中的数据按照所述时间戳序列迁移至磁盘中对应的层级存储库。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010280458.2A CN113515518A (zh) | 2020-04-10 | 2020-04-10 | 数据存储方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010280458.2A CN113515518A (zh) | 2020-04-10 | 2020-04-10 | 数据存储方法、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113515518A true CN113515518A (zh) | 2021-10-19 |
Family
ID=78060551
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010280458.2A Pending CN113515518A (zh) | 2020-04-10 | 2020-04-10 | 数据存储方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113515518A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114328545A (zh) * | 2022-03-03 | 2022-04-12 | 北京蚂蚁云金融信息服务有限公司 | 数据存储及查询方法、装置及数据库系统 |
-
2020
- 2020-04-10 CN CN202010280458.2A patent/CN113515518A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114328545A (zh) * | 2022-03-03 | 2022-04-12 | 北京蚂蚁云金融信息服务有限公司 | 数据存储及查询方法、装置及数据库系统 |
CN114328545B (zh) * | 2022-03-03 | 2022-07-08 | 北京蚂蚁云金融信息服务有限公司 | 数据存储及查询方法、装置及数据库系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11327799B2 (en) | Dynamic allocation of worker nodes for distributed replication | |
US10417265B2 (en) | High performance parallel indexing for forensics and electronic discovery | |
KR102311032B1 (ko) | 데이터베이스 동기화 | |
CN110781214A (zh) | 数据库读写方法、装置、计算机设备和存储介质 | |
JP2018516409A (ja) | ファイルストレージにおけるインデックス付け実施方法及びシステム | |
US20210240372A1 (en) | Data storage scheme switching in a distributed data storage system | |
US20230418811A1 (en) | Transaction processing method and apparatus, computing device, and storage medium | |
CN113760847A (zh) | 日志数据处理方法、装置、设备及存储介质 | |
Shi et al. | ByteSeries: an in-memory time series database for large-scale monitoring systems | |
CN114610680A (zh) | 分布式文件系统元数据管理方法、装置、设备及存储介质 | |
US11494105B2 (en) | Using a secondary storage system to implement a hierarchical storage management plan | |
CN113515518A (zh) | 数据存储方法、装置、计算机设备和存储介质 | |
CN113051221A (zh) | 数据存储方法、装置、介质、设备及分布式文件系统 | |
CN115544007A (zh) | 标签预处理方法、装置、计算机设备和存储介质 | |
CN115421856A (zh) | 一种数据恢复方法及装置 | |
CN114896250A (zh) | 一种键值分离的键值存储引擎索引优化方法及装置 | |
CN114265828A (zh) | 行迁移消除方法、装置、计算机设备和存储介质 | |
CN113901018A (zh) | 一种待迁移文件识别方法、装置、计算机设备及存储介质 | |
CN114416689A (zh) | 数据迁移方法、装置、计算机设备、存储介质 | |
CN108376104B (zh) | 节点调度方法及装置、计算机可读存储介质 | |
CN111339245A (zh) | 数据存储方法、装置、存储介质及设备 | |
CN113495807A (zh) | 数据备份方法、数据恢复方法及装置 | |
CN115292094B (zh) | 数据恢复处理方法、装置、设备、存储介质和程序产品 | |
CN115617580B (zh) | 基于共享sst文件的增量备份、恢复方法和系统 | |
CN115718571B (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 |