CN110515927B - 数据处理方法及其系统、电子设备和介质 - Google Patents

数据处理方法及其系统、电子设备和介质 Download PDF

Info

Publication number
CN110515927B
CN110515927B CN201910805564.5A CN201910805564A CN110515927B CN 110515927 B CN110515927 B CN 110515927B CN 201910805564 A CN201910805564 A CN 201910805564A CN 110515927 B CN110515927 B CN 110515927B
Authority
CN
China
Prior art keywords
data
processed
database
memory database
updated
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
CN201910805564.5A
Other languages
English (en)
Other versions
CN110515927A (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.)
Industrial and Commercial Bank of China Ltd ICBC
Original Assignee
Industrial and Commercial Bank of China Ltd ICBC
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 Industrial and Commercial Bank of China Ltd ICBC filed Critical Industrial and Commercial Bank of China Ltd ICBC
Priority to CN201910805564.5A priority Critical patent/CN110515927B/zh
Publication of CN110515927A publication Critical patent/CN110515927A/zh
Application granted granted Critical
Publication of CN110515927B publication Critical patent/CN110515927B/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/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/219Managing data history or versioning
    • 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
    • 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
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开提供了一种用于数据库的数据处理方法,包括:针对接收到的由上游系统下发的流式增量实时数据,执行解析操作以获得第一待处理数据,第一待处理数据包括指定主键字段;从内存数据库中获取第一已处理数据,其中,第一已处理数据包括指定主键字段;通过比对第一待处理数据与第一已处理数据,确定是否存在第一有效待处理数据;在确定存在第一有效待处理数据的情况下,基于第一有效待处理数据,确定第一事务操作;以及执行第一事务操作,以获得第一更新内存数据库。本公开还提供了一种用于数据库的数据处理系统,电子设备和介质。

Description

