CN113553327A - 数据处理方法和装置、介质和计算设备 - Google Patents

数据处理方法和装置、介质和计算设备 Download PDF

Info

Publication number
CN113553327A
CN113553327A CN202110763610.7A CN202110763610A CN113553327A CN 113553327 A CN113553327 A CN 113553327A CN 202110763610 A CN202110763610 A CN 202110763610A CN 113553327 A CN113553327 A CN 113553327A
Authority
CN
China
Prior art keywords
real
data
time data
storage module
storage
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
Application number
CN202110763610.7A
Other languages
English (en)
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.)
Hangzhou Netease Cloud Music Technology Co Ltd
Original Assignee
Hangzhou Netease Cloud Music 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 Hangzhou Netease Cloud Music Technology Co Ltd filed Critical Hangzhou Netease Cloud Music Technology Co Ltd
Priority to CN202110763610.7A priority Critical patent/CN113553327A/zh
Publication of CN113553327A publication Critical patent/CN113553327A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/221Column-oriented storage; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2372Updates performed during offline database operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations

Landscapes

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

Abstract

本公开的实施方式提供了一种数据处理方法和装置、介质和计算设备。其中的数据处理方法包括:该接收待存储的总实时数据;将所述总实时数据写入第一存储模块和第二存储模块;由所述第一存储模块和第二存储模块中获取待读取的目标实时数据,并输出所述目标实时数据。本公开实施例使得能够快速方便的获取到需要的目标实时数据,提高了数据的获取效率。

Description

