CN112486915B - 数据存储方法及装置 - Google Patents

数据存储方法及装置 Download PDF

Info

Publication number
CN112486915B
CN112486915B CN202011511668.4A CN202011511668A CN112486915B CN 112486915 B CN112486915 B CN 112486915B CN 202011511668 A CN202011511668 A CN 202011511668A CN 112486915 B CN112486915 B CN 112486915B
Authority
CN
China
Prior art keywords
data
stored
storage
index
file
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
Application number
CN202011511668.4A
Other languages
English (en)
Other versions
CN112486915A (zh
Inventor
郑志升
李天烨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Bilibili Technology Co Ltd
Original Assignee
Shanghai Bilibili Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Bilibili Technology Co Ltd filed Critical Shanghai Bilibili Technology Co Ltd
Priority to CN202011511668.4A priority Critical patent/CN112486915B/zh
Publication of CN112486915A publication Critical patent/CN112486915A/zh
Application granted granted Critical
Publication of CN112486915B publication Critical patent/CN112486915B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/148File search processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Library & Information Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例提供了一种数据存储方法,所述方法包括:获取待存储数据;对所述待存储数据的类型进行判断,并根据判定出的类型确定所述待存储数据的索引方式;根据确定的索引方式在数据桶中创建所述待存储数据的存储索引文件;根据所述存储索引文件将所述待存储数据存储至对应的存储文件中。本申请可以减少对数据进行更新时所需要花费的时间。

Description

数据存储方法及装置
技术领域
本申请实施例涉及数据处理技术领域,尤其涉及一种数据存储方法及装置。
背景技术
随着网络技术的飞速发展,各种类型的数据的量暴增,在面对这些暴增的数据时,对于不同类型的数据需要不同的落地分布,比如,需要对数据进行打散,然后存储到不同的数据存储容器中。在现有技术中,当将数据存储至HUDI数据库时,一般是根据数据时间来建立存储数据的索引,然后根据建立的索引对数据进行存储。然而,发明人发现,现有技术在创建索引时,是先对数据进行消息摘要计算,然后根据得到的消息摘要进行哈希,之后根据哈希值将数据的索引存储至不同的数据桶(bucket)。比如,在存储评论场景下的评论数据时,若当前最近1分钟有1000条评论数据需要被存储,则在存储时,会先创建这1000条评论数据的索引,然后将这些索引平均分配存储至1000个bucket中。这样,在进行数据更新时,则需要对所有的bucket进行读取,并对每个bucket中HFile(文件)进行读取,找到该条数据的索引,然后根据索引找到这条数据,并对这条数据进行更新。通过上述方式创建的索引,在对多条数据进行更新时,需要去多个bucket读取HFile,以找到各条数据,导致对数据的更新需要花费很长的时间。
发明内容
本申请实施例的目的是提供一种数据存储方法、装置、计算机设备及计算机可读存储介质,可以解决现有技术在对数据进行更新时需要花费较长时间的问题。
本申请实施例的一个方面提供了一种数据存储方法,所述方法包括:
获取待存储数据;
对所述待存储数据的类型进行判断,并根据判定出的类型确定所述待存储数据的索引方式;
根据确定的索引方式在数据桶中创建所述待存储数据的存储索引文件;
根据所述存储索引文件将所述待存储数据存储至对应的存储文件中。
可选的,对所述待存储数据的类型进行判断,并根据判定出的类型确定所述待存储数据的索引方式包括:
对所述待存储数据的类型进行判断,以确定所述待存储数据所对应的预设场景;
根据所述预设场景信息,确定所述待存储数据的索引方式。
可选的,所述根据所述预设场景信息,确定所述待存储数据的索引方式包括:
在判定出所述待存储数据的类型为第一预设场景的数据时,确定所述待存储数据的索引方式为基于所述待存储数据的时间戳进行索引;
所述根据确定的索引方式在数据桶中创建所述待存储数据的存储索引文件包括:
根据所述待存储数据的创建时间戳确定存储所述存储索引文件的数据桶;
在确定的所述数据桶中创建所述存储索引文件,其中,所述存储索引文件中包含有所述待存储数据的存储路径以及所述待存储数据存储的文件信息。
可选的,所述根据所述待存储数据的创建时间戳确定存储所述存储索引文件的数据桶包括:
计算所述创建时间戳的消息摘要;
对计算得到的消息摘要进行哈希运算得到存储所述存储索引文件的数据桶。
可选的,所述根据所述预设场景信息,确定所述待存储数据的索引方式包括:
在判定出所述待存储数据的存储类型为第二预设场景的数据时,确定所述待存储数据的索引方式为基于用户标识及时间区间进行索引;
所述根据确定的索引方式在数据桶中创建所述待存储数据的存储索引文件包括:
根据所述待存储数据对应的用户标识确定存储所述存储索引文件的数据桶;
根据所述待存储数据对应的时间区间在确定的所述数据桶中创建所述存储索引文件,其中,所述存储索引文件中包含有所述待存储数据的存储路径以及所述待存储数据存储的文件信息。
可选的,所述根据所述待存储数据对应的时间区间在确定的所述数据桶中创建所述存储索引文件包括:
根据所述待存储数据对应的时间区间的不同在确定的所述数据桶中创建不同的存储索引文件。
可选的,所述根据所述待存储数据对应的用户标识确定存储所述存储索引文件的数据桶包括:
计算所述用户标识的消息摘要;
对计算得到的消息摘要进行哈希运算得到存储所述存储索引文件的数据桶。
可选的,所述数据存储方法还包括:
在接收到数据更新指令时,根据所述数据更新指令确定待更新数据的存储索引文件;
根据确定的所述存储索引文件确定所述待更新数据的存储路径和存储文件信息;
根据所述待更新数据的存储路径和存储文件信息读取所述待更新数据,并对所述待更新数据进行更新。
本申请实施例的再一个方面提供了一种数据存储装置,包括:
获取模块,用于获取待存储数据;
判断模块,用于对所述待存储数据的类型进行判断,并根据判定出的类型确定所述待存储数据的索引方式;
创建模块,用于根据确定的索引方式在数据桶中创建所述待存储数据的存储索引文件;
存储模块,用于根据所述存储索引文件将所述待存储数据存储至对应的存储文件中。
本申请实施例的再一个方面提供了一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,上述处理器执行上述计算机程序时用于实现如上任一项所述的数据存储方法的步骤。
本申请实施例的又一个方面提供了一种计算机可读存储介质,其上存储有计算机程序,上述计算机程序被处理器执行时用于实现如上任一项所述的数据存储方法的步骤。
本申请实施例提供的数据存储方法、***、计算机设备及计算机可读存储介质,通过获取待存储数据;对所述待存储数据的类型进行判断,并根据判定出的类型确定所述待存储数据的索引方式;根据确定的索引方式在数据桶中创建所述待存储数据的存储索引文件;根据所述存储索引文件将所述待存储数据存储至对应的存储文件中。本申请通过在创建索引时会根据不同类型的数据采用不同的方式来创建索引,从而使得创建的索引是与数据类型匹配的,进行使得可以根据创建出的索引方便地查找到数据的存储位置,方便后续对数据进行更新,减少数据更新所花费的时间。
附图说明
图1示意性示出了实现本申请实施例的数据存储方法的数据传输***的示意图;
图2示意性示出了根据本申请一实施例的数据存储方法的流程图;
图3示意性示出了一实施例根据确定的索引方式在数据桶中创建所述待存储数据的存储索引文件的步骤细化流程图;
图4示意性示出了根据所述待存储数据的创建时间戳确定存储所述存储索引文件的数据桶的步骤细化流程图;
图5示意性示出了另一实施例根据确定的索引方式在数据桶中创建所述待存储数据的存储索引文件的步骤细化流程图;
图6示意性示出了根据所述待存储数据对应的用户标识确定存储所述存储索引文件的数据桶的步骤细化流程图;
图7示意性示出了另一实施例的数据存储方法的流程图;
图8示意性示出了根据本申请实施例的数据存储装置的框图;以及
图9示意性示出了根据本申请实施例的适于实现数据存储方法的计算机设备的硬件架构示意图。
具体实施方式
为了使本申请实施例的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
图1示意性示出了实现本申请实施例的数据传输***的示意图,所述数据传输***可以由下几部分组成:数据源层、网络路由层2、数据缓冲层3、数据分发层4、数据存储层3等。
数据源层,可以包括内部数据源,也可以是连接外部数据源的数据接口。所述数据源层中可以有多种格式的数据,例如,APP和Web的上报数据是HTTP(HyperText TransferProtocol,超文本传输协议)格式的数据,服务端的内部通信数据是RPC(Remote ProcedureCall,远程过程调用)格式的数据。如图1所示,所述数据源层的数据可以是通过一个或多个边缘节点接收的移动终端上报的日志数据等,也可以是数据库(如,Mysql)、日志代理(LogAgent)等各个***或设备提供的数据。
经由网关和消息***,数据源层可以将数据传输到Collector 2。其中:
网关,用于将数据源层提供的数据转发到消息***中。所述网关可以适应各种不同的业务场景和数据协议,例如,被配置用于兼容解析HTTP(HyperText TransferProtocol,超文本传输协议)协议的APP和Web数据,和GRPC协议的内部通信数据。
消息***,可以由一个或多个Kafka集群构成,用于将所述数据源层中的数据发布到相应的主题下。不同重要性、优先级、数据吞吐量的数据,可以被分流到不同的kafka集群中,以保障不同类型数据的价值,避免***故障影响整体数据。
Collector 2,为基于Flink的流式分发节点。所述Collector 2可以通过消息***的相应主题下消费数据并将数据进行转换和分发存储,即保障数据从消息***获取并写入到数据存储层3中对应的存储终端,例如HDFS、Kafka、Hbase、ES(Elasticsearch)等。
数据存储层3,用于存储数据,可以由不同形式的数据库构成。数据存储层3可以为HUDI(Apache Hudi)数据库,其中,HUDI数据库可以用于管理通过DFS(HDFS或云存储)存储的大型分析数据集,其支持在当前数据表中进行更新操作。
实施例一
图2示意性示出了根据本申请实施例一的数据存储方法的流程图。该数据存储方法可以应用于HUDI数据库中,可以理解,本方法实施例中的流程图不用于对执行步骤的顺序进行限定。下面以数据存储装置为执行主体进行示例性描述。如图2所示,该数据存储方法可以包括步骤S20~步骤S23,其中:
步骤S20,获取待存储数据。
具体地,所述待存储数据可以为一条数据,也可以为一批数据,在本实施例中,所述待存储数据优选为一批数据,比如,为1分钟内各个用户发布的评论数据。在本实施例中,所述待存储数据可以为各种类型的数据,比如,为评论场景下的评论数据,又比如,为关系链场景下的与UP主相关的数据(例如,UP主的粉丝数据)。
步骤S21,对所述待存储数据的类型进行判断,并根据判定出的类型确定所述待存储数据的索引方式。
具体地,在将待存储数据进行存储时,为了便于后续对待存储数据进行更新或者查找等,本实施例中,在进行数据存储之前,需要先创建所述待存储数据的索引(Index),这样,在进行数据存储时,即可以根据该创建的索引来对数据进行存储,此外,在后续对存储的数据进行更新或者查询时,也可以根据该索引来快速找打这个数据。
在本实施例中,为了提升后续对数据进行更新或者查询的性能,在建立索引时,可以根据数据类型的不同采用不同的索引方式建立数据的索引。具体而言,可以先采用预设设定的判定规则来对所述待存储数据的类型进行判断,然后在判定出所述待存储数据的类型后,根据预先创建的数据类型与索引方式的映射表来确定当前类型的待存储数据所对应的索引方式。
在示例性的实施方式中,所述步骤S21可以包括如下步骤:对所述待存储数据的类型进行判断,以确定所述待存储数据所对应的预设场景;根据所述预设场景信息,确定所述待存储数据的索引方式。
具体地,不同场景对应的待存储数据对应的索引方式不同,为了确定待存储数据的索引方式,本实施例中,可以先采用预设设定的判定规则来对所述待存储数据的类型进行判断,以确定所述待存储数据属于哪种预设场景,并在确定出预设场景之后,可以根据预设场景与索引方式的映射表来确定当前待存数据数据的索引方式。
在示例性的实施方式中,所述根据所述预设场景信息,确定所述待存储数据的索引方式可以包括如下步骤:在所述待存储数据的类型为第一预设场景的数据时,确定所述待存储数据的索引方式为基于所述待存储数据的时间戳进行索引。
具体地,所述第一预设场景为数据产生的时间具有比较明显的规律的场景,比如,评论数据场景。一般来说,对于每个稿件或者视频的评论数据都是在稿件或者视频发布的一天或者一周以内能产生较多的评论数据,在离稿件或者视频发布的越晚时间,产生的评论数据越少,也就是说,评论数据场景是一种数据产生的时间具有比较明显的规律的场景。
作为示例,在判定出待存储数据的类型为评论数据时,则可以基于评论数据的时间戳对待存储数据进行索引。比如,将最近1分钟发布的评论数据作为一个维度存储至一个数据桶中,将最近2分钟到最近1分钟发布的评论数据作为另一个维度存储至另一个数据桶中。
在示例性的实施方式中,所述根据所述预设场景信息,确定所述待存储数据的索引方式还可以包括如下步骤:在判定出所述待存储数据的存储类型为第二预设场景的数据时,确定所述待存储数据的索引方式为基于用户标识和及时间区间进行索引。
具体地,所述第二预设场景为数据产生与用户之间的关系链,以及时间区间具有较强关联的场景,比如,UP主关系链场景。一般来说,当一个用户成为UP主时,会有其他用户关注他成为他的粉丝,这样粉丝就与该UP主建立了关联关系,此外,其他用户在成为该用户的粉丝时,一般是该用户在某一段时间内会急剧有大量的用户成为他的粉丝,而在一定的时间之后,粉丝数量的增长会变得较慢,甚至不增长。也就是说,UP主关系链场景是一种数据产生与用户之间的关系链,以及时间区间具有较强关联的场景。
作为示例,在判定出待存储数据的类型为UP主的粉丝数据时,则可以基于粉丝数据对应的用户标识(即UP主标识)对待存储数据进行索引。比如,将UP主A的粉丝数据作为一个维度存储至一个数据桶中,比如数据桶1,将UP主B的粉丝数据作为一个维度存储至另一个数据桶中,比如数据桶2。同时,由于粉丝数据与时间区间的关联性也比较大,因此,还可以将时间区间进一步地对待存储数据进行索引。比如,将UP主A在1号产生的粉丝数据作为另一个维度存储至数据桶1的存储索引文件1中,比如HFile1,将UP主A在2号产生的粉丝数据作为另一个维度存储至数据桶1的存储索引文件2中,比如HFile2;将UP主B在1号产生的粉丝数据作为另一个维度存储至数据桶2的存储索引文件1中,比如HFile1,将UP主B在2号产生的粉丝数据作为另一个维度存储至数据桶2的存储索引文件2中,比如HFile2。
步骤S22,根据确定的索引方式在数据桶中创建所述待存储数据的存储索引文件。
具体地,所述数据桶(bucket)用于存储索引文件,一个数据桶中可以包括多个Hfile,每一个Hfile为一个存储索引文件,用于存储各个数据的索引条目信息。其中,每一个索引条目信息是以Recordkey的形式进行记录的,每一个Recordkey包括当前索引的数据的存储路径信息和存储的文件信息。
作为示例,每一个索引条目信息的格式如下所示:
Recordkey X->path,file,其中,path代表数据的存储路径,该存储路径为在数据存储容器中的指针偏移地址(offset),file代表存储的文件信息。
在示例性的实施方式中,如图3所示,当待存储数据的类型为第一预设场景的数据时,所述步骤S22还可以包括步骤S30-S31,其中:步骤S30,根据所述待存储数据的创建时间戳确定存储所述存储索引文件的数据桶;步骤S31,在确定的所述数据桶中创建所述存储索引文件,其中,所述存储索引文件中包含有所述待存储数据的存储路径以及所述待存储数据存储的文件信息。
具体地,在创建存储索引文件时,可以先提取出待存储数据的创建时间戳,然后根据提取出的时间戳来确定具体在哪一个数据桶中创建存储索引文件,并在确定数据桶之后,即可以直接在该确定的数据桶中创建存储索引文件。其中,所述创建时间戳也可以称为数据的生成时间戳或数据的发布时间戳,用于表示该数据是在什么时刻产生的。
在示例性的实施方式中,如图4所示,步骤S30还可以包括步骤S40-S41,其中:步骤S40,计算所述创建时间戳的消息摘要;步骤S41,对计算得到的消息摘要进行哈希运算得到存储所述存储索引文件的数据桶。
具体地,消息摘要又称数字摘要,是将任意长度的消息变成固定长度的短消息,它类似于一个自变量是消息的函数,也就是Hash函数。数字摘要就是采用单向Hash函数将需要加密的明文“摘要”成一串固定长度(128位)的密文这一串密文又称为数字指纹,它有固定的长度,而且不同的明文摘要成密文,其结果总是不同的,而同样的明文其摘要必定一致。
在本实施例中,可以通过消息摘要算法对创建时间戳进行消息摘要计算,得到该创建时间戳对应的消息摘要。其中,消息摘要算法可以为MD2、MD4、MD5、SHA-1、SHA-256、RIPEMD128、RIPEMD160等算法,在本实施例中优选采用MD5算法对创建时间戳进行消息摘要计算。
作为示例,通过MD5算法对创建时间戳进行消息摘要计算得到的消息摘要是一个128位的密文,为了确定存储索引存储文件的数据桶还需要对该128位的密文进行哈希计算,在本实施例中,在进行哈希计算时,采用的哈希算法可以为:将该128位的密文除以桶的个数做取余运算的方式来确定数据桶,比如,该128位密文对应的数字为505,预先设定的数据桶的总个数为100个,则经过哈希运算后,可以得到存储所述存储索引文件的数据桶为数据桶5。
在一实施方式中,也可以直接简单地按照创建时间戳来确定数据桶,比如,将创建时间戳为最近一分钟的待存储数据的存储索引文件存储至数据桶1中,将创建时间戳为最近两分钟到一分钟的待存储数据的存储索引文件存储至数据桶2中,将将创建时间戳为最近三分钟到二分钟的待存储数据的存储索引文件存储至数据桶3中,即直接以创建时间戳为分桶依据,创建时间戳越晚,分配的数据桶越靠后。
在示例性的实施方式中,如图5所示,当待存储数据的类型为第二预设场景的数据时,所述步骤S22还可以包括步骤S50-S51,其中:步骤S50,根据所述待存储数据对应的用户标识确定存储所述存储索引文件的数据桶;步骤S51,根据所述待存储数据对应的时间区间在确定的所述数据桶中创建所述存储索引文件,其中,所述存储索引文件中包含有所述待存储数据的存储路径以及所述待存储数据存储的文件信息。
具体地,在创建存储索引文件时,可以先提取出待存储数据的用户标识,然后根据用户标识确定具体在哪一个数据桶中创建存储索引文件,并在确定数据桶之后,即可以直接在该确定的数据桶中根据所述待存储数据对应的时间区间创建存储索引文件。其中,所述用户标识用于区分该待存储数据具体是与哪个用户关联的,比如,若该待存储数据为UP主的粉丝数据,则该用户标识即为所述UP主的账号,或者UP主的昵称等可以唯一区分不同UP主的信息。
其中,所述时间区间指的是待存储数据生成的时间对应的区间,比如,待存储数据生成的时间为最近1天,则可以确定该待存储数据对应的时间区间为时间区间1,若待存储数据生成的时间为最近一天到最近2天所产生的,则可以确定该待存储数据对应的时间区间为时间区间2。可以理解的是,为了确定待存储数据对应的时间区间,需要预先设定时间区间的判定规则,这样,在后续获取到待存储数据后,即可以根据该判定规则来确定所述待存储数据对应的时间区间。
在示例性的实施例中,在根据所述待存储数据对应的时间区间在确定的所述数据桶中创建所述存储索引文件时,可以根据所述待存储数据对应的时间区间的不同在确定的所述数据桶中创建不同的存储索引文件。
作为示例,当确定的数据桶为数据桶1时,且该待存储数据对应的时间区间为时间区间1时,则可以在数据桶中创建存储索引文件1;当确定的数据桶为数据桶1时,且该待存储数据对应的时间区间为时间区间2时,则可以在数据桶中创建存储索引文件2,即不同的时间区间在数据桶中创建的存储索引文件不同。
在示例性的实施方式中,如图6所示,步骤S50还可以包括步骤S60-S61,其中:步骤S60,计算所述用户标识的消息摘要;步骤S61,对计算得到的消息摘要进行哈希运算得到存储所述存储索引文件的数据桶。
具体地,消息摘要又称数字摘要,是将任意长度的消息变成固定长度的短消息,它类似于一个自变量是消息的函数,也就是Hash函数。数字摘要就是采用单向Hash函数将需要加密的明文“摘要”成一串固定长度(128位)的密文这一串密文又称为数字指纹,它有固定的长度,而且不同的明文摘要成密文,其结果总是不同的,而同样的明文其摘要必定一致。
在本实施例中,可以通过消息摘要算法对用户标识进行消息摘要计算,得到该用户标识对应的消息摘要。其中,消息摘要算法可以为MD2、MD4、MD5、SHA-1、SHA-256、RIPEMD128、RIPEMD160等算法,在本实施例中优选采用MD5算法对创建时间戳进行消息摘要计算。
作为示例,通过MD5算法对用户标识进行消息摘要计算得到的消息摘要是一个128位的密文,为了确定存储索引存储文件的数据桶还需要对该128位的密文进行哈希计算,在本实施例中,在进行哈希计算时,采用的哈希算法可以为:将该128位的密文除以桶的个数做取余运算的方式来确定数据桶,比如,该128位密文对应的数字为615,预先设定的数据桶的总个数为100个,则经过哈希运算后,可以得到存储所述存储索引文件的数据桶为数据桶15。
步骤S23,根据所述存储索引文件将所述待存储数据存储至对应的存储文件中。
具体地,在创建好索引存储文件后,即可以根据该索引存储文件中的索引信息将所述待存储至对应的存储文件中。其中,所述存储文件为位于数据存储容器中真实用于存储待存储数据的文件。
作为示例,假设该索引存储文件中包含索引信息“Recordkey 1->path X,fileA”,表明需要将待存储数据存储至path X下的文件A(所述存储文件)中。
本申请实施例提供的数据存储方法、***、计算机设备及计算机可读存储介质,通过获取待存储数据;对所述待存储数据的类型进行判断,并根据判定出的类型确定所述待存储数据的索引方式;根据确定的索引方式在数据桶中创建所述待存储数据的存储索引文件;根据所述存储索引文件将所述待存储数据存储至对应的存储文件中。本申请通过在创建索引时会根据不同类型的数据采用不同的方式来创建索引,从而使得创建的索引是与数据类型匹配的,进行使得可以根据创建出的索引方便地查找到数据的存储位置,方便后续对数据进行更新,减少数据更新所花费的时间。
在示例性的实施例中,如图7所示,所述数据存储方法还可以包括:步骤S70-S72,其中:步骤S70,在接收到数据更新指令时,根据所述数据更新指令确定待更新数据的存储索引文件;步骤S71,根据确定的所述存储索引文件确定所述待更新数据的存储路径和存储文件信息;步骤S72,根据所述待更新数据的存储路径和存储文件信息读取所述待更新数据,并对所述待更新数据进行更新。
作为示例,假设需要对数据A进行更新,则在接收到数据A的更新指令后,会根据该数据A去数据桶中查询其对应的存储索引文件,假设查询到数据A的存储索引文件为数据桶2中的存储索引文件1,则之后会从该存储索引文件1获取该数据A的存储路径和存储文件信息,最后,即可以根据这些信息找到该数据A,并将数据A读取到内存中,对其进行更新,并在完成更新后将更新后的数据重新写入文件中。
图8示出了根据本申请实施例的数据存储装置的框图,该数据存储装置800可以被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本申请实施例。本申请实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,以下描述将具体介绍本实施例中各程序模块的功能。如图8所示,数据存储装置800可以包括:获取模块801、判断模块802、创建模块803及存储模块804。
获取模块801,用于获取待存储数据。
判断模块802,用于对所述待存储数据的类型进行判断,并根据判定出的类型确定所述待存储数据的索引方式。
创建模块803,用于根据确定的索引方式在数据桶中创建所述待存储数据的存储索引文件
存储模块804,用于根据所述存储索引文件将所述待存储数据存储至对应的存储文件中。
在一示例性的实施方式中,判断模块802,还用于对所述待存储数据的类型进行判断,以确定所述待存储数据所对应的预设场景;根据所述预设场景信息,确定所述待存储数据的索引方式。
在一示例性的实施方式中,判断模块802,还用于在判定出所述待存储数据的类型为第一预设场景的数据时,确定所述待存储数据的索引方式为基于所述待存储数据的时间戳进行索引。
创建模块803,还用于根据所述待存储数据的创建时间戳确定存储所述存储索引文件的数据桶;在确定的所述数据桶中创建所述存储索引文件,其中,所述存储索引文件中包含有所述待存储数据的存储路径以及所述待存储数据存储的文件信息。
在一示例性的实施方式中,创建模块803,还用于计算所述创建时间戳的消息摘要;对计算得到的消息摘要进行哈希运算得到存储所述存储索引文件的数据桶。
在一示例性的实施方式中,判断模块802,还用于在判定出所述待存储数据的存储类型为第二预设场景的数据时,确定所述待存储数据的索引方式为基于用户标识和及时间区间进行索引。
创建模块803,还用于根据所述待存储数据对应的用户标识确定存储所述存储索引文件的数据桶;根据所述待存储数据对应的时间区间在确定的所述数据桶中创建所述存储索引文件,其中,所述存储索引文件中包含有所述待存储数据的存储路径以及所述待存储数据存储的文件信息。
在一示例性的实施方式中,创建模块803,还用于根据所述待存储数据对应的时间区间的不同在确定的所述数据桶中创建不同的存储索引文件。
在一示例性的实施方式中,创建模块803,还用于计算所述用户标识的消息摘要;对计算得到的消息摘要进行哈希运算得到存储所述存储索引文件的数据桶。
在一示例性的实施方式中,数据存储装置800可以包括:接收模块、确定模块及更新模块。
所述接收模块,用于在接收到数据更新指令时,根据所述数据更新指令确定待更新数据的存储索引文件。
所述确定模块,用于根据确定的所述存储索引文件确定所述待更新数据的存储路径和存储文件信息。
所述更新模块,用于根据所述待更新数据的存储路径和存储文件信息读取所述待更新数据,并对所述待更新数据进行更新。
本申请实施例,通过获取待存储数据;对所述待存储数据的类型进行判断,并根据判定出的类型确定所述待存储数据的索引方式;根据确定的索引方式在数据桶中创建所述待存储数据的存储索引文件;根据所述存储索引文件将所述待存储数据存储至对应的存储文件中。本申请通过在创建索引时会根据不同类型的数据采用不同的方式来创建索引,从而使得创建的索引是与数据类型匹配的,进行使得可以根据创建出的索引方便地查找到数据的存储位置,方便后续对数据进行更新,减少数据更新所花费的时间。
图9示意性示出了根据本申请实施例的适于实现数据存储方法的计算机设备的硬件架构示意图。本实施例中,计算机设备20是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。例如,可以是网关等数据转发设备。如图9所示,计算机设备20至少包括但不限于:可通过***总线相互通信连接存储器21、处理器22、网络接口23。其中:
存储器21至少包括一种类型的计算机可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器21可以是计算机设备20的内部存储模块,例如该计算机设备20的硬盘或内存。在另一些实施例中,存储器21也可以是计算机设备20的外部存储设备,例如该计算机设备20上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(FlashCard)等。当然,存储器21还可以既包括计算机设备20的内部存储模块也包括其外部存储设备。本实施例中,存储器21通常用于存储安装于计算机设备20的操作***和各类应用软件,例如数据存储方法的程序代码等。此外,存储器21还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器22在一些实施例中可以是中央处理器(Central Processing Unit,简称为CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器22通常用于控制计算机设备20的总体操作,例如执行与计算机设备20进行数据交互或者通信相关的控制和处理等。本实施例中,处理器22用于运行存储器21中存储的程序代码或者处理数据。
网络接口23可包括无线网络接口或有线网络接口,该网络接口23通常用于在计算机设备20与其他计算机设备之间建立通信连接。例如,网络接口23用于通过网络将计算机设备20与外部终端相连,在计算机设备20与外部终端之间的建立数据存储通道和通信连接等。网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯***(GlobalSystem of Mobile communication,简称为GSM)、宽带码分多址(Wideband Code DivisionMultiple Access,简称为WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi等无线或有线网络。
需要指出的是,图9仅示出了具有部件21-23的计算机设备,但是应理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。
在本实施例中,存储于存储器21中的数据存储方法还可以被分割为一个或者多个程序模块,并由一个或多个处理器(本实施例为处理器22)所执行,以完成本发明。
本实施例还提供一种计算机可读存储介质,计算机可读存储介质其上存储有计算机程序,计算机程序被处理器执行时实现实施例中的数据存储方法的步骤。
本实施例中,计算机可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,计算机可读存储介质可以是计算机设备的内部存储单元,例如该计算机设备的硬盘或内存。在另一些实施例中,计算机可读存储介质也可以是计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,计算机可读存储介质还可以既包括计算机设备的内部存储单元也包括其外部存储设备。本实施例中,计算机可读存储介质通常用于存储安装于计算机设备的操作***和各类应用软件,例如实施例中的数据存储方法的程序代码等。此外,计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的各类数据。
显然,本领域的技术人员应该明白,上述的本发明实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明实施例不限制于任何特定的硬件和软件结合。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (11)

1.一种数据存储方法,其特征在于,所述方法包括:
获取待存储数据;
对所述待存储数据的类型进行判断,并根据判定出的类型确定所述待存储数据的索引方式,其中,在判定出所述待存储数据的类型后,根据预先创建的数据类型与索引方式的映射表来确定所述待存储数据所对应的索引方式;
根据确定的索引方式在数据桶中创建所述待存储数据的存储索引文件;
根据所述存储索引文件将所述待存储数据存储至对应的存储文件中。
2.根据权利要求1所述的数据存储方法,其特征在于,对所述待存储数据的类型进行判断,并根据判定出的类型确定所述待存储数据的索引方式包括:
对所述待存储数据的类型进行判断,以确定所述待存储数据所对应的预设场景;
根据所述预设场景,确定所述待存储数据的索引方式。
3.根据权利要求2所述的数据存储方法,其特征在于,所述根据所述预设场景,确定所述待存储数据的索引方式包括:
在所述待存储数据的类型为第一预设场景的数据时,确定所述待存储数据的索引方式为基于所述待存储数据的时间戳进行索引;
所述根据确定的索引方式在数据桶中创建所述待存储数据的存储索引文件包括:
根据所述待存储数据的创建时间戳确定存储所述存储索引文件的数据桶;
在确定的所述数据桶中创建所述存储索引文件,其中,所述存储索引文件中包含有所述待存储数据的存储路径以及所述待存储数据存储的文件信息。
4.根据权利要求3所述的数据存储方法,其特征在于,所述根据所述待存储数据的创建时间戳确定存储所述存储索引文件的数据桶包括:
计算所述创建时间戳的消息摘要;
对计算得到的消息摘要进行哈希运算得到存储所述存储索引文件的数据桶。
5.根据权利要求2所述的数据存储方法,其特征在于,所述根据所述预设场景,确定所述待存储数据的索引方式包括:
在所述待存储数据的存储类型为第二预设场景的数据时,确定所述待存储数据的索引方式为基于用户标识及时间区间进行索引;
所述根据确定的索引方式在数据桶中创建所述待存储数据的存储索引文件包括:
根据所述待存储数据对应的用户标识确定存储所述存储索引文件的数据桶;
根据所述待存储数据对应的时间区间在确定的所述数据桶中创建所述存储索引文件,其中,所述存储索引文件中包含有所述待存储数据的存储路径以及所述待存储数据存储的文件信息。
6.根据权利要求5所述的数据存储方法,其特征在于,所述根据所述待存储数据对应的时间区间在确定的所述数据桶中创建所述存储索引文件包括:
根据所述待存储数据对应的时间区间的不同在确定的所述数据桶中创建不同的存储索引文件。
7.根据权利要求5所述的数据存储方法,其特征在于,所述根据所述待存储数据对应的用户标识确定存储所述存储索引文件的数据桶包括:
计算所述用户标识的消息摘要;
对计算得到的消息摘要进行哈希运算得到存储所述存储索引文件的数据桶。
8.根据权利要求1至7任一项所述的数据存储方法,其特征在于,所述数据存储方法还包括:
在接收到数据更新指令时,根据所述数据更新指令确定待更新数据的存储索引文件;
根据确定的所述存储索引文件确定所述待更新数据的存储路径和存储文件信息;
根据所述待更新数据的存储路径和存储文件信息读取所述待更新数据,并对所述待更新数据进行更新。
9.一种数据存储装置,其特征在于,包括:
获取模块,用于获取待存储数据;
判断模块,用于对所述待存储数据的类型进行判断,并根据判定出的类型确定所述待存储数据的索引方式,其中,在判定出所述待存储数据的类型后,根据预先创建的数据类型与索引方式的映射表来确定所述待存储数据所对应的索引方式;
创建模块,用于根据确定的索引方式在数据桶中创建所述待存储数据的存储索引文件;
存储模块,用于根据所述存储索引文件将所述待存储数据存储至对应的存储文件中。
10.一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时用于实现权利要求1至8任一项所述数据存储方法的步骤。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时用于实现权利要求1至8任一项所述数据存储方法的步骤。
CN202011511668.4A 2020-12-18 2020-12-18 数据存储方法及装置 Active CN112486915B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011511668.4A CN112486915B (zh) 2020-12-18 2020-12-18 数据存储方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011511668.4A CN112486915B (zh) 2020-12-18 2020-12-18 数据存储方法及装置

Publications (2)

Publication Number Publication Date
CN112486915A CN112486915A (zh) 2021-03-12
CN112486915B true CN112486915B (zh) 2023-01-20

Family

ID=74915154

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011511668.4A Active CN112486915B (zh) 2020-12-18 2020-12-18 数据存储方法及装置

Country Status (1)

Country Link
CN (1) CN112486915B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113010526A (zh) * 2021-04-19 2021-06-22 星辰天合(北京)数据科技有限公司 基于对象存储服务的存储方法及装置
CN113094340A (zh) * 2021-04-28 2021-07-09 杭州海康威视数字技术股份有限公司 基于Hudi的数据查询方法、装置、设备及存储介质
CN115291812B (zh) * 2022-09-30 2023-01-13 北京紫光青藤微***有限公司 一种通信芯片的数据存储方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101719141A (zh) * 2009-12-24 2010-06-02 成都市华为赛门铁克科技有限公司 基于目录对象的文件处理方法和***
CN103218445A (zh) * 2013-04-22 2013-07-24 亿赞普(北京)科技有限公司 一种移动终端信息推送方法及装置
CN104657362A (zh) * 2013-11-18 2015-05-27 深圳市腾讯计算机***有限公司 数据存储、查询方法和装置
CN108776678A (zh) * 2018-05-29 2018-11-09 阿里巴巴集团控股有限公司 基于移动端NoSQL数据库的索引创建方法及装置
CN110427368A (zh) * 2019-07-12 2019-11-08 深圳绿米联创科技有限公司 数据处理方法、装置、电子设备及存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101719141A (zh) * 2009-12-24 2010-06-02 成都市华为赛门铁克科技有限公司 基于目录对象的文件处理方法和***
CN103218445A (zh) * 2013-04-22 2013-07-24 亿赞普(北京)科技有限公司 一种移动终端信息推送方法及装置
CN104657362A (zh) * 2013-11-18 2015-05-27 深圳市腾讯计算机***有限公司 数据存储、查询方法和装置
CN108776678A (zh) * 2018-05-29 2018-11-09 阿里巴巴集团控股有限公司 基于移动端NoSQL数据库的索引创建方法及装置
CN110427368A (zh) * 2019-07-12 2019-11-08 深圳绿米联创科技有限公司 数据处理方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN112486915A (zh) 2021-03-12

Similar Documents

Publication Publication Date Title
CN112486915B (zh) 数据存储方法及装置
WO2019000630A1 (zh) 多任务调度方法、***、应用服务器及计算机可读存储介质
CN107689982B (zh) 多数据源数据同步方法、应用服务器及计算机可读存储介质
CN110543448A (zh) 数据同步方法、装置、设备及计算机可读存储介质
CN112559475B (zh) 数据实时捕获和传输方法及***
CN112019605B (zh) 数据流的数据分发方法和***
CN111831748A (zh) 数据同步方法、装置及存储介质
CN112214519B (zh) 一种数据查询方法、装置、设备及可读介质
CN112751772B (zh) 数据传输方法和***
WO2021164462A1 (zh) 一种数据加密方法、数据解密方法、计算机设备和介质
WO2015117309A1 (zh) 告警的生成方法及装置
CN110602165A (zh) 政务数据同步方法、装置、***、计算机设备和存储介质
CN113704790A (zh) 一种异常日志信息汇总方法及计算机设备
CN111382201A (zh) 异构数据库同步方法、装置、计算机设备及存储介质
CN112087530A (zh) 一种将数据上传至区块链***的方法、装置、设备及介质
CN112148350A (zh) 作品远程版本管理方法、电子设备以及计算机存储介质
US9665732B2 (en) Secure Download from internet marketplace
CN115129728A (zh) 一种文件校验的方法及装置
CN112235422B (zh) 数据处理方法、装置、计算机可读存储介质及电子装置
CN111327680B (zh) 认证数据同步方法、装置、***、计算机设备和存储介质
CN110209347B (zh) 一种可追溯的数据存储方法
CN103197950A (zh) 插件虚拟机实现方法
CN112559118A (zh) 应用数据迁移方法、装置、电子设备及存储介质
CN112749142B (zh) 句柄管理方法和***
CN111291207B (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
GR01 Patent grant
GR01 Patent grant