数据处理方法及其系统、电子设备和介质
技术领域
本公开涉及计算机技术领域,更具体地,涉及一种用于数据库的数据处理方法、系统、电子设备和介质。
背景技术
随着互联网时代信息量的爆炸性增长,大数据处理技术的飞速发展,应运而生一类诸如实时交易数据、交通数据、气象数据、股票价格等具有“流”特点的实时数据,即流式数据,在对其进行处理加工后即可生成更具时效性的应用价值,在面对如今高度竞争、瞬息万变的市场环境时,为企业提升自身竞争力做出重要贡献。
流式实时数据加工广泛运用于需关联业务数据的复杂场景,通常,业务数据来源于多个渠道,且存储于关系型数据库中。为了提高处理效率,一般会复制一份业务数据到流式实时数据处理系统中供查询使用,并且需与上游系统业务数据实时保持一致。然而,流式系统中为保证数据高速读写采用的键值型数据库,与关系型数据库在结构上存在较大差异。通过主动采集日志的方式,将造成实时复制存在至少秒级的延时。
发明内容
有鉴于此,本公开提供了一种用于数据库的数据处理方法及其系统、电子设备和介质。
本公开的一个方面提供了一种用于数据库的数据处理方法,包括:针对接收到的由上游系统下发的流式增量实时数据,执行解析操作以获得第一待处理数据,上述第一待处理数据包括指定主键字段,从内存数据库中获取第一已处理数据,其中,上述第一已处理数据包括上述指定主键字段,通过比对上述第一待处理数据与上述第一已处理数据,确定是否存在第一有效待处理数据,在确定存在上述第一有效待处理数据的情况下,基于上述第一有效待处理数据,确定第一事务操作,以及执行上述第一事务操作,以获得第一更新内存数据库。
根据本公开的实施例,上述执行上述第一事务操作,以获得第一更新内存数据库包括:获取上述第一有效待处理数据的数据内容,检测上述数据内容中是否包含有第一版本号,在上述第一有效待处理数据中包含有上述第一版本号的情况下,从上述内存数据库中获取上述第一已处理数据的第二版本号,以及在上述第一版本号和上述第二版本号一致的情况下,执行上述第一事务操作,以获得第一更新内存数据库。
根据本公开的实施例,上述执行上述第一事务操作,以获得第一更新内存数据库还包括:在上述第一有效待处理数据中未包含有上述第一版本号的情况下,执行上述第一事务操作,以获得第一更新内存数据库。
根据本公开的实施例,上述方法还包括:针对接收到的上述上游系统下发的批量增量数据,执行解析操作以获得第二待处理数据,上述第二待处理数据包括上述指定主键字段,从上述内存数据库中获取第二已处理数据,上述第二已处理数据包括上述指定主键字段,通过比对上述第二待处理数据与上述第二已处理数据,确定是否存在第二有效待处理数据,在确定存在上述第二有效待处理数据的情况下,基于上述第二有效待处理数据,确定第二事务操作,以及执行上述第二事务操作,以获得第二更新内存数据库。
根据本公开的实施例,上述执行上述第二事务操作,以获得第二更新内存数据库包括:检测上述第一已处理数据是否与上述第二已处理数据一致,在上述第一已处理数据与上述第二已处理数据不一致的情况下,执行上述第二事务操作,以获得第二更新内存数据库。
根据本公开的实施例,上述通过比对上述第一待处理数据与上述第一已处理数据,确定是否存在第一有效待处理数据包括:获取与上述第一待处理数据对应的第一时间戳,获取与上述第一已处理数据对应的第二时间戳,比对上述第一时间戳和上述第二时间戳,以获得第一比对结果,以及根据上述第一比对结果,确定是否存在第一有效待处理数据。
根据本公开的实施例,上述根据上述第一比对结果,确定是否存在第一有效待处理数据包括:在上述第一比对结果指示上述第一时间戳晚于上述第二时间戳的情况下,检测上述第一待处理数据是否与上述第一已处理数据一致,以及在上述第一待处理数据与上述第一已处理数据不一致的情况下,确定存在上述第一有效待处理数据。
根据本公开的实施例,上述根据上述第一比对结果,确定是否存在第一有效待处理数据还包括:在上述第一待处理数据与上述第一已处理数据一致的情况下,确定不存在上述第一有效待处理数据。
根据本公开的实施例,上述根据上述第一比对结果,确定是否存在第一有效待处理数据还包括:在上述第一比对结果指示上述第一时间戳的时刻早于上述第二时间戳的时刻的情况下,确定不存在上述第一有效待处理数据。
根据本公开的实施例,上述第一待处理数据包括多个第一字段,上述第一已处理数据包含多个第二字段,且上述第一字段与上述第二字段一一对应,上述执行上述第一事务操作,以获得第一更新内存数据库包括:在上述第一事务操作策略为更新操作策略的情况下,获取上述多个第一字段和上述多个第二字段,比对上述多个第一字段和上述多个第二字段,以确定上述多个第一字段中是否存在与上述多个第二字段不一致的第一字段,若存在与上述多个第二字段不一致的第一字段,则检测上述第一字段是否符合预设条件字段,以及在上述第一字段符合上述预设条件字段的情况下,基于上述第一字段,执行上述更新操作策略,以获得第一更新内存数据库。
根据本公开的实施例,上述基于上述第一字段,执行上述更新操作策略,以获得第一更新内存数据库包括:新增上述第一字段与上述主键字段之间的第一关联关系,删除上述第二字段与上述主键字段之间的第二关联关系,基于上述第一待处理数据中除上述第一字段之外的其他字段,更新与上述主键字段对应的主键值,以及基于上述主键值,更新上述内存数据库,以获得第一更新内存数据库。
根据本公开的实施例,上述流式增量实时数据具有预设数据结构,上述预设数据结构包括数据总长度、数据种类和数据内容,上述针对接收到的上游系统下发的流式增量实时数据,执行解析操作以获得第一待处理数据包括:针对接收到的上游系统下发的流式增量实时数据,按照上述数据总长度截取,以获得实时数据的数据内容,基于上述数据种类,查找与上述实时数据匹配的预设配置文件,其中,上述配置文件包括字段长度和解析方式,基于上述字段长度和上述数据内容,确定多个待解析字段,对上述多个待解析字段中的各个待解析字段执行解析操作,以获得多个已解析字段,以及对上述多个已解析字段执行序列化操作,以获得第一待处理数据。
根据本公开的实施例,上述方法还包括:接收由上述上游系统下发的第一存量数据,上述第一待处理数据包括指定主键字段,获取本地持久化数据库中的第二存量数据,上述第一待处理数据包括指定主键字段,比对上述第一存量数据和上述第二存量数据,以获得第二比对结果,以及根据上述第二比对结果,更新上述本地持久化数据库和上述内存数据库。
根据本公开的实施例,上述根据上述第二比对结果,更新上述本地持久化数据库和上述内存数据库包括:在上述第二比对结果指示上述第一存量数据中存在与上述主键字段对应的第三已处理数据,上述第二存量数据中不存在上述第三已处理数据的情况下,基于上述第三已处理数据,更新上述本地持久化数据库和上述内存数据库。
根据本公开的实施例,上述根据上述第二比对结果,更新上述本地持久化数据库和上述内存数据库还包括:在上述第二比对结果指示上述第一存量数据中存在与上述主键字段对应的第三已处理数据,上述第二存量数据中存在上述第三已处理数据,且上述第三已处理数据与上述第一已处理数据不一致的情况下,基于上述第三已处理数据,更新上述本地持久化数据库和上述内存数据库。
根据本公开的实施例,上述根据上述第二比对结果,更新上述本地持久化数据库和上述内存数据库还包括:在上述第二比对结果指示上述第一存量数据中不存在与上述主键字段对应的第三已处理数据,上述第二存量数据中存在上述第三已处理数据的情况下,删除上述第三已处理数据,以获得更新后的本地持久化数据库,以及基于上述更新后的本地持久化数据库,更新上述内存数据库。
根据本公开的实施例,上述数据库包括第一数据库和第二数据库,上述第一数据库部署于第一区域,上述第二数据库部署于第二区域,且上述第一区域不同于上述第二区域,上述执行上述第一事务操作,以获得第一更新内存数据库包括:针对上述第一数据库,执行上述第一事务操作,以获得上述第一数据库的第一更新内存数据库,以及基于上述第一数据库的第一更新内存数据库,更新上述第二数据库的内存数据库。
本公开的另一个方面提供了一种用于数据库的数据处理系统,包括:第一解析模块,被配置为针对接收到的上游系统下发的流式增量实时数据,执行解析操作以获得第一待处理数据,上述第一待处理数据包括指定主键字段,第一获取模块,被配置为从内存数据库中获取第一已处理数据,其中,上述第一已处理数据包括上述指定主键字段,第一比对模块,被配置为通过比对上述第一待处理数据与上述第一已处理数据,确定是否存在第一有效待处理数据,第一确定模块,被配置为在确定存在上述第一有效待处理数据的情况下,基于上述第一有效待处理数据,确定第一事务操作,以及第一执行模块,被配置为执行上述第一事务操作,以获得第一更新内存数据库。
根据本公开的实施例,上述第一执行模块包括:第一获取子模块,被配置为获取上述第一有效待处理数据的数据内容,第一检测子模块,被配置为检测上述数据内容中是否包含有第一版本号,第二获取子模块,被配置为在上述第一有效待处理数据中包含有上述第一版本号的情况下,从上述内存数据库中获取上述第一已处理数据的第二版本号,以及第一执行子模块,被配置为在上述第一版本号和上述第二版本号一致的情况下,执行上述第一事务操作,以获得第一更新内存数据库。
根据本公开的实施例,上述第一执行模块还包括:第二执行子模块,被配置为在上述第一有效待处理数据中未包含有上述第一版本号的情况下,执行上述第一事务操作,以获得第一更新内存数据库。
根据本公开的实施例,上述系统还包括:第二解析模块,被配置为针对接收到的上述上游系统下发的批量增量数据,执行解析操作以获得第二待处理数据,上述第二待处理数据包括上述指定主键字段,第二获取模块,被配置为从上述内存数据库中获取第二已处理数据,上述第二已处理数据包括上述指定主键字段,第二比对模块,被配置为通过比对上述第二待处理数据与上述第二已处理数据,确定是否存在第二有效待处理数据,第二确定模块,被配置为在确定存在上述第二有效待处理数据的情况下,基于上述第二有效待处理数据,确定第二事务操作,以及第二执行模块,被配置为执行上述第二事务操作,以获得第二更新内存数据库。
根据本公开的实施例,上述第二执行模块包括:第二检测子模块,被配置为检测上述第一已处理数据是否与上述第二已处理数据一致,以及第三执行子模块,被配置为在上述第一已处理数据与上述第二已处理数据不一致的情况下,执行上述第二事务操作,以获得第二更新内存数据库。
根据本公开的实施例,上述第一比对模块包括:第三获取子模块,被配置为获取与上述第一待处理数据对应的第一时间戳,第四获取子模块,被配置为获取与上述第一已处理数据对应的第二时间戳,第一比对子模块,被配置为比对上述第一时间戳和上述第二时间戳,以获得第一比对结果,以及第一确定子模块,被配置为根据上述第一比对结果,确定是否存在第一有效待处理数据。
根据本公开的实施例,上述第一确定子模块包括:第一检测单元,被配置为在上述第一比对结果指示上述第一时间戳晚于上述第二时间戳的情况下,检测上述第一待处理数据是否与上述第一已处理数据一致,以及第一确定单元,被配置为在上述第一待处理数据与上述第一已处理数据不一致的情况下,确定存在上述第一有效待处理数据。
根据本公开的实施例,上述第一确定子模块还包括:第二确定单元,被配置为在上述第一待处理数据与上述第一已处理数据一致的情况下,确定不存在上述第一有效待处理数据。
根据本公开的实施例,上述第一确定子模块还包括:第三确定单元,被配置为在上述第一比对结果指示上述第一时间戳的时刻早于上述第二时间戳的时刻的情况下,确定不存在上述第一有效待处理数据。
根据本公开的实施例,上述第一待处理数据包括多个第一字段,上述第一已处理数据包含多个第二字段,且上述第一字段与上述第二字段一一对应,上述第一执行模块包括:第五获取子模块,被配置为在上述第一事务操作策略为更新操作策略的情况下,获取上述多个第一字段和上述多个第二字段,第二比对子模块,被配置为比对上述多个第一字段和上述多个第二字段,以确定上述多个第一字段中是否存在与上述多个第二字段不一致的第一字段,第三检测子模块,被配置为若存在与上述多个第二字段不一致的第一字段,则检测上述第一字段是否符合预设条件字段,以及第四执行子模块,被配置为在上述第一字段符合上述预设条件字段的情况下,基于上述第一字段,执行上述更新操作策略,以获得第一更新内存数据库。
根据本公开的实施例,上述第四执行子模块包括:新增单元,被配置为新增上述第一字段与上述主键字段之间的第一关联关系,删除单元,被配置为删除上述第二字段与上述主键字段之间的第二关联关系,第一更新单元,被配置为基于上述第一待处理数据中除上述第一字段之外的其他字段,更新与上述主键字段对应的主键值,以及第二更新单元,被配置为基于上述主键值,更新上述内存数据库,以获得第一更新内存数据库。
根据本公开的实施例,上述流式增量实时数据具有预设数据结构,上述预设数据结构包括数据总长度、数据种类和数据内容,上述第一解析模块包括:截取子模块,被配置为针对接收到的上游系统下发的流式增量实时数据,按照上述数据总长度截取,以获得实时数据的数据内容,查找子模块,被配置为基于上述数据种类,查找与上述实时数据匹配的预设配置文件,其中,上述配置文件包括字段长度和解析方式,第二确定子模块,被配置为基于上述字段长度和上述数据内容,确定多个待解析字段,解析子模块,被配置为对上述多个待解析字段中的各个待解析字段执行解析操作,以获得多个已解析字段,以及处理子模块,被配置为对上述多个已解析字段执行序列化操作,以获得第一待处理数据。
根据本公开的实施例,上述系统还包括:接收模块,被配置为接收由上述上游系统下发的第一存量数据,上述第一待处理数据包括指定主键字段,第三获取模块,被配置为获取本地持久化数据库中的第二存量数据,上述第一待处理数据包括指定主键字段,第三比对模块,被配置为比对上述第一存量数据和上述第二存量数据,以获得第二比对结果,以及更新模块,被配置为根据上述第二比对结果,更新上述本地持久化数据库和上述内存数据库。
根据本公开的实施例,上述更新模块包括:第一更新子模块,被配置为在上述第二比对结果指示上述第一存量数据中存在与上述主键字段对应的第三已处理数据,上述第二存量数据中不存在上述第三已处理数据的情况下,基于上述第三已处理数据,更新上述本地持久化数据库和上述内存数据库。
根据本公开的实施例,上述更新模块还包括:第二更新子模块,被配置为在上述第二比对结果指示上述第一存量数据中存在与上述主键字段对应的第三已处理数据,上述第二存量数据中存在上述第三已处理数据,且上述第三已处理数据与上述第一已处理数据不一致的情况下,基于上述第三已处理数据,更新上述本地持久化数据库和上述内存数据库。
根据本公开的实施例,上述更新模块还包括:第三更新子模块,被配置为在上述第二比对结果指示上述第一存量数据中不存在与上述主键字段对应的第三已处理数据,上述第二存量数据中存在上述第三已处理数据的情况下,删除上述第三已处理数据,以获得更新后的本地持久化数据库,以及第四更新子模块,被配置为基于上述更新后的本地持久化数据库,更新上述内存数据库。
根据本公开的实施例,上述数据库包括第一数据库和第二数据库,上述第一数据库部署于第一区域,上述第二数据库部署于第二区域,且上述第一区域不同于上述第二区域,上述第一执行模块包括:第五执行子模块,被配置为针对上述第一数据库,执行上述第一事务操作,以获得上述第一数据库的第一更新内存数据库,以及第五更新子模块,被配置为基于上述第一数据库的第一更新内存数据库,更新上述第二数据库的内存数据库。
本公开的另一方面提供了一种计算机可读存储介质,存储有计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。
本公开的另一方面提供了一种计算机程序,所述计算机程序包括计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。
根据本公开的实施例,提供了一种在关系型数据库与键值型数据库之间支持数据实时生效的流式数据处理系统及方法。通过实时接收由上游系统基于事件驱动下发的联机流式增量实时数据,通过网络快速传播,中间不产生任何磁盘落地的过程,在毫秒级内可以将数据实时本地生效,可以至少部分地解决相关技术中关系型数据库端到键值型数据库端延时长的技术问题,并因此可以实现缩短端到端延时的技术效果。
附图说明
通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了根据本公开实施例的数据处理方法及其系统的应用场景;
图2示意性示出了根据本公开实施例的数据处理方法的流程图;
图3示意性示出了根据本公开另一实施例的数据处理方法的流程图;
图4示意性示出了根据本公开实施例的判断数据有效性的流程图;
图5示意性示出了根据本公开实施例的根据数据内容生成数据更新策略的流程图;
图6示意性示出了根据本公开实施例的根据版本号判断数据更新是否存在冲突的流程图;
图7示意性示出了根据本公开实施例的比对上游存量数据与本地存量数据一致性的流程图;
图8示意性示出了根据本公开实施例的数据处理系统的框图;
图9示意性示出了根据本公开实施例的针对流式数据的实时处理系统的示意图;
图10示意性示出了根据本公开实施例的采集节点的框图;
图11示意性示出了根据本公开实施例的计算节点的框图;
图12示意性示出了根据本公开实施例的一致性校验装置的框图;
图13示意性示出了根据本公开实施例的“双活”方案的部署示意图;
图14示意性示出了根据本公开实施例的“双活”方案的数据生效流程图;以及
图15示意性示出了根据本公开实施例的适于实现数据处理方法及其系统的方框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。
针对现有技术中,在关系型数据库和键值型数据库之间实时生效数据的延时长的技术问题,本公开的实施例提供了一种用于数据库的数据处理方法,包括:首先,针对接收到的由上游系统下发的流式增量实时数据,执行解析操作以获得包括指定主键字段的第一待处理数据,然后,从内存数据库中获取包括指定主键字段的第一已处理数据,再通过比对第一待处理数据与第一已处理数据,确定是否存在第一有效待处理数据,并在确定存在第一有效待处理数据的情况下,基于第一有效待处理数据,确定第一事务操作,最后,执行第一事务操作,以获得第一更新内存数据库。
图1示意性示出了根据本公开实施例的数据处理方法及其系统的应用场景100。需要注意的是,图1所示仅为可以应用本公开实施例的应用场景的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
如图1所示,本公开实施例的应用场景100可以包括关系型数据库110,网络120和键值型数据库130。网络120用以在关系型数据库110和键值型数据库130之间提供通信链路的介质。网络120可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
关系型数据库120中存储有上游系统的业务数据,作为主数据源,业务数据可以来源于多个渠道,例如渠道1和渠道2,其中渠道1可以是联机渠道,渠道2可以是批量渠道。为了提高数据处理效率,一般会复制一份上游系统的业务数据到数据处理系统,作为辅数据源,供查询使用,并且需与上游系统的业务数据实时保持一致。然而,数据处理系统中为保证数据的高速读写,通常采用的是键值型数据库130,而键值型数据库130与关系型数据库110在结构上存在较大差异,且目前业界尚无关系型数据库110与键值型数据库130的主辅数据源之间实时复制的通用解决方案,较为常见的解决方案是建立一个用于中转的关系型数据库,通过二次加工可以载入键值型数据库。但是,该解决方案存在以下几点不足之处:
1.(端到端延时长)通过主动采集日志而非事件驱动采集日志,将造成实时复制存在至少秒级的延时。通常的,可以通过源端日志获取指定复制源表的变化情况后,发送至目标数据库并作用于目标表。例如,通过QR复制技术将主机DB2数据库表复制到平台Oracle数据库表中,再进行一层结构转换后复制到键值数据库。
2.(资源消耗较高)需在源端数据库部署日志采集分析程序,将产生一定的性能消耗,对数据库的联机数据处理性能产生一定影响。特别地,如果源端数据库为主机DB2等较昂贵的数据库,所占用的额外资源花销不小。
3.(容易出现性能瓶颈)在源端数据库的性能远大于目标数据库的情况下,例如,Oracle数据库的性能甚至不足主机DB2数据库的十分之一,实时复制数据时,性能低的目标数据库将成为性能瓶颈。
4.(无法线性扩容)采用日志复制技术,必须保证日志同步时的顺序性,这种集中式处理的方式限制了数据的同步速率,无法使用分布式处理方式使用更便宜的资源对处理效率进行线性扩展。
本公开提供了一种支持在关系型数据库110与键值型数据库130之间的业务数据实时生效的流式数据处理系统及方法,可以克服现有技术中端到端延时长、资源消耗较高、容易出现性能瓶颈、无法线性扩容等缺陷。通过实时接收由事件驱动的联机数据下传,通过网络快速传播,中间不产生任何磁盘落地过程,在毫秒级内将数据实时本地生效;通过分布式技术提升系统处理性能以及线性扩容能力,降低运营成本并同时保障系统性能完全满足大并发量数据复制;通过固定周期的主辅数据比对策略,确保上下游系统数据的最终一致性。
应该理解,图1中的关系型数据库、网络和键值型数据库的数目仅仅是示意性的。根据实现需要,可以具有任意数目的关系型数据库、网络和键值型数据库。
图2示意性示出了根据本公开实施例的数据处理方法的流程图。
如图2所示,该方法可以包括操作S210~操作S250。
在操作S210,针对接收到的由上游系统下发的流式增量实时数据,执行解析操作以获得第一待处理数据,第一待处理数据包括指定主键字段。
根据本公开的实施例,关系型数据库的日志文件中存储有上游系统的业务数据,该业务数据具有“流”的特点,由事件驱动采集日志,可以得到流式增量实时数据,即数据的变化实时数据,对该数据进行解析操作,可以获得包括主键字段的第一待处理数据,存储在键值型数据库中。
在操作S220,从内存数据库中获取第一已处理数据,其中,第一已处理数据包括指定主键字段。
根据本公开的实施例,内存数据库用于存储业务数据,为数据处理提供快速高效的读写性能。
在操作S230,通过比对第一待处理数据与第一已处理数据,确定是否存在第一有效待处理数据。
根据本公开的实施例,在第一待处理数据与第一已处理数据一致的情况下,确定不存在第一有效待处理数据,在第一待处理数据与第一已处理数据不一致的情况下,确定存在第一有效待处理数据。
在操作S240,在确定存在第一有效待处理数据的情况下,基于第一有效待处理数据,确定第一事务操作。
根据本公开的实施例,根据不同的第一有效待处理数据,可以确定出不同的第一事务操作,该第一事务操作可以包括但不限于更新事务操作和删除事务操作。
在操作S250,执行第一事务操作,以获得第一更新内存数据库。
根据本公开的实施例,在确定出第一事务操作之后,可以执行更新事务操作或删除事务操作,更新内存数据库,以获得第一更新内存数据库。
作为一种可选的实施例,前述操作S250(执行第一事务操作,以获得第一更新内存数据库)可以包括:获取第一有效待处理数据的数据内容,检测数据内容中是否包含有第一版本号,在第一有效待处理数据中包含有第一版本号的情况下,从内存数据库中获取第一已处理数据的第二版本号,以及在第一版本号和第二版本号一致的情况下,执行第一事务操作,以获得第一更新内存数据库。
作为一种可选的实施例,在第一版本号和第二版本号不一致的情况下,拒绝执行第一事务操作。
根据本公开的实施例,前述操作S250(执行第一事务操作,以获得第一更新内存数据库)还可以包括:在第一有效待处理数据中未包含有第一版本号的情况下,执行第一事务操作,以获得第一更新内存数据库。
根据本公开的实施例,为了弥补实时联机数据可能发生的更新遗漏,可以通过接收日增量的批量数据进行补足,对于日增量的批量数据的更新策略同上述操作S210~操作S250的流程更新数据。若联机出现缺失,可由批量下发的日增量的批量数据进行弥补,而对于联机已经正常更新成功的数据,日增量的批量数据在进行更新时,由于数据已生效,所以不会产生事务操作。
具体地,该方法除了可以包括前述操作S210~操作S250之外,还可以包括:针对接收到的上游系统下发的批量增量数据,执行解析操作以获得第二待处理数据,第二待处理数据包括指定主键字段,从内存数据库中获取第二已处理数据,第二已处理数据包括指定主键字段,通过比对第二待处理数据与第二已处理数据,确定是否存在第二有效待处理数据,在确定存在第二有效待处理数据的情况下,基于第二有效待处理数据,确定第二事务操作,以及执行第二事务操作,以获得第二更新内存数据库。
图3示意性示出了根据本公开另一实施例的数据处理方法的流程图。
如图3所示,该方法可以包括步骤301~步骤306。
步骤301,接收来自上游下发的实时数据(可以包括联机/批量增量变更数据),数据结构通过可预配置化方法配置在文件中,根据数据结构进行相应解析,获得解析译码后数据。
步骤302,根据接收到的实时数据,通过数据主键字段获取本地该字段已维护记录,得到新旧数据的上游数据生效时间,若新数据的生效时间戳要晚于旧数据的生效时间戳,则此数据为一条无效数据,处理结束,否则为一条有效数据,进入步骤303。
步骤303,根据数据变更内容,判断此数据需要执行的事务操作是更新操作,还是删除操作。若是更新操作,则还需比对数据的各字段内容,获得新老数据存在差异的字段。根据上述条件,生成相应的更新策略。
步骤304,根据数据更新策略向数据服务器进行数据变更。将该数据生成的对应更新操作步骤,向大内存数据库提交执行。
步骤305,通过数据所带的版本号,判断此次数据提交是否与其他操作提交存在数据冲突问题。如果发生冲突,则本次返回步骤302,进行数据重算,即重新进行判断和计算更新策略;否则更新成功,数据生效。
本公开为了弥补实时联机数据可能发生的更新遗漏,通过接收日增量的批量数据以及特定周期批次(如季度)的上游存量数据进行补足。
对于日增量的批量数据的更新策略同上述步骤301~步骤305的所述流程更新数据,即所有数据会通过联机与批量的方式进行两次更新判断,若联机出现缺失,可由批量下发的日增量的批量数据进行弥补,而对于联机已经正常更新成功的数据,日增量的批量数据在进行更新时,由于数据已生效,所以不会产生事务操作。
对于特定周期批次(如季度)的上游存量数据,详见如下步骤306。
步骤306,对于特定周期批次(如季度)的上游存量数据文件,先与数据库维护的存量数据进行一致性比对,判断数据是否一致,如果数据一致,则放弃更新,否则依据步骤302~步骤305的流程更新数据。
根据本公开的实施例,执行第二事务操作,以获得第二更新内存数据库包括:检测第一已处理数据是否与第二已处理数据一致,在第一已处理数据与第二已处理数据不一致的情况下,执行第二事务操作,以获得第二更新内存数据库。
作为一种可选的实施例,在第一已处理数据与第二已处理数据一致的情况下,不执行第二事务操作。
根据本公开的实施例,通过比对第一待处理数据与第一已处理数据,确定是否存在第一有效待处理数据包括:获取与第一待处理数据对应的第一时间戳,获取与第一已处理数据对应的第二时间戳,比对第一时间戳和第二时间戳,以获得第一比对结果,以及根据第一比对结果,确定是否存在第一有效待处理数据。
根据本公开的实施例,根据第一比对结果,确定是否存在第一有效待处理数据包括:在第一比对结果指示第一时间戳晚于第二时间戳的情况下,检测第一待处理数据是否与第一已处理数据一致,以及在第一待处理数据与第一已处理数据不一致的情况下,确定存在第一有效待处理数据。
根据本公开的实施例,根据第一比对结果,确定是否存在第一有效待处理数据还包括:在第一待处理数据与第一已处理数据一致的情况下,确定不存在第一有效待处理数据。
根据本公开的实施例,根据第一比对结果,确定是否存在第一有效待处理数据还包括:在第一比对结果指示第一时间戳的时刻早于第二时间戳的时刻的情况下,确定不存在第一有效待处理数据。
图4示意性示出了根据本公开实施例的判断数据有效性的流程图。
步骤401,获取待更新数据中在上游系统中成功生效的时间戳作为数据生效时间,进行有效性判断。
步骤402,根据所需变更数据中的主键字段,从大内存数据库中获取该条记录在本地存储的数据,再将两者间存储的数据(在上游系统中成功生效的)时间戳进行比对,如果待更新数据中时间戳更新,则代表数据生效时间戳为最新需要进行更新,跳转至步骤404,否则跳转至步骤403。
步骤403,记录待更新的数据为无效数据。
步骤404,再比较待更新数据与大内存数据库中的数据内容,是否存在改变。如果数据未发生改变,则跳转至步骤405,否则跳转至步骤407。
步骤405,记录内存数据库中已生效最新的数据。
步骤406,该条数据为无效数据,无需向大内存数据库中进行更新,处理结束。
步骤407,判断待更新数据是否属于联机渠道下发的数据,若是则跳转至步骤409,否则为批量渠道收到的数据,跳转至408。
步骤408:该数据从批量渠道下传,则记录该数据在联机更新中发生遗漏,通过批量方式补充更新。
步骤409:记录该条数据为正常联机同步更新数据。
步骤410:该条数据为需要进行更新的有效数据,进行更新策略生成步骤。
根据本公开的实施例,第一待处理数据包括多个第一字段,第一已处理数据包含多个第二字段,且第一字段与第二字段一一对应,执行第一事务操作,以获得第一更新内存数据库包括:在第一事务操作策略为更新操作策略的情况下,获取多个第一字段和多个第二字段,比对多个第一字段和多个第二字段,以确定多个第一字段中是否存在与多个第二字段不一致的第一字段,若存在与多个第二字段不一致的第一字段,则检测第一字段是否符合预设条件字段,以及在第一字段符合预设条件字段的情况下,基于第一字段,执行更新操作策略,以获得第一更新内存数据库。
根据本公开的实施例,基于第一字段,执行更新操作策略,以获得第一更新内存数据库包括:新增第一字段与主键字段之间的第一关联关系,删除第二字段与主键字段之间的第二关联关系,基于第一待处理数据中除第一字段之外的其他字段,更新与主键字段对应的主键值,以及基于主键值,更新内存数据库,以获得第一更新内存数据库。
根据本公开的实施例,流式增量实时数据具有预设数据结构,预设数据结构包括数据总长度、数据种类和数据内容,针对接收到的上游系统下发的流式增量实时数据,执行解析操作以获得第一待处理数据包括:针对接收到的上游系统下发的流式增量实时数据,按照数据总长度截取,以获得实时数据的数据内容,基于数据种类,查找与实时数据匹配的预设配置文件,其中,配置文件包括字段长度和解析方式,基于字段长度和数据内容,确定多个待解析字段,对多个待解析字段中的各个待解析字段执行解析操作,以获得多个已解析字段,以及对多个已解析字段执行序列化操作,以获得第一待处理数据。
图5示意性示出了根据本公开实施例的根据数据内容生成数据更新策略的流程图。
如图5所示,该方法可以包括步骤501~操作S512。
步骤501:接收待更新的有效数据。
步骤502:判断此条数据需要进行更新还是删除,如果需要删除,跳转至步骤503,如果需要更新,跳转至步骤505。
步骤503:记录删除此条数据中,业务条件字段为键、主键字段与值之间的关联关系,即解除业务条件字段与主数据的关联关系。
步骤504:记录删除主键字段为键的主数据键值对,即删除该条主数据。
步骤505:将待更新数据中的数据内容,与大内存数据库中已维护的存量数据内容,开始对每个字段进行数据变更内容判断。
步骤506:如果字段内容存在变更,则跳转至507,一致则跳转至511。
步骤507:如果存在变更的字段是业务条件字段,则跳转至508,否则跳转至510。
步骤508:记录删除大内存数据库中已维护存量数据中,业务条件字段为键,主键字段为值之间的关联关系,即解除旧业务条件字段与主数据的关联关系。
步骤509:记录添加待更新数据中,业务条件字段为键,主键字段为值之间的关联关系,即增加新业务条件字段与主数据的关联关系。
步骤510:记录更新主键字段为键的主数据内容,即更新主数据内容。
步骤511:判断是否完成对所有字段内容的判断,完成跳转至步骤512,否则跳转至步骤505。
步骤512:根据所有需对大内存数据库进行操作的步骤,生成更新策略,跳转至步骤305向大内存数据库中提交操作。
根据本公开的实施例,该方法除了可以包括前述操作S210~操作S250之外,还可以包括:接收由上游系统下发的第一存量数据,第一待处理数据包括指定主键字段,获取本地持久化数据库中的第二存量数据,第一待处理数据包括指定主键字段,比对第一存量数据和第二存量数据,以获得第二比对结果,以及根据第二比对结果,更新本地持久化数据库和内存数据库。
图6示意性示出了根据本公开实施例的根据版本号判断数据更新是否存在冲突的流程图。
步骤601:获取待更新的有效数据的数据内容。
步骤602:判断数据内容中是否包含有数据版本号,如果是(包含),则表示该条数据变更需进行版本控制,跳转至步骤603,如果否(不包含),则跳转至步骤604。
步骤603:将待更新的有效数据中包含的版本号,与大内存数据库5中存储的当前数据版本号进行比对,若两个版本号一致,代表待更新的有效数据的修改基础即为当前数据,未产生数据冲突,跳转至步骤604,否两个版本号不一致,代表待更新的有效数据的修改基础不为当前数据,将产生数据冲突,跳转至步骤605。
步骤604:将待更新的有效数据更新至大内存数据库中,数据内容变更,数据版本号向上迭代。
步骤605:产生数据冲突,此次更新被拒绝执行,返回步骤302,进行数据重计算。
步骤606:数据生效,更新成功。
根据本公开的实施例,根据第二比对结果,更新本地持久化数据库和内存数据库包括:在第二比对结果指示第一存量数据中存在与主键字段对应的第三已处理数据,第二存量数据中不存在第三已处理数据的情况下,基于第三已处理数据,更新本地持久化数据库和内存数据库。
根据本公开的实施例,根据第二比对结果,更新本地持久化数据库和内存数据库还包括:在第二比对结果指示第一存量数据中存在与主键字段对应的第三已处理数据,第二存量数据中存在第三已处理数据,且第三已处理数据与第一已处理数据不一致的情况下,基于第三已处理数据,更新本地持久化数据库和内存数据库。
根据本公开的实施例,根据第二比对结果,更新本地持久化数据库和内存数据库还包括:在第二比对结果指示第一存量数据中不存在与主键字段对应的第三已处理数据,第二存量数据中存在第三已处理数据的情况下,删除第三已处理数据,以获得更新后的本地持久化数据库,以及基于更新后的本地持久化数据库,更新内存数据库。
根据本公开的实施例,数据库包括第一数据库和第二数据库,第一数据库部署于第一区域,第二数据库部署于第二区域,且第一区域不同于第二区域,执行第一事务操作,以获得第一更新内存数据库包括:针对第一数据库,执行第一事务操作,以获得第一数据库的第一更新内存数据库,以及基于第一数据库的第一更新内存数据库,更新第二数据库的内存数据库。
图7示意性示出了根据本公开实施例的比对上游存量数据与本地存量数据一致性的流程图。
步骤701:在接收到上游每季度下发的存量批量数据之后,与持久化数据库中维护的本地存量数据,根据主键字段逐行进行比较。
步骤702:如果某条记录的主键,在上游存量数据中存在,但在本地存量数据中不存在,则此条记录为遗漏更新的数据,跳转至步骤706。
步骤703:如果上游存量数据与本地存量数据之间主键相同的两条记录,其他字段数据不一致,则此条记录应以上游存量数据为准,需进行修复更新,跳转至步骤706。
步骤704:如果某条记录的主键,在上游存量数据中不存在,但在本地存量数据中存在,则此条记录为多余数据,需进行删除,跳转至步骤707。
步骤705,如果存量数据一致,则无需进行任何操作,处理完毕。
步骤706,标记上游存量数据中的该条记录为不一致数据,原数据需进行修复,进入有效性判断。
步骤707,标记本地存量数据中的该条数据为不一致数据,原数据需进行删除,进入有效性判断。
通过本公开的实施例,提供了一种在关系型数据库与键值型数据库之间支持数据实时生效的流式数据处理系统及方法。通过实时接收由上游系统基于事件驱动下发的联机流式增量实时数据,通过网络快速传播,中间不产生任何磁盘落地的过程,在毫秒级内可以将数据实时本地生效,可以至少部分地解决相关技术中关系型数据库端到键值型数据库端延时长的技术问题,并因此可以实现缩短端到端延时的技术效果。
图8示意性示出了根据本公开实施例的数据处理系统的框图。
如图8所示,该系统800可以包括第一解析模块810、第一获取模块820、第一比对模块830、第一确定模块840和第一执行模块850。
第一解析模块810,被配置为针对接收到的上游系统下发的流式增量实时数据,执行解析操作以获得第一待处理数据,第一待处理数据包括指定主键字段。
第一获取模块820,被配置为从内存数据库中获取第一已处理数据,其中,第一已处理数据包括指定主键字段。
第一比对模块830,被配置为通过比对第一待处理数据与第一已处理数据,确定是否存在第一有效待处理数据。
第一确定模块840,被配置为在确定存在第一有效待处理数据的情况下,基于第一有效待处理数据,确定第一事务操作。
第一执行模块850,被配置为执行第一事务操作,以获得第一更新内存数据库。
根据本公开的实施例,前述第一执行模块850可以包括:第一获取子模块,被配置为获取前述第一有效待处理数据的数据内容,第一检测子模块,被配置为检测前述数据内容中是否包含有第一版本号,第二获取子模块,被配置为在前述第一有效待处理数据中包含有前述第一版本号的情况下,从前述内存数据库中获取前述第一已处理数据的第二版本号,以及第一执行子模块,被配置为在前述第一版本号和前述第二版本号一致的情况下,执行前述第一事务操作,以获得第一更新内存数据库。
根据本公开的实施例,前述第一执行模块850还可以包括:第二执行子模块,被配置为在前述第一有效待处理数据中未包含有前述第一版本号的情况下,执行前述第一事务操作,以获得第一更新内存数据库。
根据本公开的实施例,前述系统除了可以包括前述第一解析模块810、第一获取模块820、第一比对模块830、第一确定模块840和第一执行模块850之外,还可以包括:第二解析模块,被配置为针对接收到的前述上游系统下发的批量增量数据,执行解析操作以获得第二待处理数据,前述第二待处理数据包括前述指定主键字段,第二获取模块,被配置为从前述内存数据库中获取第二已处理数据,前述第二已处理数据包括前述指定主键字段,第二比对模块,被配置为通过比对前述第二待处理数据与前述第二已处理数据,确定是否存在第二有效待处理数据,第二确定模块,被配置为在确定存在前述第二有效待处理数据的情况下,基于前述第二有效待处理数据,确定第二事务操作,以及第二执行模块,被配置为执行前述第二事务操作,以获得第二更新内存数据库。
根据本公开的实施例,前述第二执行模块可以包括:第二检测子模块,被配置为检测前述第一已处理数据是否与前述第二已处理数据一致,以及第三执行子模块,被配置为在前述第一已处理数据与前述第二已处理数据不一致的情况下,执行前述第二事务操作,以获得第二更新内存数据库。
根据本公开的实施例,前述第一比对模块可以包括:第三获取子模块,被配置为获取与前述第一待处理数据对应的第一时间戳,第四获取子模块,被配置为获取与前述第一已处理数据对应的第二时间戳,第一比对子模块,被配置为比对前述第一时间戳和前述第二时间戳,以获得第一比对结果,以及第一确定子模块,被配置为根据前述第一比对结果,确定是否存在第一有效待处理数据。
根据本公开的实施例,前述第一确定子模块可以包括:第一检测单元,被配置为在前述第一比对结果指示前述第一时间戳晚于前述第二时间戳的情况下,检测前述第一待处理数据是否与前述第一已处理数据一致,以及第一确定单元,被配置为在前述第一待处理数据与前述第一已处理数据不一致的情况下,确定存在前述第一有效待处理数据。
根据本公开的实施例,前述第一确定子模块还可以包括:第二确定单元,被配置为在前述第一待处理数据与前述第一已处理数据一致的情况下,确定不存在前述第一有效待处理数据。
根据本公开的实施例,前述第一确定子模块还可以包括:第三确定单元,被配置为在前述第一比对结果指示前述第一时间戳的时刻早于前述第二时间戳的时刻的情况下,确定不存在前述第一有效待处理数据。
根据本公开的实施例,前述第一待处理数据包括多个第一字段,前述第一已处理数据包含多个第二字段,且前述第一字段与前述第二字段一一对应,前述第一执行模块包括:第五获取子模块,被配置为在前述第一事务操作策略为更新操作策略的情况下,获取前述多个第一字段和前述多个第二字段,第二比对子模块,被配置为比对前述多个第一字段和前述多个第二字段,以确定前述多个第一字段中是否存在与前述多个第二字段不一致的第一字段,第三检测子模块,被配置为若存在与前述多个第二字段不一致的第一字段,则检测前述第一字段是否符合预设条件字段,以及第四执行子模块,被配置为在前述第一字段符合前述预设条件字段的情况下,基于前述第一字段,执行前述更新操作策略,以获得第一更新内存数据库。
根据本公开的实施例,前述第四执行子模块可以包括:新增单元,被配置为新增前述第一字段与前述主键字段之间的第一关联关系,删除单元,被配置为删除前述第二字段与前述主键字段之间的第二关联关系,第一更新单元,被配置为基于前述第一待处理数据中除前述第一字段之外的其他字段,更新与前述主键字段对应的主键值,以及第二更新单元,被配置为基于前述主键值,更新前述内存数据库,以获得第一更新内存数据库。
根据本公开的实施例,前述流式增量实时数据具有预设数据结构,前述预设数据结构包括数据总长度、数据种类和数据内容,前述第一解析模块包括:截取子模块,被配置为针对接收到的上游系统下发的流式增量实时数据,按照前述数据总长度截取,以获得实时数据的数据内容,查找子模块,被配置为基于前述数据种类,查找与前述实时数据匹配的预设配置文件,其中,前述配置文件包括字段长度和解析方式,第二确定子模块,被配置为基于前述字段长度和前述数据内容,确定多个待解析字段,解析子模块,被配置为对前述多个待解析字段中的各个待解析字段执行解析操作,以获得多个已解析字段,以及处理子模块,被配置为对前述多个已解析字段执行序列化操作,以获得第一待处理数据。
根据本公开的实施例,前述系统除了可以包括前述第一解析模块810、第一获取模块820、第一比对模块830、第一确定模块840和第一执行模块850之外,还可以包括:接收模块,被配置为接收由前述上游系统下发的第一存量数据,前述第一待处理数据包括指定主键字段,第三获取模块,被配置为获取本地持久化数据库中的第二存量数据,前述第一待处理数据包括指定主键字段,第三比对模块,被配置为比对前述第一存量数据和前述第二存量数据,以获得第二比对结果,以及更新模块,被配置为根据前述第二比对结果,更新前述本地持久化数据库和前述内存数据库。
根据本公开的实施例,前述更新模块可以包括:第一更新子模块,被配置为在前述第二比对结果指示前述第一存量数据中存在与前述主键字段对应的第三已处理数据,前述第二存量数据中不存在前述第三已处理数据的情况下,基于前述第三已处理数据,更新前述本地持久化数据库和前述内存数据库。
根据本公开的实施例,前述更新模块还可以包括:第二更新子模块,被配置为在前述第二比对结果指示前述第一存量数据中存在与前述主键字段对应的第三已处理数据,前述第二存量数据中存在前述第三已处理数据,且前述第三已处理数据与前述第一已处理数据不一致的情况下,基于前述第三已处理数据,更新前述本地持久化数据库和前述内存数据库。
根据本公开的实施例,前述更新模块还可以包括:第三更新子模块,被配置为在前述第二比对结果指示前述第一存量数据中不存在与前述主键字段对应的第三已处理数据,前述第二存量数据中存在前述第三已处理数据的情况下,删除前述第三已处理数据,以获得更新后的本地持久化数据库,以及第四更新子模块,被配置为基于前述更新后的本地持久化数据库,更新前述内存数据库。
根据本公开的实施例,前述数据库包括第一数据库和第二数据库,前述第一数据库部署于第一区域,前述第二数据库部署于第二区域,且前述第一区域不同于前述第二区域,前述第一执行模块包括:第五执行子模块,被配置为针对前述第一数据库,执行前述第一事务操作,以获得前述第一数据库的第一更新内存数据库,以及第五更新子模块,被配置为基于前述第一数据库的第一更新内存数据库,更新前述第二数据库的内存数据库。
根据本公开的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
例如,第一解析模块810、第一获取模块820、第一比对模块830、第一确定模块840、第一执行模块850、第一获取子模块、第一检测子模块、第二获取子模块、第一执行子模块、第二执行子模块、第二解析模块、第二获取模块、第二比对模块、第二确定模块、第二执行模块、第二检测子模块、第三执行子模块,第三获取子模块、第四获取子模块、第一确定子模块、第一检测单元、第一确定单元、第二确定单元、第三确定单元、第五获取子模块、第二比对子模块、第三检测子模块、第四执行子模块、新增单元、删除单元、第一更新单元、第二更新单元、截取子模块、查找子模块、第二确定子模块、解析子模块、处理子模块、接收模块、第三获取模块、第三比对模块、更新模块、第一更新子模块、第二更新子模块、第三更新子模块、第四更新子模块、第五执行子模块和第五更新子模块中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,第一解析模块810、第一获取模块820、第一比对模块830、第一确定模块840、第一执行模块850、第一获取子模块、第一检测子模块、第二获取子模块、第一执行子模块、第二执行子模块、第二解析模块、第二获取模块、第二比对模块、第二确定模块、第二执行模块、第二检测子模块、第三执行子模块,第三获取子模块、第四获取子模块、第一确定子模块、第一检测单元、第一确定单元、第二确定单元、第三确定单元、第五获取子模块、第二比对子模块、第三检测子模块、第四执行子模块、新增单元、删除单元、第一更新单元、第二更新单元、截取子模块、查找子模块、第二确定子模块、解析子模块、处理子模块、接收模块、第三获取模块、第三比对模块、更新模块、第一更新子模块、第二更新子模块、第三更新子模块、第四更新子模块、第五执行子模块和第五更新子模块中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,第一解析模块810、第一获取模块820、第一比对模块830、第一确定模块840、第一执行模块850、第一获取子模块、第一检测子模块、第二获取子模块、第一执行子模块、第二执行子模块、第二解析模块、第二获取模块、第二比对模块、第二确定模块、第二执行模块、第二检测子模块、第三执行子模块,第三获取子模块、第四获取子模块、第一确定子模块、第一检测单元、第一确定单元、第二确定单元、第三确定单元、第五获取子模块、第二比对子模块、第三检测子模块、第四执行子模块、新增单元、删除单元、第一更新单元、第二更新单元、截取子模块、查找子模块、第二确定子模块、解析子模块、处理子模块、接收模块、第三获取模块、第三比对模块、更新模块、第一更新子模块、第二更新子模块、第三更新子模块、第四更新子模块、第五执行子模块和第五更新子模块中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图9示意性示出了根据本公开实施例的针对流式数据的实时处理系统的示意图。
图9为本发明的一种流式数据实时处理系统的示意图,本发明系统包括以下组成部分,采集节点901、计算节点902、转发节点903、持久化数据库904、大内存数据库905、一致性校验装置906。其中,采集节点901、计算节点902、转发节点903、大内存数据库905可分布式地部署在多台服务器上,分散系统处理压力,形成性能可线性扩展的分布式系统架构。
采集节点901分布式地部署在多台服务器上,每台服务器承担一样的功能,通过监听网络端口,通过负载均衡装置(本公开中使用F5)实时接收上游联机下发的流式增量实时数据,并进行解析译码,将上游数据结构转化为统一标准结构,然后将结构标准化后的数据负载均衡地发送至计算节点902。具体地,采集节点901预先通过可配置化的方式,将上游数据结构部署在配置文件中,在联机实时接收到上游数据后,通过数据种类匹配该数据的配置信息,并对数据内容进行解析,将解析完成的上游数据,序列化后通过TCP轮询发送至需要使用到该种类数据的计算节点902中。
计算节点902分布式地部署在多台服务器上,每台服务器可部署不同的处理逻辑用于支持不同场景下的数据处理。本发明的计算节点902部署支持多种场景及多场景交叉,包括:流式数据实时复制、实时流式数据与大内存数据库905静态数据关联计算、实时数据之间的关联计算、向转发节点903发送结果数据等。由于本发明的重点在于流式数据实时生效的数据复制场景,因而对于计算节点其他场景不予详述。
在流式数据实时复制场景下,计算节点902将根据数据生效时间戳判断数据是否为最新的有效数据,若为最新则需进行更新,再根据数据变更内容生成数据更新策略,根据数据更新策略向数据服务器进行数据变更,否则放弃此次更新。如此计算节点902将最新的实时数据复制到大内存数据库905中,使上游实时数据变更生效于系统中。
转发节点903分布式地部署在多台服务器上,每台服务器可部署不同的下游转发逻辑,在接收到经过计算节点902处理之后的结果数据后,将结果数据包装为下游系统规定的数据格式,包括使用JSON格式的HTTP接口或TCP报文的SOCKET接口等,并向下游系统发送。需要说明的是,在只涉及流式数据实时复制场景下,无需经过转发节点903向下游转发数据。
持久化数据库904接收上游每日的增量批量数据文件,该批量数据文件中应包含上游表中当日所更新的全量内容,将每条记录向大内存数据库905之中更新,处理逻辑与计算节点902保持一致。如此,可保证在实时联机数据更新时,若在某一环链路中出现错误,导致数据遗失,可及时由当日增量数据补充回来。同时持久化数据库904将增量数据在本地进行累积,形成一份存量数据,保证持久化数据库904与大内存数据库905中存量数据保持一致,将其作为大内存数据库905中存量数据的一份持久化备份。
大内存数据库5负责存储业务数据,为计算节点902提供快速、高效的读写功能。内存数据库在业界有非常多的产品,例如Tair、Redis等开源产品,其特点包括数据高可用性、可扩展性等。因此,使用内存数据库可以通过内存读取的高效性保证极高的读写性能,通过分布式的架构保证系统处理性能的可扩展性,以此满足大流量数据处理。同时,作为一个分布式系统的数据存储设备,其也必须拥有解决数据冲突的手段。本系统中,使用数据版本号的方式进行冲突控制。当计算节点902进行数据查询时,在返回数据的同时,还会包含该数据最新的版本号,每当数据产生更新时,版本号都会向上递增。因此,当计算节点902在进行更新操作时,将更新后的数据的版本号与读取数据时得到的版本号一并上送到大内存数据库905,大内存数据库905会将上送的版本号与数据当前的版本号进行比较,若一致代表对此数据的更新时的数据基础,与读取时的一致,则允许更新,若不一致表明在进行读取数据后,数据发生了变更,此更新数据所修改的数据基础已不正确,产生了数据冲突,则拒绝更新,从而避免了在多个计算节点902同时更新数据时,产生的数据不一致的问题。
一致性校验装置906主要是用于确保大内存数据库905与上游系统数据源的最终一致性,按一定周期,如每季度接收上游下发的存量数据批量文件,并读取持久化数据库904中保存的存量数据,根据主键字段进行逐条比对,两者进行存量比对,将不一致的数据以上游存量数据为准更新回持久化数据库904中,再更新至大内存数据库905中。
图10示意性示出了根据本公开实施例的采集节点的框图。
图10为采集节点901的结构示意图,包括数据接收单元1001、结构解析单元1002、数据下发单元1003。
数据接收单元1001的功能为,接收上游下发的流式增量实时数据,该数据格式需遵循与上游约定的数据格式要求,格式应包含有数据总长度、数据种类、数据内容等。首先获取每笔实时数据的数据总长度,然后从持续不断的数据流中截取出来此长度的数据即为一笔实时数据,再获取每笔的数据种类,将数据种类与数据内容推送至结构解析单元1002。
结构解析单元1002的功能为,获取数据内容及其数据种类信息后,根据数据种类查找到按约定格式预先设定的配置文件,配置文件中需配置该类数据每个字段的长度、译码方式等信息。根据数据种类,对数据内容中的每个字段进行解析译码后,再推送给数据下发单元1003。
数据下发单元1003的功能为,获取解析译码完毕的数据后,将其进行序列化,再根据数据种类查找需处理此类数据的计算节点902,使用轮询发送的策略实现负载均衡,通过TCP方式向计算节点902发送序列化后的数据。
图11示意性示出了根据本公开实施例的计算节点的框图。
图11为计算节点902的逻辑示意图,由于计算节点支持的业务场景较复杂,如关联数据等,本发明仅针对上游数据实时生效场景下,包括有效性评估单元1101、策略生成单元1102、策略执行单元1103。
有效性评估单元1101的功能为,获取待更新数据的主键字段,主键字段即为上游二维表中主键字段,如余额变动提醒协议主键字段为协议编号,根据主键字段从大内存数据库905中获取该条记录已生效的数据,首先判断待更新数据中在上游系统中产生的增量实时数据的数据更新时间戳,与已生效的数据的数据更新时间戳进行比对,若已生效的数据的数据更新时间戳较新,则代表大内存数据库905中为最新数据,无需更新;若增量实时数据的数据更新时间戳为较新,则代表此条记录是最新的数据,然后将增量实时数据(新)的数据内容和已生效的数据(旧)的数据内容进行比对,若新旧数据的数据内容除数据更新时间戳不同之外,其他数据内容完全保持一致,则说明该条数据已经生效,无需再进行更新,若数据内容存在不一致,则将新旧数据不一致的数据内容作为待更新的有效数据,推送至策略生成单元1102进行生成事务操作策略。
策略生成单元1102的功能为,在接收到有效性评估单元1101推送过来的待更新的有效数据之后,首先判断待更新的有效数据需要进行的事务操作,是更新操作?还是删除操作?
如果需要进行的是更新操作,则先将增量实时数据(新)的数据内容中的每个字段和已生效的数据(旧)的数据内容中的每个字段进行比对,判断是否是业务条件字段发生了变动。业务条件字段,即提供各业务场景进行查询的条件字段,仍以余额变动为例,对于余额变动提醒协议信息来说,在余额变动提醒短信发送业务场景中,需使用卡号查询协议信息,则卡号即为业务条件字段。如果业务条件字段发生修改,则需先新增该业务条件字段与主键字段的关联关系,同时删除旧数据中的业务条件字段与主键的关联关系,再将剩余字段内容,即非业务条件字段与主机字段的其余字段更新至主键对应的主数据。所以,在处理余额变动提醒短信发送时,即可通过二次查询提交方式,通过卡号找到主键,再通过主键查到其他协议表中维护的所需信息,例如客户手机号等。此二次查询方法,兼顾了数据存储容量(数据量最大的表即为与上游表贴源的主数据,其本身只维护一份)和通用性(如某一业务需用卡号查询,其他业务需用账号查询,则只用再维护一份关联关系数据,并灵活复用主数据中字段信息),较好地完成二维表结构向键值对的转换。
如果此条件记录需要进行删除,则需删除业务条件字段与主数据之间的关联关系,再删除主数据。最后更新或删除操作策略,传送至策略执行单元1103。
策略执行单元1103的功能为,向大内存数据库905提交策略生成单元1102生成的更新或删除操作,如果大内存数据库905因数据更新产生冲突拒绝执行该操作,则将回到有效性评估单元1101开始重新评估有效性。
图12示意性示出了根据本公开实施例的一致性校验装置的框图。
图12为一致性校验装置906的结构示意图,包括一致性比对单元1201、一致性修复单元1202。
一致性比对单元1201的功能为,接收上游下传的存量数据与本地持久化数据库904中维护的存量数据,根据主键字段进行逐条比对。
如果本地持久化数据库904的存量数据中存在,而上游下传的存量数据中不存在的,则标记此条记录需进行删除。
如果上游下传的存量数据中存在,但本地持久化数据库4的存量数据中不存在,或者上游下传的存量数据的数据内容和本地持久化数据库4的存量数据的数据内容不一致,则标记此条记录需进行更新。将比对出的不一致的数据,发送至一致性修复单元1202。
一致性修复单元1202的功能为,接收一致性比对单元1201发送的比对出的不一致的数据,并将比对出的不一致的数据,更新至大内存数据库905中,更新处理逻辑同计算节点902的数据生效逻辑,并将持久化数据库4中维护的存量数据直接更新为上游下传的存量批量数据。
更进一步的,本发明装置为进一步提升系统的灾备能力,提升业务的持续性水平,提出了一种“双活”方案,在发生故障或灾难时能够进行业务无中断的自动切换。
图13示意性示出了根据本公开实施例的“双活”方案的部署示意图。
图13为本发明“双活”方案的部署示意图,本发明将图9所述的系统部署于双园区之中,F5设备将同时连接两边园区的采集节点,将上游联机数据负载均衡至两边园区分别处理。为了保证双园区之间数据的完整性与一致性,同时提高跨园区之间由于网络分裂产生的通讯异常,从而影响两边园区互相通信的风险抵抗能力,除上述本公开图9所述各组成部分以外,新增了日志归档库1307和异步复制装置1308。
日志归档库1307的功能为,异步接收计算节点902异步下发的联机数据,将每一段时间内的联机数据,持久化为一个文本文件在本地磁盘中进行归集,可以使用HDFS等分布式文件系统产品作为日志归档库1307。
具体地,计算节点902在接收到的流式增量实时数据后,将联机数据异步向日志归档库7中写入一份,日志归档库1307将收集所有接收到的联机数据,并进行持久化保存。在处理完流式增量实时数据后,将流式增量实时数据更新入本地大内存数据库905生效后,同步向对方园区的大内存数据库905中也放入一份,以保证数据在两边园区同时实时生效,且两边园区存量数据保持一致。上述计算节点902在往对方园区大内存数据库905中更新过程中,如果出现网络等原因造成的更新失败,将会及时放弃此次更新,避免处理堵塞,保证后续业务能够正常快速处理。
为防止双园区网络之间出现类似网络分裂等情况,导致实时更新对方园区时失败,“双活”方案设计了异步复制装置1308对这类未能及时更新实时数据的情况进行补足,该异步复制装置1308定时从本园区日志归档库1307中获取一定周期内已完成归档的持久化文件,并对持久化文件中的每条记录,向对方园区的大内存数据库905中进行异步更新,更新方式同计算节点902。需要说明的是,在计算节点902实时处理正常的情况下,即本园区接受的实时数据应已在对方园区的大内存数据库905中生效,此跨园区异步重做的步骤不应产生事务操作。
图14示意性示出了根据本公开实施例的“双活”方案的数据生效流程图。
图14为“双活”方案的数据生效流程图,需要说明“双活”的方案中每个园区的更新处理流程保持不变,故如下仅针对原流程变化部分进行说明。
步骤1401:系统统筹管理两个园区采集节点,并根据各节点负载情况,将上游下发的流式增量数据均匀的发送至的各个节点。
步骤1402:将收到的流式增量实时数据进行更新本地大内存数据库,更新方法同原流程中步骤302-步骤305,区别于原流程图中步骤302至步骤305中,在“双活”方案中,不仅向本园区大内存数据库进行更新,同时向对方园区的大内存数据库中进行更新。
步骤1403:异步发送至本园区日志归档库1307,这部分数据在日志归档库1307中按照时间划分为一个文本文件进行持久化存储。
步骤1404:“双活”方案中除了原来的日频度增量、固定频度存量等方式时候弥补方式,增加了双园区在短时间隔内向对面园区弥补数据的机制,以确保双园区数据在出现异常情况时能在最短时间内恢复一致,即系统定期(如每分钟)从A园区或B园区日志归档库中抽取最新的数据文件,向对方园区的大内存数据库中进行更新。
图15示意性示出了根据本公开实施例的适于实现上文描述的方法的计算机系统的方框图。图15示出的计算机系统仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图15所示,根据本公开实施例的计算机系统1500包括处理器1501,其可以根据存储在只读存储器(ROM)1502中的程序或者从存储部分1508加载到随机访问存储器(RAM)1503中的程序而执行各种适当的动作和处理。处理器1501例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器1501还可以包括用于缓存用途的板载存储器。处理器1501可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 1503中,存储有系统1500操作所需的各种程序和数据。处理器1501、ROM1502以及RAM 1503通过总线1504彼此相连。处理器1501通过执行ROM 1502和/或RAM 1503中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM 1502和RAM 1503以外的一个或多个存储器中。处理器1501也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,系统1500还可以包括输入/输出(I/O)接口1505,输入/输出(I/O)接口1505也连接至总线1504。系统1500还可以包括连接至I/O接口1505的以下部件中的一项或多项:包括键盘、鼠标等的输入部分1506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1507;包括硬盘等的存储部分1508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1509。通信部分1509经由诸如因特网的网络执行通信处理。驱动器1510也根据需要连接至I/O接口1505。可拆卸介质1511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1510上,以便于从其上读出的计算机程序根据需要被安装入存储部分1508。
根据本公开的实施例,根据本公开实施例的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1509从网络上被下载和安装,和/或从可拆卸介质1511被安装。在该计算机程序被处理器1501执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 1502和/或RAM 1503和/或ROM 1502和RAM 1503以外的一个或多个存储器。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。