数据处理方法和装置、介质和计算设备
技术领域
本公开的实施方式涉及数据库技术领域,更具体地,本公开的实施方式涉及一种数据处理方法和装置、介质和计算设备。
背景技术
本部分旨在为权利要求书中陈述的本公开的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
在互联网企业中,数据库的应用非常广泛。例如,随着人工智能技术的发展,算法应用较多,在视频推荐、商品推荐、歌曲推荐等领域经常使用人工智能的神经网络进行自动推荐。而神经网络的训练基础是众多的特征数据,如,用户的年龄、性别等用户特征,或者歌曲的点赞次数、播放次数、歌手等歌曲特征。这些特征可以在互联网企业中存储在数据库,当企业内部的算法团队要训练各自的神经网络时,可以由数据库中获取网络训练所需的特征数据。因此,这就涉及到数据在数据库的存储以及读取的处理。
相关技术中,数据的存储、读取的处理方面,仍然存在数据的使用方在由数据库获取所需数据时不方便的问题,数据获取效率较低。
发明内容
在本上下文中,本公开的实施方式期望提供一种数据处理方法和装置、计算机可读存储介质和计算设备,以提高数据的获取效率。
在本公开实施方式的第一方面中,提供了一种数据处理方法,包括:接收待存储的总实时数据;将所述总实时数据写入第一存储模块和第二存储模块;由所述第一存储模块和第二存储模块中获取待读取的目标实时数据,并输出所述目标实时数据。
在本公开的一个实施例中,所述将所述总实时数据写入第一存储模块和第二存储模块,包括:将所述总实时数据写入消息队列和离线数据库;其中,所述第一存储模块是所述消息队列,所述第二存储模块是所述离线数据库。
在本公开的另一实施例中,所述由所述第一存储模块和第二存储模块中获取待读取的目标实时数据,包括:基于元数据存储库,查询由所述总实时数据中订阅的订阅实时数据;由所述第一存储模块中获取所述订阅实时数据中发生更新的第一实时数据,并由所述第二存储模块中获取所述订阅实时数据中未发生更新的第二实时数据;将所述第一实时数据和第二实时数据作为所述目标实时数据。
在本公开的又一个实施例中,所述第一存储模块是消息队列;所述基于元数据存储库,查询由所述总实时数据中订阅的订阅实时数据,由所述第一存储模块中获取所述订阅实时数据中发生更新的第一实时数据,包括:基于所述元数据存储库,查询与所述订阅实时数据对应的所述消息队列中的消费消息单元;由所述消息队列中获取所述第一实时数据,并将所述第一实时数据分发至所述消息队列中对应的消费消息单元。
在本公开的再一个实施例中,所述第二存储模块是列存储数据库;所述方法还包括:将待存储的离线数据写入所述列存储数据库;响应于对所述离线数据中的目标离线数据的读取请求,由所述列存储数据库中获取所述目标离线数据,并输出所述目标离线数据。
在本公开的再一个实施例中,所述由所述列存储数据库中获取所述目标离线数据,包括:基于所述目标离线数据对应的数据订阅标识,查询元数据存储库,得到与所述数据订阅标识对应的目标离线数据的数据标识、以及所述目标离线数据在所述列存储数据库中的存储位置;根据所述存储位置,由所述列存储数据库中读取所述数据标识对应的目标离线数据。
在本公开的再一个实施例中,所述第二存储模块是列存储数据库;所述方法还包括:读取待处理的多个对象特征对应的特征组元数据,得到所述多个对象特征对应的特征组在所述列存储数据库中的列族标识;所述特征组包括属于同一对象的所述多个对象特征;在所述列存储数据库中对应所述列族标识的列族存储位置,对同一对象的多个对象特征执行对应的数据处理。
在本公开实施方式的第二方面中,提供了一种数据处理装置,所述装置包括:数据接收模块,用于接收待存储的总实时数据;写入处理模块,用于将所述总实时数据写入第一存储模块和第二存储模块;读取处理模块,用于由所述第一存储模块和第二存储模块中获取待读取的目标实时数据,并输出所述目标实时数据。
在本公开的一个实施例中,所述写入处理模块,在用于将所述总实时数据写入第一存储模块和第二存储模块时,包括:将所述总实时数据写入消息队列和离线数据库;其中,所述第一存储模块是所述消息队列,所述第二存储模块是所述离线数据库。
在本公开的另一个实施例中,所述读取处理模块,在用于由所述第一存储模块和第二存储模块中获取待读取的目标实时数据时,包括:基于元数据存储库,查询由所述总实时数据中订阅的订阅实时数据;由所述第一存储模块中获取所述订阅实时数据中发生更新的第一实时数据,并由所述第二存储模块中获取所述订阅实时数据中未发生更新的第二实时数据;将所述第一实时数据和第二实时数据作为所述目标实时数据。
在本公开的又一个实施例中,所述读取处理模块,在用于查询由所述总实时数据中订阅的订阅实时数据,由所述第一存储模块中获取所述订阅实时数据中发生更新的第一实时数据时,包括:基于所述元数据存储库,查询与所述订阅实时数据对应的所述消息队列中的消费消息单元;由所述消息队列中获取所述第一实时数据,并将所述第一实时数据分发至所述消息队列中对应的消费消息单元;其中,所述第一存储模块是消息队列。
在本公开的再一个实施例中,所述写入处理模块,还用于:将待存储的离线数据写入列存储数据库;所述第二存储模块是列存储数据库;所述读取处理模块,还用于:响应于对所述离线数据中的目标离线数据的读取请求,由所述列存储数据库中获取所述目标离线数据,并输出所述目标离线数据。
在本公开的再一个实施例中,所述读取处理模块,在用于由所述列存储数据库中获取所述目标离线数据时,包括:基于所述目标离线数据对应的数据订阅标识,查询元数据存储库,得到与所述数据订阅标识对应的目标离线数据的数据标识、以及所述目标离线数据在所述列存储数据库中的存储位置;根据所述存储位置,由所述列存储数据库中读取所述数据标识对应的目标离线数据。
在本公开的再一个实施例中,所述读取处理模块,还用于:读取待处理的多个对象特征对应的特征组元数据,得到所述多个对象特征对应的特征组在列存储数据库中的列族标识;所述特征组包括属于同一对象的多个对象特征;所述第二存储模块是列存储数据库;在列存储数据库中对应列族标识的列族存储位置,对所述同一对象的多个对象特征执行对应的数据处理。
在本公开实施方式的第三方面中,提供了一种存储系统,所述系统中包括:第一存储模块、第二存储模块、以及本公开任一实施例所述的数据处理装置。
在本公开实施方式的第四方面中,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现本公开任一实施例的数据处理方法。
在本公开实施方式的第五方面中,提供了一种计算设备,该计算设备可以包括存储器、处理器,所述存储器用于存储可在处理器上运行的计算机指令,所述处理器用于在执行所述计算机指令时实现本公开任一实施例所述的数据处理方法。
本公开实施例提供的数据处理方法和装置、计算机可读存储介质和计算设备,通过由至少两个存储模块存储总实时数据,并通过该至少两个存储模块获取到待读取的目标实时数据,使得能够快速方便的获取到需要的目标实时数据,提高了数据的获取效率。
附图说明
通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,其中:
图1示意性地示出了根据本公开实施方式的一种数据处理方法的流程图;
图2示意性地示出了根据本公开实施例的数据处理的原理框架图;
图3示意性地示出了根据本公开实施例的另一种数据处理方法的流程图;
图4示意性地示出了根据本公开实施例的一种实时特征的写入流程图;
图5示意性地示出了根据本公开实施例的一种离线数据的读取流程图;
图6示意性地示出了根据本公开实施例的一种数据处理装置的结构图;
图7示意性地示出了根据本公开实施例的一种计算机可读存储介质的示意图;
图8示意性的示出了根据本公开实施例的一种计算设备的结构示意图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施方式来描述本公开的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本公开,而并非以任何方式限制本公开的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本公开的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本公开的实施方式,提出了一种数据处理方法和装置、计算机可读存储介质和计算设备。在本文中,需要理解的是,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面参考本公开的若干代表性实施方式,详细阐释本公开的原理和精神。
在数据的存储和使用中,其中一种数据是“实时数据”。相关技术中,对于实时数据的存储,通常可以采用消息队列,通过该消息队列将更新的实时数据及时的推送给数据使用方。但是,发明人发现,这种方式存在局限性,由于实时数据具有实时性的特点,通常是通过消息队列将最新产生的实时数据推送给数据使用方,而如果数据使用方在训练神经网络算法时,要获取更多的实时数据,将很不方便,比如,数据使用方需要自己存储和管理之前的实时数据,由此也降低了数据获取的效率。
基于此,本公开实施例提供了一种数据处理方法,图1示意性地示出了根据本公开实施方式的一种数据处理方法的流程,例如,该方法可以由存储系统执行,具体可以是由存储系统中的数据处理装置执行。如图1所示,该数据处理方法可以包括如下处理:
在步骤100中,接收待存储的总实时数据。
本步骤中,所述的总实时数据是相对于后续待读取的目标实时数据而言,该总实时数据至少包括待读取的目标实时数据。例如,假设后续步骤中数据使用方要读取的目标实时数据包括“歌曲最近5分钟的播放次数”(为了描述方便,可以称为第一实时特征)、“歌曲最近5分钟内的点赞次数”(可以称为第二实时特征),那么,本步骤接收的总实时数据可以至少包括上述第一实时特征和第二实时特征,除此之外还可以包括“歌曲最近一小时内的评论次数”等其他的实时特征。
此外,所述的总实时特征可以是由数据仓库接收。例如,数据仓库中的实时仓库可以采集信息并生产所述的总实时数据,将生产的总实时数据发送至本实施例的数据处理装置,以备由数据处理装置将总实时数据进行存储。
在步骤102中,将所述总实时数据写入第一存储模块和第二存储模块。
在一个示例中,所述第一存储模块可以是消息队列,例如可以是kafka。所述第二存储模块可以是离线数据库,例如,可以是Hbase。本步骤中,请结合参见图2的示意,可以将总实时数据21写入第一存储模块22和第二存储模块23。例如,可以是将总实时数据同时写入kafka和Hbase。
在步骤104中,由所述第一存储模块和第二存储模块中获取待读取的目标实时数据,并输出所述目标实时数据。
其中,目标实时数据可以是数据使用方要读取的数据。例如,数据使用方要获取上述例子的第一实时特征和第二实时特征,以使用这些特征训练神经网络模型。那么该第一实时特征和第二实时特征可以称为目标实时数据。
本步骤中,可以由第一存储模块和第二存储模块中获取待读取的目标实时数据,并将目标实时数据提供给数据使用方。
需要注意的是,一方面,本实施例中的总实时数据在写入时,是写入在至少两种不同的存储模块,即该总实时数据写入的存储模块可以多于两个,并不限制在两个模块的数量。另一方面,本实施例描述了实时数据在存储时的特点,即写入在至少两个存储模块;以及实时数据在读取时的特点,即通过至少两个存储模块可以将待读取的目标实时数据都获取得到。
为了方便更清楚的理解,举例如下:假设接收到的总实时数据包括d1、d2、d3和d4,其中,将实时数据d1和d2写入在了第一存储模块,将实时数据d3和d4写入在了第二存储模块。并假设数据使用方要读取的目标实时数据是“d1+d2+d3”,那么本实施例的数据处理装置可以由第一存储模块读取d1和d2,并由第二存储模块读取d3,就可以获取到全部的目标实时数据反馈给数据使用方。而相关技术中,数据使用方只能由第一存储模块读取d1和d2,而实时数据d3还要由另外的渠道获取,从而比较繁琐,降低数据获取的效率,也影响了使用数据进行的业务的处理进度。
本实施例的数据处理方法,通过由至少两个存储模块存储总实时数据,并通过该至少两个存储模块获取到待读取的目标实时数据,使得能够快速方便的获取到需要的目标实时数据,提高了数据的获取效率。
在另一个实施例中,为了进一步提高对于存储系统中的数据的获取效率,本公开实施例中提供了通过订阅来获取数据的方式。如下示例的描述中,仍以对实时数据的获取流程为例,说明如何通过订阅来获取实时数据。
例如,所述的订阅可以是由数据使用方根据自己需要的数据构建一个订阅表,该订阅表可以存储在本公开实施例的存储系统中,并作为数据读取时使用的元数据,该订阅表可以存储在存储系统中的元数据存储库。如下的表1示例了一种可以采用的订阅表的形式:
表1第一订阅表
Figure BDA0003150859420000071
Figure BDA0003150859420000081
表2第二订阅表
字段名 字段类型 字段描述
id bigint 自增主键
feature_sub_id bigint 特征订阅名称
feature_id bigint 特征ID
creator string 创建者
modifier string 修改者
db_create_time timestamp 创建时间
db_update_time timestamp 修改时间
如上,一个特征订阅名称“feature_sub_name”可以对应一个订阅,例如,数据使用方要使用实时数据d1和d2,那么可以创建对应的一个特征订阅名称下的订阅信息;若另一个数据使用方要使用实时数据d1、d2和d4,可以创建对应的另一个特征订阅名称下的订阅信息。
上面的例子中,同一个特征订阅名称下的订阅信息可以包括两个订阅表,即第一订阅表和第二订阅表。需要说明的是,本实施例并不限制订阅表的数量一定是两个,例如,上述的第一订阅表和第二订阅表可以合并为一个订阅表。其中,第二订阅表中设置了具体要订阅哪些实时数据,这些实时数据可以用“feature_id”作为数据标识,订阅的实时数据的数量可以为至少一个。本实施例可以将订阅的实时数据称为“订阅实时数据”。
此外,以第一存储模块是消息队列为例,并且该消息队列例如可以是kafka。在第二订阅表中,设置了订阅实时数据对应的消息队列中的消费消息单元,该消费消息单元即Kafka Topic。
另外,上述第一订阅表和第二订阅表中的“创建者/创建时间”可以是创建该订阅信息的用户以及对应的创建时间,同理,其中的“修改者/修改时间”可以是该订阅信息的修改用户以及对应的修改时间,例如可以是修改了其订阅实时数据,或者修改了订阅实时数据对应的Kafka Topic等信息。存储系统可以提供用于修改上述订阅信息的多种API,可以通过这些API添加订阅信息、更新订阅信息、删除订阅信息或者搜索订阅信息。
在了解了上述示例的订阅信息的基础上,图3示意性地示出了根据本公开实施方式的另一种数据处理方法的流程,该方法流程中将利用元数据存储库中存储的上述第一订阅表和第二订阅表,由第一存储模块和第二存储模块中获取待读取的目标实时数据。如图3所示,该方法可以包括如下处理:
在步骤300中,响应于接收对于目标实时数据的读取请求,基于元数据存储库,查询由所述总实时数据中订阅的订阅实时数据。
例如,本步骤中可以接收对于目标实时数据的读取请求,该读取请求中可以携带特征订阅名称、以及要获取的目标实时数据的日期范围,比如,该日期范围可以是8月5日至8月7日期间的数据。其中,本实施例中的目标实时数据即为订阅实时数据,是数据使用方要获取的实时数据。
其中,本实施例的订阅实时数据可以包括两部分:一部分是发生更新的第一实时数据,另一部分是未发生更新的第二实时数据。
举例如下:假设在初始将总实时数据写入时,包括实时数据r1、实时数据r2和实时数据r3,这些实时数据同时写入了Kafka和Hbase。其中,实时数据r1和实时数据r2是更新较为频繁的,比如,每隔2分钟就产生一次新数据,而实时数据r3是更新不频繁的,比如,2个小时才产生一次新数据。而数据使用方创建的一个订阅中,订阅了上述的实时数据r1、实时数据r2和实时数据r3,并且假设在数据使用方发送对其订阅实时数据的读取请求时,发生更新的第一实时数据即上述的实时数据r1和实时数据r2,这些更新的实时数据将通过Kafka进行及时的推送。而实时数据r3由于更新时间间隔较长,所以还未发生更新,称为未发生更新的第二实时数据,该第二实时数据不会在Kafka中,Kafka中存储的是发生更新的实时数据。
那么上述的这种情况下,订阅实时数据的获取,将由Kafka中获取实时数据r1和实时数据r2,而实时数据r3可以由Hbase中获取。
本步骤中,在基于元数据存储库,查询订阅实时数据时,可以根据表1的第一订阅表查询得到与特征订阅名称对应的Kafka中的存储位置信息、以及与特征订阅名称对应的Hbase中的存储位置信息(该Hbase中的存储位置信息未在表1示出)。根据这些存储位置信息就可以获知特征订阅名称对应的订阅实时数据的存储位置。其中,Kafka中的存储位置信息可以包括Kafka Topic,即该Topic是与所述订阅实时数据对应的消息队列中的消费消息单元。
在步骤302中,由所述第一存储模块中获取所述订阅实时数据中发生更新的第一实时数据,并由所述第二存储模块中获取所述订阅实时数据中未发生更新的第二实时数据。
可以基于该Kafka Topic,并可以由Kafka消息队列中获取到订阅实时数据中的第一实时数据r1和r2,并将第一实时数据分发到Kafka中的Topic。即这是将用户订阅的实时数据r1和r2由Kafka中获取到,并分发到订阅的Kafka Topic,后续Kafka会将该Topic中的实时数据推送给数据使用方用户。
这里说明下执行上述的数据分发的优点:通过按照各个数据使用方订阅的实时数据,将其所需的实时数据分发到对应的订阅Topic,能够降低消费数据任务的流量压力,降低出口流量,也减少不必要的处理资源的消耗。比如,假设接收的总实时数据有100个,而数据使用方只订阅了其中的10个,相比于将这100个实时数据都发给数据使用方,根据数据使用方的订阅只发送其中订阅的10个实时数据,就不再需要将另外90个未订阅的数据发送,从而降低出口流量。
此外,还可以根据与特征订阅名称对应的Hbase中的存储位置信息,获取到第二实时数据r3。
其中,在查询元数据存储库时,除了上述的存储位置信息,还可以根据表2的第二订阅表查询得到与特征订阅名称对应的feature_id,可以根据这些feature_id即数据标识,并结合读取请求中携带的目标实时数据的日期范围,由上述的存储位置获取数据标识和日期范围对应的实时数据。
此外,还需要说明的是,即使Kafka和Hbase中存储了相同的实时数据,比如,上述的实时数据r1至r3都存储在了Kafka和Hbase中,但是在读取实时数据时,可以优先获取Kafka中的实时数据,对于由Kafka中获取不到的实时数据,可以由Hbase中获取。例如,上述的例子中,可以先由Kafka中获取到更新的第一实时数据r1和r2,由于Kafka中没有r3,可以由Hbase中获取未发生更新的第二实时数据r3。
如图2示意,由第一存储模块获取了第一实时数据,由第二存储模块获取了第二实时数据,即由至少两种不同的存储模块获取到订阅的实时数据。
在步骤304中,将获取到的第一实时数据和第二实时数据作为目标实时数据,反馈至发送读取请求的数据使用方。
上述获取到的第一实时数据r1、r2和第二实时数据r3的总和称为订阅实时数据,该订阅实时数据也即目标实时数据。本步骤可以将订阅实时数据返回至读取方。
本实施例的数据处理方法,通过由至少两个存储模块存储总实时数据,并通过该至少两个存储模块获取到待读取的目标实时数据,使得能够快速方便的获取到需要的目标实时数据,提高了数据的获取效率;并且通过采用消息队列作为第一存储模块,离线数据库作为第二存储模块,既实现了通过消息队列快速及时的将更新的实时数据推送给使用方,而且还通过离线数据库存储了未更新的实时数据,从而方便结合离线数据库和消息队列实现对要读取的目标实时数据的更为快速的获取和提供给使用方。
此外,在上述的实施例中,通过根据数据使用方的订阅来获取目标实时数据,可以基于元数据存储库查询得到订阅实时数据,并根据该订阅实时数据进行实时数据的获取,这种订阅方式方便了数据使用方的数据读取,比如,使用方只要提供自己创建的特征订阅名称,就可以获取到自己想要的目标实时数据,而不再需要输入较多较繁琐的数据获取的依据信息,从而也有助于提高数据获取的效率。
在又一个实施例中,本公开实施例的方法还提供了数据存储的单位“特征组”,该特征组包括属于同一对象的多个对象特征。例如,在相关技术中,数据仓库的的数据模型会分各个主题域、业务域,导致经常从多张表中获取一个实体对象的多个特征数据。以歌曲特征为例,歌曲可以作为一个实体对象,其特征可以包括:歌曲风格、歌曲播放次数、评论次数、点赞次数等多种对象特征。而如果数据在存储时将这些特征分主题域/业务域分别存储在不同的表格中,那么就需要从播放事实表、评论事实表、点赞事实表等多个表中获取到这些特征,降低了数据获取的效率。
因此,本公开实施例提供的特征组,将属于同一对象的多个对象特征放在一个特征组,并且,该一个特征组可以是对应Hbase的一张表,具体可以是对应Hbase中的一个列族(ColumnFamily,简称CF)。例如,以对象为用户为例,可以将所有用户特征都作为一个特征组存储在Hbase的一个CF表中,这样在获取数据时,可以从一个表获取到,相比于上述相关技术中从多个表获取数据,将有助于提高数据获取的效率。
举例来说:当要对属于同一对象的多个对象特征进行处理时,该处理可以包括写入或者读取,可以查询该多个对象特征对应的特征组元数据,得到所述多个对象特征对应的特征组在列存储数据库(比如,HBase)中的列族CF标识。并基于该CF标识,在列存储数据库中对应的列族存储位置,对该同一对象的多个对象特征执行数据处理,比如,将这些对象特征写入上述的列族存储位置,或者由上述的列族存储位置CF读取所述同一对象的多个对象特征。由于这些对象特征的处理都在一张表上,从而数据处理效率较高。
如下的表3的第三订阅表示例了特征组包含的几个字段的定义,表4的第四订阅表示例了特征表包含的字段。本公开实施例中的数据可以是特征。
表3第三订阅表
Figure BDA0003150859420000121
Figure BDA0003150859420000131
表4第四订阅表
Figure BDA0003150859420000132
根据上述的表3和表4,可以获知具体数据的类型,比如0表示离线数据,1表示实时数据。并且,根据表4中的feature_group_id、feature_name以及feature_type等字段,可以知晓一个特征组中包括哪些特征,同一个特征组中可以既包括离线数据,也包括实时数据。此外,还可以根据表3,获知该特征组具体的存储位置,比如在Kafka中的topic,或者在Hbase中的CF。此外,在前面的例子中提到的,第一订阅表中可以包括与特征订阅名称对应的Hbase中的存储位置信息,该存储位置信息可以是与特征订阅名称对应的特征组ID-feature_group_id,根据该feature_group_id查询第三订阅表就可以知道这个特征组具体存储在Hbase中的ColumnFamily。
对于上述的第一订阅表、第二订阅表、第三订阅表和第四订阅表等元数据,都可以提供管理这些元数据的API接口。通过这些API接口可以进行特征组/特征/订阅信息等元数据的搜索、删除、更新、添加等操作。如下示例几种元数据管理的API,具体实施中并不局限于此:
表5元数据管理API
Figure BDA0003150859420000133
Figure BDA0003150859420000141
此外,在上述的例子中,第二存储模块以列存储数据库为例,例如,可以是Hbase。列存储的优势是方便添加特征,比如,想要在特征组中增加一个对象特征,或者对于一些需要存储的中间处理特征,如Embedding的特征,就可以在列存储数据库方便的进行添加,更利用共享,避免重复计算。
在上述提供了“特征组”定义的基础上,写入实时特征时,可以按照图4所示的流程执行。如图4所示,可以包括如下处理:
在步骤400中,接收待写入的实时数据和特征组名。
本步骤中,可以接收实时数据的写入请求,该写入请求中至少包括待写入的实时数据,以及这些实时数据所属的特征组名feature_group_name。比如,“歌曲在最近2分钟内的评论次数”这个实时特征属于“歌曲”特征组。此外,写入请求中还可以包括其他信息,比如,实时数据在Hbase中的CF表中的主键,等。
在步骤402中,根据特征组名,查询元数据存储库,得到与特征组名对应的离线数据库信息和消息队列信息。
例如,可以查询第三订阅表,得到与特征组名对应的HBase连接信息hbase_info、hbase_table、hbase_cf等信息,还可以得到与特征组名对应的Kafka连接信息和Kafkatopic信息。
如果上述的离线数据库信息和消息队列信息未获取成功,则结束流程。如果获取成功,继续执行步骤404。
在步骤404中,根据待写入的实时数据,获取特征元数据,校验特征是否匹配,类型是否匹配。
例如,可以根据第四订阅表,查询待写入的实时数据是否属于这个特征组,是否存在对应的特征元数据(即第四订阅表对应的特征定义),并且,还可以根据feature_type判断特征类型是否匹配。若这些校验没有完全通过,比如,类型不匹配,或者不存在对应的元数据,可以结束本写入流程;如果校验通过,则可以继续执行步骤406。
在步骤406中,将实时数据同时写入消息队列和离线数据库。
例如,可以将待写入的实时数据同时写入Hbase的CF中、以及Kafka的Topic中。如果未写入成功,可以结束流程,并返回错误信息。
此外,若成功写入,可以上报本次写入的审计信息。该审计信息例如可以包括但不限于:写入的数据标识、写入数据对应的生产任务、写入的时间等。同理,在实时数据的读取操作之后,也可以上报读取的审计信息,例如可以包括:读取数据的数据标识、读取数据对应的消费任务、读取时间等。
在本公开的任一实施例中,数据的写入或者读取都可以上报审计信息,后续将不再赘述。审计信息的上报有助于数据的追踪,例如,可以通过查询审计信息方便的获知数据的生产任务和消费任务,以及数据的更新时间、数据被哪个数据使用方订阅了等信息。本公开实施例还可以提供对于审计信息的上报或者查询的API接口,例如,通过API-/api/feature/audit/add,可以上报数据读写任务的审计信息。
在又一个例子中,读取目标实时数据时,对目标实时数据的读取请求中,可以包括类似图3所示的特征订阅名称、以及要获取的目标实时数据的日期范围,根据这些信息可以查询元数据存储库,查询与特征订阅名称对应的Hbase中的存储位置信息,该存储位置信息就可以包括订阅实时数据对应的特征组、以及该特征组在Hbase中对应的hbase_table、hbase_cf等信息。
在读取订阅实时数据时,可以先优先从Kafka获取,若Kafka中获取不到,可以根据上述的hbase_table、hbase_cf等信息,由Hbase表中获取。
此外,为了提高数据读取的效率,可以将由Kafka或者Hbase表中获取到的实时数据存放在本地缓存,后续再有读取这些数据的,可以由本地缓存读取,以加快数据获取的效率。
本公开的又一个实施例中,还提供了一种数据处理方法,在该方法中,读取的数据不仅包括实时数据,还包括离线数据。例如,数据使用方要读取一些数据用来训练神经网络模型,这些要读取的数据中,既包括实时数据,也包括离线数据。可以将要读取的实时数据称为目标实时数据,将要读取的离线数据称为目标离线数据。
可以结合参见图2所示,在数据写入时,可以将离线仓库生产的离线数据写入到离线数据库中,该离线数据库即图2中的第二存储模块,例如,可以是Hbase;第一存储模块例如可以是Kafka。请继续参见图2,在一个示例中,数据使用方要读取的数据中,目标实时数据包括发生更新的第一实时数据和未更新的第二实时数据,并且还要读取目标离线数据。那么,就可以由第一存储模块中获取第一实时数据,由第二存储模块中获取第二实时数据以及目标离线数据。
若数据使用方在训练一个模型时要同时使用到实时数据和离线数据,就可以采用本公开实施例的数据处理方法,通过至少第一存储模块和第二存储模块同时获取到所需要的目标实时数据和目标离线数据,使得数据使用方获取数据较为方便和快捷。
在离线数据的写入和读取的流程中,也可以使用到本公开实施例提供的特征组,例如,写入离线数据时,可以在写入请求中至少携带待写入的离线数据和特征组名,并可以基于特征组名查询元数据存储库,得到特征组对应的Hbase的连接信息、hbase_table、hbase_cf等,并基于这些信息,将离线数据写入Hbase的CF表中。
图5示意了一种离线数据的读取流程,可以包括:
在步骤500中,接收对于目标离线数据的读取请求,该读取请求中至少包括特征订阅名和数据日期范围。
本步骤中,目标离线数据即要读取的离线数据,所述的特征订阅名即目标离线数据对应的数据订阅标识。所述的数据日期范围,例如可以是要读取8月5日至8月7日的离线数据。
在步骤502中,基于所述目标离线数据对应的数据订阅标识,查询元数据存储库,得到与所述数据订阅标识对应的目标离线数据的数据标识、以及所述目标离线数据在所述列存储数据库中的存储位置。
本步骤中,可以基于特征订阅名,查询元数据存储库,得知用户具体订阅的特征列表,比如可以根据第四订阅表得到与所述数据订阅标识对应的目标离线数据的数据标识feature_name,还可以根据第三订阅表得到目标离线数据在所述列存储数据库中的存储位置,比如hbase_info、hbase_table和hbase_cf等。
在步骤504中,根据所述存储位置,由所述列存储数据库中读取所述数据标识对应的目标离线数据。
例如,可以根据上述的feature_name、hbase_info、hbase_table和hbase_cf等存储信息,读取到目标离线数据,并反馈至数据使用方。
为了实现本公开任一实施例的数据处理方法,本公开实施例还提供了一种数据处理装置。图6示意性地示出了根据本公开一实施例的数据处理装置的结构示意图。如下的描述中,将简单描述该装置的各个模块的功能,其详细处理可以结合参见前述的本公开任一实施例的数据处理方法的描述。
如图6所示,该装置可以包括:数据接收模块61、写入处理模块62和读取处理模块63。
数据接收模块61,用于接收待存储的总实时数据。
写入处理模块62,用于将所述总实时数据写入第一存储模块和第二存储模块。
读取处理模块63,用于由所述第一存储模块和第二存储模块中获取待读取的目标实时数据,并输出所述目标实时数据。
在一个例子中,写入处理模块62,在用于将所述总实时数据写入第一存储模块和第二存储模块时,包括:将所述总实时数据写入消息队列和离线数据库;其中,所述第一存储模块是所述消息队列,所述第二存储模块是所述离线数据库。
在一个例子中,读取处理模块63,在用于由所述第一存储模块和第二存储模块中获取待读取的目标实时数据时,包括:基于元数据存储库,查询由所述总实时数据中订阅的订阅实时数据;由所述第一存储模块中获取所述订阅实时数据中发生更新的第一实时数据,并由所述第二存储模块中获取所述订阅实时数据中未发生更新的第二实时数据;将所述第一实时数据和第二实时数据作为所述目标实时数据。
在一个例子中,读取处理模块63,在用于查询由所述总实时数据中订阅的订阅实时数据,由所述第一存储模块中获取所述订阅实时数据中发生更新的第一实时数据时,包括:基于所述元数据存储库,查询与所述订阅实时数据对应的所述消息队列中的消费消息单元;由所述消息队列中获取所述第一实时数据,并将所述第一实时数据分发至所述消息队列中对应的消费消息单元;其中,所述第一存储模块是消息队列。
在一个例子中,写入处理模块62,还用于:将待存储的离线数据写入列存储数据库;所述第二存储模块是列存储数据库。读取处理模块63,还用于:响应于对所述离线数据中的目标离线数据的读取请求,由所述列存储数据库中获取所述目标离线数据,并输出所述目标离线数据。
在一个例子中,读取处理模块63,在用于由所述列存储数据库中获取所述目标离线数据时,包括:基于所述目标离线数据对应的数据订阅标识,查询元数据存储库,得到与所述数据订阅标识对应的目标离线数据的数据标识、以及所述目标离线数据在所述列存储数据库中的存储位置;根据所述存储位置,由所述列存储数据库中读取所述数据标识对应的目标离线数据。
在一个例子中,读取处理模块63,还用于:读取待处理的多个对象特征对应的特征组元数据,得到所述多个对象特征对应的特征组在列存储数据库中的列族标识;所述特征组包括属于同一对象的所述多个对象特征;所述第二存储模块是列存储数据库;在所述列存储数据库中对应所述列族标识的列族存储位置,对所述同一对象的多个对象特征执行对应的数据处理。
应当注意,尽管在上文详细描述中提及了数据处理装置的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
本公开实施例还提供了一种存储系统,该存储系统可以包括第一存储模块、第二存储模块和本公开任一实施例所述的数据处理装置。例如,第一存储模块可以是Kafka消息队列,第二存储模块可以是Hbase列式存储数据库。所述的数据处理装置可以执行本公开任一实施例的数据处理方法,比如,可以将接收到的总实时数据同时存储至第一存储模块和第二存储模块,并能够由所述的第一存储模块和第二存储模块中获取待读取的目标实时数据。又例如,该数据处理装置还可以基于元数据存储库查询订阅实时数据,并由第一存储模块中获取所述订阅实时数据中发生更新的第一实时数据,由所述第二存储模块中获取所述订阅实时数据中未发生更新的第二实时数据。
本公开实施例还提供了一种计算机可读存储介质。如图7所示,该存储介质上存储有计算机程序701,该计算机程序701被处理器执行时可以执行本公开任一实施例的数据处理方法。
本公开实施例还提供了一种计算设备,该设备可以包括存储器、处理器,所述存储器用于存储可在处理器上运行的计算机指令,所述处理器用于在执行所述计算机指令时实现本公开任一实施例的数据处理方法。
图8示例了一种该计算设备的结构,如图8所示,该计算设备80可以包括但不限于:处理器81、存储器82、连接不同系统组件(包括存储器82和处理器81)的总线83。
其中,存储器82存储有计算机指令,该计算机指令可以被处理器81执行,使得处理器81能够执行本公开任一实施例的广告推送方法。存储器82可以包括随机存取存储单元RAM821、高速缓存存储单元822和/或只读存储单元ROM823。该存储器82还可以包括:具有一组程序模块824的程序工具825,该程序模块824包括但不限于:操作系统、一个或多个应用程序、其他程序模块和程序数据,这些程序模块一种或多种组合可以包含网络环境的实现。
总线83例如可以包括数据总线、地址总线和控制总线等。该计算设备80还可以通过I/O接口84与外部设备85通信,该外部设备85例如可以是键盘、蓝牙设备等。该计算设备80还可以通过网络适配器86与一个或多个网络通信,例如,该网络可以是局域网、广域网、公共网络等。如图8所示,该网络适配器86还可以通过总线83与计算设备80的其他模块进行通信。
此外,尽管在附图中以特定顺序描述了本公开方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本公开的精神和原理,但是应该理解,本公开并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本公开旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。