Claims (18)

1.一种用于数据库的数据处理方法,包括:
针对接收到的由上游系统下发的流式增量实时数据,执行解析操作以获得第一待处理数据,所述第一待处理数据包括指定主键字段;
从内存数据库中获取第一已处理数据,其中,所述第一已处理数据包括所述指定主键字段;
通过比对所述第一待处理数据与所述第一已处理数据,确定是否存在第一有效待处理数据;
在确定存在所述第一有效待处理数据的情况下,基于所述第一有效待处理数据,确定第一事务操作;以及
执行所述第一事务操作,以获得第一更新内存数据库;
所述执行所述第一事务操作,以获得第一更新内存数据库包括:
获取所述第一有效待处理数据的数据内容;
检测所述数据内容中是否包含有第一版本号;
在所述第一有效待处理数据中包含有所述第一版本号的情况下,从所述内存数据库中获取所述第一已处理数据的第二版本号;以及
在所述第一版本号和所述第二版本号一致的情况下,执行所述第一事务操作,以获得第一更新内存数据库;
所述方法还包括:
针对接收到的所述上游系统下发的批量增量数据,执行解析操作以获得第二待处理数据,所述第二待处理数据包括所述指定主键字段;
从所述内存数据库中获取第二已处理数据,所述第二已处理数据包括所述指定主键字段;
通过比对所述第二待处理数据与所述第二已处理数据,确定是否存在第二有效待处理数据;
在确定存在所述第二有效待处理数据的情况下,基于所述第二有效待处理数据,确定第二事务操作;以及
执行所述第二事务操作,以获得第二更新内存数据库;
所述执行所述第二事务操作,以获得第二更新内存数据库包括:
检测所述第一已处理数据是否与所述第二已处理数据一致;以及
在所述第一已处理数据与所述第二已处理数据不一致的情况下,执行所述第二事务操作,以获得第二更新内存数据库。
2.根据权利要求1所述的方法,其中,所述执行所述第一事务操作,以获得第一更新内存数据库还包括:
在所述第一有效待处理数据中未包含有所述第一版本号的情况下,执行所述第一事务操作,以获得第一更新内存数据库。
3.根据权利要求1所述的方法,其中,所述通过比对所述第一待处理数据与所述第一已处理数据,确定是否存在第一有效待处理数据包括:
获取与所述第一待处理数据对应的第一时间戳;
获取与所述第一已处理数据对应的第二时间戳;
比对所述第一时间戳和所述第二时间戳,以获得第一比对结果;以及
根据所述第一比对结果,确定是否存在第一有效待处理数据。
4.根据权利要求3所述的方法,其中,所述根据所述第一比对结果,确定是否存在第一有效待处理数据包括:
在所述第一比对结果指示所述第一时间戳晚于所述第二时间戳的情况下,检测所述第一待处理数据是否与所述第一已处理数据一致;以及
在所述第一待处理数据与所述第一已处理数据不一致的情况下,确定存在所述第一有效待处理数据。
5.根据权利要求4所述的方法,其中,所述根据所述第一比对结果,确定是否存在第一有效待处理数据还包括:
在所述第一待处理数据与所述第一已处理数据一致的情况下,确定不存在所述第一有效待处理数据。
6.根据权利要求4所述的方法,其中,所述根据所述第一比对结果,确定是否存在第一有效待处理数据还包括:
在所述第一比对结果指示所述第一时间戳的时刻早于所述第二时间戳的时刻的情况下,确定不存在所述第一有效待处理数据。
7.根据权利要求1所述的方法,其中,所述第一待处理数据包括多个第一字段,所述第一已处理数据包含多个第二字段,且所述第一字段与所述第二字段一一对应,所述执行所述第一事务操作,以获得第一更新内存数据库包括:
在所述第一事务操作策略为更新操作策略的情况下,获取所述多个第一字段和所述多个第二字段;
比对所述多个第一字段和所述多个第二字段,以确定所述多个第一字段中是否存在与所述多个第二字段不一致的第一字段;
若存在与所述多个第二字段不一致的第一字段,则检测所述第一字段是否符合预设条件字段;以及
在所述第一字段符合所述预设条件字段的情况下,基于所述第一字段,执行所述更新操作策略,以获得第一更新内存数据库。
8.根据权利要求7所述的方法,其中,所述基于所述第一字段,执行所述更新操作策略,以获得第一更新内存数据库包括:
新增所述第一字段与所述主键字段之间的第一关联关系;
删除所述第二字段与所述主键字段之间的第二关联关系;
基于所述第一待处理数据中除所述第一字段之外的其他字段,更新与所述主键字段对应的主键值;以及
基于所述主键值,更新所述内存数据库,以获得第一更新内存数据库。
9.根据权利要求1所述的方法,其中,所述流式增量实时数据具有预设数据结构,所述预设数据结构包括数据总长度、数据种类和数据内容,所述针对接收到的上游系统下发的流式增量实时数据,执行解析操作以获得第一待处理数据包括:
针对接收到的上游系统下发的流式增量实时数据,按照所述数据总长度截取,以获得实时数据的数据内容;
基于所述数据种类,查找与所述实时数据匹配的预设配置文件,其中,所述配置文件包括字段长度和解析方式;
基于所述字段长度和所述数据内容,确定多个待解析字段;
对所述多个待解析字段中的各个待解析字段执行解析操作,以获得多个已解析字段;以及
对所述多个已解析字段执行序列化操作,以获得第一待处理数据。
10.根据权利要求1所述的方法,其中,所述方法还包括:
接收由所述上游系统下发的第一存量数据,所述第一待处理数据包括指定主键字段;
获取本地持久化数据库中的第二存量数据,所述第一待处理数据包括指定主键字段;
比对所述第一存量数据和所述第二存量数据,以获得第二比对结果;以及
根据所述第二比对结果,更新所述本地持久化数据库和所述内存数据库。
11.根据权利要求10所述的方法,其中,所述根据所述第二比对结果,更新所述本地持久化数据库和所述内存数据库包括:
在所述第二比对结果指示所述第一存量数据中存在与所述主键字段对应的第三已处理数据,所述第二存量数据中不存在所述第三已处理数据的情况下,基于所述第三已处理数据,更新所述本地持久化数据库和所述内存数据库。
12.根据权利要求10所述的方法,其中,所述根据所述第二比对结果,更新所述本地持久化数据库和所述内存数据库还包括:
在所述第二比对结果指示所述第一存量数据中存在与所述主键字段对应的第三已处理数据,所述第二存量数据中存在所述第三已处理数据,且所述第三已处理数据与所述第一已处理数据不一致的情况下,基于所述第三已处理数据,更新所述本地持久化数据库和所述内存数据库。
13.根据权利要求10所述的方法,其中,所述根据所述第二比对结果,更新所述本地持久化数据库和所述内存数据库还包括:
在所述第二比对结果指示所述第一存量数据中不存在与所述主键字段对应的第三已处理数据,所述第二存量数据中存在所述第三已处理数据的情况下,删除所述第三已处理数据,以获得更新后的本地持久化数据库;以及
基于所述更新后的本地持久化数据库,更新所述内存数据库。
14.根据权利要求1所述的方法,其中,所述数据库包括第一数据库和第二数据库,所述第一数据库部署于第一区域,所述第二数据库部署于第二区域,且所述第一区域不同于所述第二区域;所述执行所述第一事务操作,以获得第一更新内存数据库包括:
针对所述第一数据库,执行所述第一事务操作,以获得所述第一数据库的第一更新内存数据库;以及
基于所述第一数据库的第一更新内存数据库,更新所述第二数据库的内存数据库。
15.一种用于数据库的数据处理系统,包括:
第一解析模块,被配置为针对接收到的上游系统下发的流式增量实时数据,执行解析操作以获得第一待处理数据,所述第一待处理数据包括指定主键字段;
第一获取模块,被配置为从内存数据库中获取第一已处理数据,其中,所述第一已处理数据包括所述指定主键字段;
第一比对模块,被配置为通过比对所述第一待处理数据与所述第一已处理数据,确定是否存在第一有效待处理数据;
第一确定模块,被配置为在确定存在所述第一有效待处理数据的情况下,基于所述第一有效待处理数据,确定第一事务操作;以及
第一执行模块,被配置为执行所述第一事务操作,以获得第一更新内存数据库;
第一执行模块包括:第一获取子模块,被配置为获取第一有效待处理数据的数据内容,第一检测子模块,被配置为检测数据内容中是否包含有第一版本号,第二获取子模块,被配置为在第一有效待处理数据中包含有第一版本号的情况下,从内存数据库中获取第一已处理数据的第二版本号,以及第一执行子模块,被配置为在第一版本号和第二版本号一致的情况下,执行第一事务操作,以获得第一更新内存数据库;
数据处理系统还包括:
第二解析模块,被配置为针对接收到的所述上游系统下发的批量增量数据,执行解析操作以获得第二待处理数据,所述第二待处理数据包括所述指定主键字段;
第二获取模块,被配置为从所述内存数据库中获取第二已处理数据,所述第二已处理数据包括所述指定主键字段;
第二比对模块,被配置为通过比对所述第二待处理数据与所述第二已处理数据,确定是否存在第二有效待处理数据;
第二确定模块,被配置为在确定存在所述第二有效待处理数据的情况下,基于所述第二有效待处理数据,确定第二事务操作;以及
第二执行模块,被配置为执行所述第二事务操作,以获得第二更新内存数据库;
第二执行模块包括:
第二检测子模块,被配置为检测第一已处理数据是否与第二已处理数据一致;
第三执行子模块,被配置为在第一已处理数据与第二已处理数据不一致的情况下,执行第二事务操作,以获得第二更新内存数据库。
16.根据权利要求15所述的系统,其中,所述系统还包括:
接收模块,被配置为接收由所述上游系统下发的第一存量数据,所述第一待处理数据包括指定主键字段;
第三获取模块,被配置为获取本地持久化数据库中的第二存量数据,所述第一待处理数据包括指定主键字段;
第三比对模块,被配置为比对所述第一存量数据和所述第二存量数据,以获得第二比对结果;以及
更新模块,被配置为根据所述第二比对结果,更新所述本地持久化数据库和所述内存数据库。
17.一种电子设备,包括:
一个或多个处理器;以及
存储器,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至14中任一项所述的方法。
18.一种计算机可读存储介质,存储有计算机可执行指令,所述指令在被执行时用于实现权利要求1至14中任一项所述的方法。
CN201910805564.5A 2019-08-28 2019-08-28 数据处理方法及其系统、电子设备和介质 Active CN110515927B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910805564.5A CN110515927B (zh) 2019-08-28 2019-08-28 数据处理方法及其系统、电子设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910805564.5A CN110515927B (zh) 2019-08-28 2019-08-28 数据处理方法及其系统、电子设备和介质

Publications (2)

Publication Number Publication Date
CN110515927A CN110515927A (zh) 2019-11-29
CN110515927B true CN110515927B (zh) 2022-08-30

Family

ID=68628764

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910805564.5A Active CN110515927B (zh) 2019-08-28 2019-08-28 数据处理方法及其系统、电子设备和介质

Country Status (1)

Country Link
CN (1) CN110515927B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113076329A (zh) * 2020-01-03 2021-07-06 上海亲平信息科技股份有限公司 一种内存数据库
CN111614494B (zh) * 2020-05-08 2023-04-07 北京百度网讯科技有限公司 网络资源的仿真方法、装置、电子设备和计算机可读存储介质
CN111949725A (zh) * 2020-06-07 2020-11-17 中信银行股份有限公司 数据的查询方法、装置、电子设备及计算机可读存储介质
CN111813743A (zh) * 2020-06-30 2020-10-23 中国工商银行股份有限公司 批量文件关系链生成的方法及装置
CN112035441B (zh) * 2020-09-01 2023-08-18 中国银行股份有限公司 账户信息批量处理方法及装置
CN115190036B (zh) * 2022-06-02 2024-01-16 国能数智科技开发(北京)有限公司 一种实时数据汇聚的一致性校验方法及系统

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101051324A (zh) * 2007-05-23 2007-10-10 中兴通讯股份有限公司 一种内存数据库的事务管理方法
US9576013B2 (en) * 2014-04-03 2017-02-21 Sap Se Optimizing update operations in in-memory database systems
CN107665255B (zh) * 2017-09-30 2020-12-15 杭州时趣信息技术有限公司 键值数据库数据变更的方法、装置、设备及存储介质
CN108038196A (zh) * 2017-12-12 2018-05-15 北京锐安科技有限公司 一种数据处理系统和方法
CN109542892B (zh) * 2018-10-19 2020-10-23 北京全路通信信号研究设计院集团有限公司 一种实时数据库的关系化实现方法、装置及系统
CN109522315B (zh) * 2018-10-26 2021-10-22 苏宁易购集团股份有限公司 一种数据库处理方法及系统