Claims (10)

1.一种数据处理方法,所述方法包括:
接收待存储的总实时数据;
将所述总实时数据写入第一存储模块和第二存储模块;
由所述第一存储模块和第二存储模块中获取待读取的目标实时数据,并输出所述目标实时数据。
2.根据权利要求1所述的方法,所述将所述总实时数据写入第一存储模块和第二存储模块,包括:
将所述总实时数据写入消息队列和离线数据库;
其中,所述第一存储模块是所述消息队列,所述第二存储模块是所述离线数据库。
3.根据权利要求1所述的方法,所述由所述第一存储模块和第二存储模块中获取待读取的目标实时数据,包括:
基于元数据存储库,查询由所述总实时数据中订阅的订阅实时数据;
由所述第一存储模块中获取所述订阅实时数据中发生更新的第一实时数据,并由所述第二存储模块中获取所述订阅实时数据中未发生更新的第二实时数据;
将所述第一实时数据和第二实时数据作为所述目标实时数据。
4.根据权利要求3所述的方法,所述第一存储模块是消息队列;
所述基于元数据存储库,查询由所述总实时数据中订阅的订阅实时数据,由所述第一存储模块中获取所述订阅实时数据中发生更新的第一实时数据,包括:
基于所述元数据存储库,查询与所述订阅实时数据对应的所述消息队列中的消费消息单元;
由所述消息队列中获取所述第一实时数据,并将所述第一实时数据分发至所述消息队列中对应的消费消息单元。
5.根据权利要求1~4任一所述的方法,所述第二存储模块是列存储数据库;所述方法还包括:
将待存储的离线数据写入所述列存储数据库;
响应于对所述离线数据中的目标离线数据的读取请求,由所述列存储数据库中获取所述目标离线数据,并输出所述目标离线数据。
6.根据权利要求5所述的方法,所述由所述列存储数据库中获取所述目标离线数据,包括:
基于所述目标离线数据对应的数据订阅标识,查询元数据存储库,得到与所述数据订阅标识对应的目标离线数据的数据标识、以及所述目标离线数据在所述列存储数据库中的存储位置;
根据所述存储位置,由所述列存储数据库中读取所述数据标识对应的目标离线数据。
7.一种数据处理装置,所述装置包括:
数据接收模块,用于接收待存储的总实时数据;
写入处理模块,用于将所述总实时数据写入第一存储模块和第二存储模块;
读取处理模块,用于由所述第一存储模块和第二存储模块中获取待读取的目标实时数据,并输出所述目标实时数据。
8.一种存储系统,所述系统中包括:第一存储模块、第二存储模块、以及权利要求7所述的数据处理装置。
9.一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现本公开权利要求1~6任一所述的方法。
10.一种计算设备,所述计算设备包括存储器、处理器,所述存储器用于存储可在处理器上运行的计算机指令,所述处理器用于在执行所述计算机指令时实现本公开权利要求1~6任一所述的方法。
CN202110763610.7A 2021-07-06 2021-07-06 数据处理方法和装置、介质和计算设备 Pending CN113553327A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110763610.7A CN113553327A (zh) 2021-07-06 2021-07-06 数据处理方法和装置、介质和计算设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110763610.7A CN113553327A (zh) 2021-07-06 2021-07-06 数据处理方法和装置、介质和计算设备