Also Published As

Publication number Publication date
CN110515927A (zh) 2019-11-29

Similar Documents

Publication Publication Date Title
CN110515927B (zh) 数据处理方法及其系统、电子设备和介质
US10554771B2 (en) Parallelized replay of captured database workload
US9680893B2 (en) Method and system for event state management in stream processing
US8719232B2 (en) Systems and methods for data integrity checking
US10621212B2 (en) Language tag management on international data storage
US8904225B2 (en) Stream data processing failure recovery method and device
US20130346366A1 (en) Front end and backend replicated storage
CN103514223A (zh) 一种数据仓库数据同步方法和系统
US20190370368A1 (en) Data consistency verification method and system minimizing load of original database
US20130086418A1 (en) Data processing failure recovery method, system and program
US20120278429A1 (en) Cluster system, synchronization controlling method, server, and synchronization controlling program
US11954123B2 (en) Data processing method and device for data integration, computing device and medium
CN114077518A (zh) 数据快照方法、装置、设备及存储介质
Gupta et al. High-availability at massive scale: Building google’s data infrastructure for ads
US20150169379A1 (en) Information processing method, information processing device, and recording medium
CN116662325B (zh) 一种数据处理方法及系统
US9619506B2 (en) Method and system to avoid deadlocks during a log recovery
US9015116B2 (en) Consistent replication of transactional updates
CN105956046A (zh) 一种字典的更新方法、系统和服务器
CN115269352A (zh) 数据库性能确定方法及装置、电子设备和存储介质
CN116107801A (zh) 交易处理方法及相关产品
CN114490570A (zh) 生产数据同步方法、装置、数据同步系统及服务器
CN117453825A (zh) 数据同步方法、装置、介质和存储设备
CN111459931A (zh) 数据查重方法和数据查重装置
CN111522688A (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