Publications (1)

Publication Number Publication Date
CN113553327A true CN113553327A (zh) 2021-10-26

Family

ID=78102795

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110763610.7A Pending CN113553327A (zh) 2021-07-06 2021-07-06 数据处理方法和装置、介质和计算设备

Country Status (1)

Country Link
CN (1) CN113553327A (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105224658A (zh) * 2015-09-30 2016-01-06 北京京东尚科信息技术有限公司 一种大数据的实时查询方法和系统
CN109241033A (zh) * 2018-08-21 2019-01-18 北京京东尚科信息技术有限公司 创建实时数据仓库的方法和装置
CN110147398A (zh) * 2019-04-25 2019-08-20 北京字节跳动网络技术有限公司 一种数据处理方法、装置、介质和电子设备
CN110532493A (zh) * 2019-08-29 2019-12-03 北京明略软件系统有限公司 数据的处理方法及装置、存储介质和电子装置
US10887253B1 (en) * 2014-12-04 2021-01-05 Amazon Technologies, Inc. Message queuing with fan out
CN112434062A (zh) * 2020-11-26 2021-03-02 平安普惠企业管理有限公司 准实时数据处理方法、装置、服务器及存储介质
CN112667614A (zh) * 2020-12-25 2021-04-16 大众问问(北京)信息科技有限公司 一种数据处理方法、装置及计算机设备
CN112699130A (zh) * 2021-01-15 2021-04-23 广东电网有限责任公司广州供电局 电力数据处理方法、装置、计算机设备

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10887253B1 (en) * 2014-12-04 2021-01-05 Amazon Technologies, Inc. Message queuing with fan out
CN105224658A (zh) * 2015-09-30 2016-01-06 北京京东尚科信息技术有限公司 一种大数据的实时查询方法和系统
CN109241033A (zh) * 2018-08-21 2019-01-18 北京京东尚科信息技术有限公司 创建实时数据仓库的方法和装置
CN110147398A (zh) * 2019-04-25 2019-08-20 北京字节跳动网络技术有限公司 一种数据处理方法、装置、介质和电子设备
CN110532493A (zh) * 2019-08-29 2019-12-03 北京明略软件系统有限公司 数据的处理方法及装置、存储介质和电子装置
CN112434062A (zh) * 2020-11-26 2021-03-02 平安普惠企业管理有限公司 准实时数据处理方法、装置、服务器及存储介质
CN112667614A (zh) * 2020-12-25 2021-04-16 大众问问(北京)信息科技有限公司 一种数据处理方法、装置及计算机设备
CN112699130A (zh) * 2021-01-15 2021-04-23 广东电网有限责任公司广州供电局 电力数据处理方法、装置、计算机设备

Similar Documents

Publication Publication Date Title
CN111400408B (zh) 数据同步方法、装置、设备及存储介质
CN111459985B (zh) 标识信息处理方法及装置
US20120072449A1 (en) Object instance versioning
US20230024345A1 (en) Data processing method and apparatus, device, and readable storage medium
US20090030880A1 (en) Model-Based Analysis
CN111627552A (zh) 一种医疗流式数据血缘关系分析、存储方法及装置
US10599614B1 (en) Intersection-based dynamic blocking
US7529758B2 (en) Method for pre-processing mapping information for efficient decomposition of XML documents
CN107169003B (zh) 一种数据关联方法及装置
CN114090760B (zh) 表格问答的数据处理方法、电子设备及可读存储介质
CN103365987A (zh) 一种基于共享磁盘架构的集群数据库系统及数据处理方法
CN111259082B (zh) 大数据环境下实现全量数据同步的方法
CN111274226B (zh) 一种实现业务通用历史数据管理的系统及其方法
US20220360458A1 (en) Control method, information processing apparatus, and non-transitory computer-readable storage medium for storing control program
CN113553327A (zh) 数据处理方法和装置、介质和计算设备
CN116049306A (zh) 数据同步方法、装置、电子设备以及可读存储介质
Koschel et al. Evaluating time series database management systems for insurance company
CN117689451B (zh) 一种基于Flink的流式向量搜索方法及装置、系统
CN112597191B (zh) 数据处理方法、装置、电子设备、存储介质及程序产品
CN116431654B (zh) 基于湖仓一体化的数据存储方法、装置、介质和计算设备
US11232243B1 (en) System and method for employing model repository
CN112182028B (zh) 基于分布式数据库的表的数据行数查询方法和装置
CN117931867A (zh) 商城业务性能优化方法、装置、电子设备及存储介质
CN116560992A (zh) 信息处理方法及装置、电子设备、存储介质
CN117520404A (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