CN112119387A - 流式数据的多高速缓存处理 - Google Patents

流式数据的多高速缓存处理 Download PDF

Info

Publication number
CN112119387A
CN112119387A CN201980032923.6A CN201980032923A CN112119387A CN 112119387 A CN112119387 A CN 112119387A CN 201980032923 A CN201980032923 A CN 201980032923A CN 112119387 A CN112119387 A CN 112119387A
Authority
CN
China
Prior art keywords
cache region
time window
cache
data
database repository
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.)
Granted
Application number
CN201980032923.6A
Other languages
English (en)
Other versions
CN112119387B (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN112119387A publication Critical patent/CN112119387A/zh
Application granted granted Critical
Publication of CN112119387B publication Critical patent/CN112119387B/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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • 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/24552Database cache management
    • 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/24568Data stream processing; Continuous queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/16General purpose computing application
    • G06F2212/163Server or database system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/282Partitioned cache

Landscapes

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

Abstract

一种计算机在数据处理系统中的高速缓存存储器上提供第一高速缓存区域和第二高速缓存区域,该数据处理系统包括数据库储存库和用于该数据库储存库的高速缓存存储器。计算机在第一时间窗口中接收流式数据,并将流式数据写入第一高速缓存区域。计算机在第一时间窗口中禁止在第一高速缓存区域与数据库储存库之间执行同步。计算机在第一时间窗口的至少一部分中使能数据库储存库与第二高速缓存区域之间的同步。计算机在第一时间窗口过去时使能第一高速缓存区域与数据库储存库之间的同步。

Description

流式数据的多高速缓存处理
技术领域
本发明涉及流式计算,并且更具体地,涉及处理流式数据。
背景技术
流式计算是一种计算范例,其读取从潜在的数千个数据源(例如软件或硬件传感器)以流形式连续获得的数据,然后计算流式数据以提供计算的分析结果。
流式数据可以是如下的各种数据:例如,金融交易数据;由任何传感器生成的日志文件数据,所述传感器诸如物联网(IoT)设备、电能表、气表、水表、游戏中玩家活动、移动或web应用、RFID标签、包括通勤通行证或信用卡的IC卡、或从微博获得的文本信息。流式数据可以具有但不限于小的尺寸(例如,千字节的量级)。
通常,流式数据需要在逐个记录的基础上或在滑动时间窗口上被顺序地并且进一步递增地处理,并且可以被用于各种各样的分析,诸如相关、聚合、过滤和采样。
流式数据的处理在连续产生新的动态数据的情况下是有益的。因此,流式数据的处理需要实时摄取流式数据并使用高速缓存存储器来更新数据库储存库。
存在一些已知的用于处理流式数据的技术,每个都具有缺点。一种传统的解决方案使用数据库高速缓存和存储器内数据库作为数据库高速缓存。然而,这种传统的解决方案具有实时性能差的缺点。这种传统的解决方案提供了一种应用,其可以从数据库高速缓存和周期性地与数据库高速缓存同步数据的数据库中读取/写入。在与数据库同步期间锁定数据库高速缓存,因此在同步期间停止从应用的访问(读和/或写)。因此,根据上述传统解决方案不能实现实时性能。该传统解决方案在此将被称为TS1。
另一种已知技术使用基于流的数据库高速缓存。然而,这种解决方案具有新输入数据不一致的缺点。该技术涉及可以写入到数据库的应用,数据库周期性地与数据库高速缓存同步,并且应用可以从数据库高速缓存读取数据。输入数据首先被直接写入数据库,然后在数据库和数据库高速缓存之间进行同步。因此,如果应用试图在同步完成之前读取新输入的数据,则它可能发现没有数据。换句话说,应用仅在同步完成之后才能读取新输入的数据。因此,根据上述解决方案不能实现新输入数据的一致性。
第三种已知技术涉及多层高速缓存系统,这意味着从主数据库检索的数据将首先被高速缓存到全局Redis数据存储(慢全局高速缓存)中,并且还被高速缓存到局部APC高速缓存(快本地高速缓存)中。然而,多层高速缓存系统需要额外的时间来读取新输入的数据。在该技术中,通过将输入数据写入全局高速缓存和数据库来执行写入操作。首先通过从本地高速缓存读取数据来执行读取操作,并且如果在本地高速缓存上没有找到数据,则首先将数据从数据库拷贝到全局高速缓存,然后随后从全局高速缓存拷贝到本地高速缓存以从本地高速缓存读取数据。因此,可以实现新输入数据的一致性,但是由于将新输入数据从数据库拷贝到全局高速缓存然后从全局高速缓存复制到本地高速缓存,或者将新输入数据从全局高速缓存拷贝到本地高速缓存,所以需要额外的时间来读取新输入数据。因此,根据多层高速缓存系统不能实现实时性能。
因此,与所有已知技术相比,可能存在先前未满足的需要来满足新输入数据的一致性和处理流式数据中的实时性能。
因此,在本领域中需要解决上述问题。
发明内容
本发明的各方面涉及用于处理流式数据的方法、数据处理系统和计算机程序产品。
从第一方面来看,本发明提供了一种用于处理流式数据的计算机实现的方法,包括:在数据处理系统中的高速缓存存储器上提供第一高速缓存区域和第二高速缓存区域,所述数据处理系统包括数据库储存库和用于所述数据库储存库的高速缓存存储器;在第一时间窗口中接收流式数据并且将流式数据写入在第一高速缓存区域上;在第一时间窗口中禁止在第一高速缓存区域与数据库储存库之间执行同步;在所述第一时间窗口的至少一部分中,使能所述数据库储存库与所述第二高速缓存区域之间的同步;以及在第一时间窗口过去时,使能第一高速缓存区域与数据库储存库之间的同步。
从另一方面来看,本发明提供了一种数据处理系统,包括:一个或多个处理器;存储程序的存储器,当在处理器上执行该程序时,该程序执行用于处理流式数据的操作;数据库储存库;以及用于数据库储存库的高速缓存存储器,其中高速缓存存储器包括:第一高速缓存区域,用于在第一时间窗口内,执行接收流式数据和将流式数据写入到其上的角色,而不进行第一高速缓存区域与数据库储存库之间的同步;以及第二高速缓存区域,用于在第一时间窗口的至少一部分中执行与数据库储存库同步的角色;并且其中,所述数据处理系统在所述第一时间窗口过去时执行所述第一高速缓存区域与所述数据库储存库之间的同步。
从另一方面来看,本发明提供了一种用于处理流式数据的计算机程序产品,该计算机程序产品包括计算机可读存储介质,其可由处理电路读取并且存储由处理电路执行的指令,以用于执行本发明的步骤的方法。
从另一方面来看,本发明提供了一种存储在计算机可读介质上并且可加载到数字计算机的内部存储器中的计算机程序,包括软件代码部分,当所述程序在计算机上运行时,用于执行本发明的步骤。
一种计算机在数据处理系统中的高速缓存存储器上提供第一高速缓存区域和第二高速缓存区域,该数据处理系统包括数据库储存库和用于该数据库储存库的高速缓存存储器。计算机在第一时间窗口中接收流式数据,并将流式数据写入第一高速缓存区域。计算机在第一时间窗口中禁止在第一高速缓存区域与数据库储存库之间执行同步。计算机在第一时间窗口的至少一部分中使能数据库储存库与第二高速缓存区域之间的同步。计算机在第一时间窗口过去时使能第一高速缓存区域与数据库储存库之间的同步。
上述发明内容并非旨在描述本公开的每个所示实施例或每种实施方式。
附图说明
现在将参照优选实施例仅通过示例的方式描述本发明,如以下附图所示:
图1是描绘根据本公开的实施例的用作数据处理系统的计算机系统的框图。
图2A和2B是描绘根据本发明的实施例的处理流式数据的方法的框图。
图3A和3B是描述根据本公开的实施例的处理流式数据的方法的框图。
图4是描绘根据本公开的实施例的处理流式数据的过程的流程图。
图5A和5B是描绘根据本公开的实施例的处理流式数据的过程的流程图。
图6描绘了根据本公开的实施例获得的结果的示例。
图7是描述与图4中描述的过程相关的计算机系统硬件的整体功能框图。
虽然本发明可以有各种修改和替换形式,但是其细节已经在附图中通过示例的方式示出并且将被详细描述。然而,应当理解,其目的不是将本发明限制于所描述的特定实施例。相反,本发明覆盖落入本发明的精神和范围内的所有修改、等效和替换。
具体实施方式
已经出于说明的目的给出了本发明的各种实施例的描述,但是其不旨在是穷尽的或限于所公开的实施例。在不背离所描述的实施例的范围和精神的情况下,许多修改和变化对于本领域的普通技术人员将是显而易见的。选择本文所使用的术语来解释实施例的原理、实际应用或对市场上存在的技术改进,或使本领域的其他普通技术人员能够理解本文所公开的实施例。
如本领域技术人员将理解的,本公开的实施例可以是方法、计算机系统或计算机程序产品。因此,本公开的实施例可以采取完全基于硬件的实施例、完全基于软件的实施例的形式,包括例如固件、驻留软件和微代码等,或者可以采取组合基于软件的方面和基于硬件的方面的实施例的形式,其可以在本文中被统称为“电路”、“模块”或“系统”。“
如本文所用,表述“一/一个”应理解为“至少一个”。表述“包括/包含一/一个”应当理解为“包括/包含至少一个”。表述“包括/包含“应理解为至少“包括/包含”。表述“/”应当理解为“和/或”。
为了更清楚地定义本文所用的术语,下文提供了术语的示例性定义,这应当如本领域技术人员或本公开所属技术领域所知的那样进行广义解释。
如这里所使用的,术语”流式数据“可以指连续生成的任何数据。流式数据可以从相同的源或不同的源获得,例如但不限于金融交易;任何传感器,诸如物联网(IoT)设备、电能表、气表、水表、游戏中玩家活动、移动或web应用、RFID标签、包括通勤通行证和信用卡的IC卡、或微博。
如在此所使用的,术语“数据库储存库”可以指用于存储流式数据的任何存储装置。数据库储存库可以是一个或多个数据库。数据库储存库可以存储包括元数据的任何数据。
如本文所使用的,术语“高速缓存存储器”可以指能够临时存储流式数据并且用作数据库储存库的高速缓存的存储器。可以在数据库储存库和高速缓存存储器之间同步流式数据。
如本文所使用的,术语“应用”可以指可以从高速缓存存储器读取数据和/或在高速缓存存储器上写入数据的任何应用。在本公开的实施例中使用的应用可以是时间窗口最初被设置到的应用。时间窗口最初被设置到的应用可以处理例如但不限于以下数据:诸如周期性爬行数据的爬行数据、批处理数据、或诸如电能表数据、气表数据或水表数据的传感器数据。在本公开的一些实施例中使用的应用可以是其中数据记录彼此没有依赖性的应用。
现在参考图1,其描绘根据本发明实施例用作数据处理系统的计算机系统的框图。
计算机系统(101)可以是例如但不限于台式机、膝上型计算机、笔记本计算机或服务器计算机。服务器计算机可以是例如但不限于工作站、机架安装型服务器、刀片型服务器、大型机服务器或云服务器,并且可以运行例如用于创建和运行一个或多个虚拟机的管理程序。计算机系统(101)可以包括一个或多个CPU(102)和连接到总线(104)的主存储器(103)。CPU(102)可以基于例如但不限于32位或64位结构。CPU(102)可以是例如但不限于国际商业机器公司的
Figure BDA0002781299620000041
系列;Intel公司的Core iTM系列、Core 2TM系列、AtomTM系列、XeonTM系列、
Figure BDA0002781299620000042
系列或
Figure BDA0002781299620000051
系列;或先进微型器件公司(Advanced MicroDevices,Inc.)的PhenomTM系列、AthlonTM系列、TurionTM系列或SempronTM系列。IBM和Power是国际商业机器公司的商标,在全世界的许多管辖区注册。Intel、Core I、Core 2、Atom、Xeon、Pentium和Celeron是Intel公司或其子公司在美国和其他国家的商标或注册商标。“Phenom”、“Athlon“、”Turinon“和”Sempron“是先进微型器件公司在美国、其它国家或二者的商标。
诸如液晶显示器(LCD)的显示器(106)可以经由显示控制器(105)连接到总线(104)。为了管理计算机,显示器(106)可以用于使用适当的图形接口显示关于通过通信线路连接到网络的计算机的信息和关于在计算机上运行的软件的信息。显示器可以具有触摸屏或非触摸屏。显示器可以是例如但不限于LCD、等离子体显示面板(PDP)、有机电致发光(OEL)或投影型显示器。诸如硬盘或固态驱动器(SSD)的盘(108)和诸如CD、DVD或BD(蓝光盘)驱动器的驱动器(109)可以经由SATA或IDE控制器(107)连接到总线(104)。此外,键盘(111)和鼠标(112)可以经由键盘-鼠标控制器(110)或USB总线(未示出)连接到总线(104)。
操作系统、提供
Figure BDA0002781299620000052
Mac
Figure BDA0002781299620000053
Figure BDA0002781299620000054
处理环境、
Figure BDA0002781299620000055
应用、
Figure BDA0002781299620000056
虚拟机(VM)和
Figure BDA0002781299620000057
即时(JIT)编译器(例如J2 EE)的程序、其它程序和任何数据可存储在盘(108)中以可加载到主存储器。Microsoft和Windows是微软公司在美国、其他国家或二者的商标。“UNIX”是开放团体在美国、其他国家或二者的注册商标;”Mac OS“是苹果公司在美国、其他国家或二者的注册商标;“Linux”是Linus Torvalds在美国、其他国家或二者的注册商标;“Java”和“J2EE”是Oracle America公司在美国、其它国家或二者的注册商标。
驱动器(109)可用于将可从CD-ROM、DVD-ROM或BD读取的一个或多个程序(例如本公开的实施例的计算机程序)安装到盘(108),或者将可从CD-ROM、DVD-ROM或BD读取的任何数据适当地加载到主存储器(103)或盘(108)。
通信接口(114)可以基于例如但不限于以太网协议。通信接口(114)可以经由通信控制器(113)连接到总线(104),可以将计算机系统(101)物理地连接到通信线路(115),并且可以向计算机系统(101)的操作系统的通信功能的TCP/IP通信协议提供网络接口层。在这种情况下,通信线路(115)可以是有线LAN环境或基于无线LAN连接标准的无线LAN环境,例如但不限于
Figure BDA0002781299620000058
802.11a/b/g/n(“IEEE”是电气和电子工程师协会公司在美国、其他国家或二者中的注册商标)。
图2A、2B、3A和3B各自说明描绘根据本发明的实施例的处理流式传输数据的方法的不同框图。
现在参考图2A和2B,图2A和2B描绘了一个实施例,其中高速缓存存储器具有一对第一高速缓存区域和第二高速缓存区域。
数据处理系统(201)可以对应于图1中描述的计算机系统(101),数据处理系统(201)可以具有一个或多个处理器(未示出);以及存储器(未示出),存储当在处理器上执行时执行根据本公开的实施例的操作的程序。此外,数据处理系统(201)可以具有高速缓存存储器(211)、与应用的接口(221)和数据库储存库(291),以及可选地具有应用(241)。
高速缓存存储器(211)可以用于在将流式数据存储到数据库储存库(291)中之前临时存储流式数据,并且可以通过接口(221)从应用(241)访问。
接口(221)可以用于接收在高速缓存存储器(211)上写入数据的指令、从高速缓存存储器(211)读取数据的指令、或其组合。
应用(241)能够访问高速缓存存储器(211)以便实时处理输入的流式数据。应用(241)可以向数据处理系统(201)发送在高速缓存存储器(211)上写入数据的指令、从高速缓存存储器(211)读取数据的指令或其组合。应用(241)可以存储在配备于数据处理系统(201)中的存储器中;或者可以存储在与数据处理系统(201)不同的系统中,并通过接口(221)访问高速缓存存储器(211)。
数据库储存库(291)可以用于存储流式数据。
现在参考图2A,数据处理系统(201)首先在高速缓存存储器(211)上提供第一高速缓存区域(231)和第二高速缓存区域(232)。为了提供第一高速缓存区域(231)和第二高速缓存区域(232),数据处理系统(201)可以在高速缓存存储器(211)上指定用于第一高速缓存区域(231)的地址以及用于第二高速缓存区域(232)的地址。
第一高速缓存区域(231)和第二高速缓存区域(232)各自具有以下作用中的任一个:一种是在其高速缓存区域上写入在预定时间窗口中输入的流式数据,而不执行其高速缓存区域与数据库储存库之间的同步(291);另一种是在前述预定义时间窗口中在数据库储存库与第二高速缓存区域之间同步数据。在经过上述预定时间窗口时,第一高速缓存区域的角色与第二高速缓存区域的角色交换。在经过下一个时间窗口(第二、第三、第四等时间窗口)时重复进行该交换。
如图2A所示,第一高速缓存区域(231)首先具有将在预定时间窗口(此后也称为“第一时间窗口”)中输入的流式数据写入第一高速缓存区域(231)而不执行第一高速缓存区域(231)与数据库储存库(291)之间的同步的作用;并且第二高速缓存区域(232)首先具有在第一时间窗口中在数据库储存库(291)和第二高速缓存区域(232)之间同步数据的作用。
数据处理系统(201)接收在第一时间窗口中输入的流式数据。数据处理系统(201)在第一时间窗口中将流式数据写入第一高速缓存区域(231)上,而不执行第一高速缓存区域(231)与数据库储存库(291)之间的同步。因此,在第一时间窗口(如图2A中虚线和圈出的“X”所示)中不允许第一高速缓存区域(231)与数据库储存库(291)之间的同步。同时,在第一时间窗口的至少一部分中允许数据库储存库(291)和第二高速缓存区域(232)之间的同步。例如,允许同步直到数据库储存库(291)和第二高速缓存区域(232)之间的同步完成。
在一些实施例中,在第一时间窗口中,可以使用表锁定来锁定第一高速缓存区域(231),例如,直到在第一高速缓存区域(231)上写入流式数据的操作完成;并且可以使用表锁定来锁定第二高速缓存区域(232),例如直到第二高速缓存区域(232)与数据库储存库(291)之间的同步完成为止,以便禁止在第二高速缓存区域(232)上写入流式数据。使用表锁定对第一高速缓存区域(231)的锁定,可以通过锁定整个第一高速缓存区域(231)以防止从应用(241)对第一高速缓存区域(231)的访问来完成。类似地,使用表锁定对第二高速缓存区域(232)的锁定,可以通过锁定整个第二高速缓存区域(232)以防止从应用(241)对第二高速缓存区域(232)的访问来完成。
在一些实施例中,在第一时间窗口中,可以使用散列索引基础来锁定第一高速缓存区域(231),例如,直到在第一高速缓存区域(231)上写入流式数据的操作完成;并且可以使用表锁定来锁定第二高速缓存区域(232),例如直到第二高速缓存区域(232)与数据库储存库(291)之间的同步完成,以便禁止在第二高速缓存区域(232)上写入流式数据。使用散列索引基础对第一高速缓存区域(231)的锁定,可以通过使用散列索引基础为基础锁定第一高速缓存区域(231)以防止从应用(241)对第一高速缓存区域(231)的访问来完成。使用表锁定对第二高速缓存区域(232)的锁定,可以通过锁定整个第二高速缓存区域(232)以防止从应用(241)对第二高速缓存区域(232)的访问来完成。
在第一时间窗口中,应用(241)可以读取第二高速缓存区域(232)上的数据,但是由于针对第二高速缓存区域(232)进行的上述锁定而不允许在第二高速缓存区域(232)上写入数据(如图2A中虚线和圈出的“X”所示)。
现在参考图2B,所描绘的是其中第一时间窗口现在已经过去的相同环境。在第一时间窗口过去时,数据处理系统(201)将第一高速缓存区域的角色与第二高速缓存区域的角色交换。数据处理系统(201)在第一时间窗口过去时(如图2B中实线和无圈出的“X”所示)使能第一高速缓存区域(231)与数据库储存库(291)之间的同步。同时,数据处理系统(201)在第一时间窗口过去时禁止数据库储存库(291)和第二高速缓存区域(232)之间的同步(如图2B中虚线和圈出的“X”所示)。
在第一时间窗口过去之后,新的时间窗口(即第二时间窗口)开始。数据处理系统(201)在第二时间窗口中将新输入的流式数据写入第二高速缓存区域(232)上,而不执行数据库储存库(291)和第二高速缓存区域(232)之间的同步。因此,在第二时间窗口中不允许数据库储存库(291)和第二高速缓存区域(232)之间的同步。同时,在第二时间窗口的至少一部分中允许第一高速缓存区域(231)与数据库储存库(291)之间的同步。
在一些实施例中,在第二时间窗口中,可以使用表锁定来锁定第二高速缓存区域(232),例如,直到在第二高速缓存区域(232)上写入新输入的流式数据的操作完成;并且可以使用表锁定来锁定第一高速缓存区域(231),例如直到数据库储存库(291)与第一高速缓存区域(231)之间的同步完成为止,以便禁止在第一高速缓存区域(231)上写入流式数据。使用表锁定对第二高速缓存区域(232)的锁定,可以通过锁定整个第二高速缓存区域(232)以防止从应用(241)对第二高速缓存区域(232)的访问来完成。类似地,使用表锁定对第一高速缓存区域(231)的锁定,可以通过锁定整个第一高速缓存区域(231)以防止从应用(241)对第一高速缓存区域(231)的访问来完成。
在一些实施例中,在第二时间窗口中,可以使用散列索引基础来锁定第二高速缓存区域(232),例如,直到在第二高速缓存区域(232)上写入新输入的流式数据的操作完成;并且可以使用表锁定来锁定第一高速缓存区域(231),例如直到数据库储存库(291)与第一高速缓存区域(231)之间的同步完成,以便禁止在第一高速缓存区域(231)上写入新输入的流式数据。使用散列索引基础对第二高速缓存区域(232)的锁定,可以通过使用散列索引基础为基础锁定第二高速缓存区域(232)以防止从应用(241)对第二高速缓存区域(232)的访问来完成。使用表锁定对第一高速缓存区域(231)的锁定,可以通过锁定整个第一高速缓存区域(231)以防止从应用(241)对第一高速缓存区域(231)的访问来完成。
在第二时间窗口中,应用(241)可以读取第一高速缓存区域(231)上的数据,但是由于针对第一高速缓存区域(231)进行的上述锁定,不允许在第一高速缓存区域(231)上写入数据(如图2B中由虚线和圈出的“X”所指示的)。
现在返回参考图2A,在第二时间窗口过去时,数据处理系统(201)再次将第一高速缓存区域的角色与第二高速缓存区域的角色交换。因此,根据图2A中描述的框图,数据处理系统(201)在第三时间窗口中处理新输入的数据。
如上所述,在经过预定时间窗口时,数据处理系统(201)将第一高速缓存区域的角色与第二高速缓存区域的角色交换以处理流式数据。该交换可以使用图2A中所示的角色以奇数(例如,第一、第三、第五)时间窗口并且使用图2B中所示的角色以偶数(例如,第二、第四、第六)时间窗口无限地继续。
图2A和2B中描述的实施例使得能够实现新输入的流式数据的实时执行和一致性。
现在参考图3A和3B,示出了高速缓存存储器具有多对第一高速缓存区域和第二高速缓存区域的实施例。
数据处理系统(301)可以对应于图1中描述的计算机系统(101)。数据处理系统(301)可以具有一个或多个处理器(未示出);以及存储器(未示出),存储当在处理器上执行时执行根据本公开的实施例的操作的程序。此外,数据处理系统(301)可以具有高速缓存存储器(311)、与应用和数据库储存库(391)的多个接口(321、322和323),以及可选地多个应用(341、342和343)。
图3A和3B示出了三个接口(321、322和323)和三个应用(341、342和343)。然而,接口和应用的数量可以根据本公开的实施例的实现而变化。
此外,图3A和3B示出一个应用与一个接口相关联,作为一对应用和接口(341和321;342和322;以及343和323作为一对),且进一步示出一个接口与一对第一和第二高速缓存区域相关联。然而,一个应用可以与一个或多个接口相关联,反之亦然,并且一个接口可以与一对或多对第一和第二高速缓存区域相关联,反之亦然。
高速缓存存储器(311)对应于图2A和2B中描述的高速缓存存储器(211)。高速缓存存储器(311)包括以下三对第一高速缓存区域和第二高速缓存区域:第一对第一高速缓存区域-1(331)和第二高速缓存区域-1(332);第二对第一高速缓存区域-2(333)和第二高速缓存区域-2(334);以及第三对第一高速缓存区域-3(335)和第二高速缓存区域-3(336)。
接口(321、322和323)对应于图2A和2B中描述的接口(221)。接口-1(321)可用于通过接口-1(321)从应用-1(341)接收在第一高速缓存区域-1(331)或第二高速缓存区域-1(332)上写数据的指令,从第一高速缓存区域-1(331)或第二高速缓存区域-1(332)读数据的指令,或其组合。类似地,接口-2(322)可用于通过接口-2(322)从应用-2(342)接收在第一高速缓存区域-2(333)或第二高速缓存区域-2(334)上写数据的指令,从第一高速缓存区域-2(333)或第二高速缓存区域-2(334)读数据的指令,或其组合。类似地,接口-3(323)可用于通过接口-3(323)从应用-3(343)接收在第一高速缓存区域-3(335)或第二高速缓存区域-3(336)上写数据的指令,从第一高速缓存区域-3(335)或第二高速缓存区域-3(336)读数据的指令,或其组合。
应用(341、342和343)对应于图2A和2B中描述的应用(241)。应用(341)可向数据处理系统(301)发送在第一高速缓存区域-1(331)或第二高速缓存区域-1(332)上写数据的指令、从第一高速缓存区域-1(331)或第二高速缓存区域-1(332)读数据的指令,或其组合。类似地,应用(342)可向数据处理系统(301)发送在第一高速缓存区域-2(333)或第二高速缓存区域-2(334)上写数据的指令,从第一高速缓存区域-2(333)或第二高速缓存区域-2(334)读数据的指令,或其组合。类似地,应用(343)可以向数据处理系统(303)发送在第一高速缓存区域-3(335)或第二高速缓存区域-3(336)上写数据的指令,从第一高速缓存区域-3(335)或第二高速缓存区域-3(336)读数据的指令,或其组合。应用(341、342和343)可以存储在配备于数据处理系统(301)中的存储器中;或者可以存储在与数据处理系统(301)不同的系统中,并且通过接口(分别为321、322和323)访问高速缓存存储器(311)。
数据库储存库(391)对应于图2A和2B中描述的数据库储存库(291)。
现在参考图3A,数据处理系统(301)首先在高速缓存存储器(311)上提供前述第一、第二和第三对第一高速缓存区域和第二高速缓存区域。为了提供上述第一、第二和第三对,数据处理系统(301)可以在高速缓存存储器(311)上指定用于第一高速缓存区域(331、333和335)中的每一个的地址以及用于第二高速缓存区域(332、334和336)中的每一个的地址。
第一高速缓存区域(331、333和335)和第二高速缓存区域(332、334和336)分别具有与图2A和2B中描述的第一高速缓存区域(231)和第二高速缓存区域(232)相同的角色。
如图3A所示,第一高速缓存区域(331、333和335)首先具有将在预定时间窗口(以下也称为“第一时间窗口”)中输入的流式数据写入第一高速缓存区域(331、333和335)而不执行每个第一高速缓存区域(331、333和335)与数据库储存库(391)之间的同步的作用;并且第二高速缓存区域(332、334和336)首先具有在第一时间窗口中在数据库储存库(391)和第二高速缓存区域(分别为332、334和336)之间同步数据的作用。
数据处理系统(301)接收在第一时间窗口中输入的流式数据。数据处理系统(201)在第一时间窗口中将流式数据写入到第一高速缓存区域(331、333和335)上,而不执行第一高速缓存区域(331、333和335)中的每一个与数据库储存库(391)之间的同步。因此,在第一时间窗口中不允许第一高速缓存区域(331、333和335)中的每一个与数据库储存库(391)之间的同步(如图3A中由第一高速缓存区域(331、333和335)与数据库储存库(391)之间没有连接所指示)。同时,在第一时间窗口的至少一部分中允许数据库储存库(391)与第二高速缓存区域(332、334和336)中的每一个之间的同步。例如,完成同步的许可,直到完成数据库储存库(391)和第二高速缓存区域(332、334和336)中的每一个之间的同步。
在一些实施例中,在第一时间窗口中,可以使用表锁定来锁定第一高速缓存区域(331、333和335)中的每一个,例如,直到在第一高速缓存区域(331、333和335)中的每一个上写入流式数据的操作完成;并且可以使用表锁定来锁定第二高速缓存区域(332、334和336)中的每一个,例如直到第二高速缓存区域(332、334和336)中的每一个与数据库储存库(391)之间的同步完成为止,以便禁止在第二高速缓存区域(332、334和336)上写入流式数据。使用表锁定对第一高速缓存区域(331、333和335)的锁定,可以通过锁定整个第一高速缓存区域(分别为331、333和335)以防止从应用(分别为341、342和343)对第一高速缓存区域(分别为331、333和335)的访问来完成。类似地,使用表锁定对第二高速缓存区域(332、334和336)的锁定,可以通过锁定整个第二高速缓存区域(分别为332、334和336)以防止从应用(分别为341、342和343)对第二高速缓存区域(分别为332、334和336)的访问来完成。
在一些实施例中,在第一时间窗口中,可以使用散列索引基础来锁定第一高速缓存区域(331、333和335),例如,直到在第一高速缓存区域(分别为331、333和335)上写入流式数据的操作完成;并且可以使用表锁定来锁定第二高速缓存区域(332、334和336),例如直到第二高速缓存区域(分别为332、334和336)与数据库储存库(391)之间的同步完成,以便禁止将流式数据写入第二高速缓存区域(分别为332、334和336)。使用散列索引基础对第一高速缓存区域(分别为331、333和335)的锁定,可以通过使用散列索引基础为基础锁定第一高速缓存区域(分别为331、333和335)以防止从应用(分别为341、342和343)对第一高速缓存区域(分别为331、333和335)的访问来完成。使用表锁定对第二高速缓存区域(分别为332、334和336)的锁定,可以通过锁定整个第二高速缓存区域(分别为332、334和336)以防止从应用(分别为341、342和343)对第二高速缓存区域(分别为332、334和336)的访问来完成。
在第一时间窗口中,应用(341、342和343)可以读取第二高速缓存区域(分别为332、334和336)上的数据,但是由于针对第二高速缓存区域(分别为332、334和336)进行的上述锁定而不允许将数据写入第二高速缓存区域(分别为332、334和336)(如图3A中通过第一高速缓存区域(331、333和335)与应用(341、342和343)之间没有连接所指示的)。
现在参考图3B,所描述的是其中第一时间窗口现在已经过去的相同环境。在第一时间窗口过去时,数据处理系统(301)在上述第一、第二和第三对中的每一对中将第一高速缓存区域的角色与第二高速缓存区域的角色交换。数据处理系统(301)在第一时间窗口过去时,使第一高速缓存区域(331、333和335)中的每一个与数据库储存库(391)之间能够同步。同时,数据处理系统(301)在第一时间窗口过去时禁止数据库储存库(391)与每个第二高速缓存区域(332、334和336)之间的同步(如图3B中由第二高速缓存区域(332、334和336)与数据库储存库(391)之间没有连接所指示的)。
在第一时间窗口过去之后,新的时间窗口(即第二时间窗口)开始。数据处理系统(301)在第二时间窗口中将新输入的流式数据写入第二高速缓存区域(332、334和336)上,而不执行数据库储存库(391)和每个第二高速缓存区域(332、334和336)之间的同步。因此,在第二时间窗口中不允许数据库储存库(391)与第二高速缓存区域(332、334和336)中的每个之间的同步。同时,在第二时间窗口的至少一部分中允许每个第一高速缓存区域(331、333和335)与数据库储存库(391)之间的同步。例如,完成同步的许可,直到完成第一高速缓存区域(331、333和335)中的每一个与数据库储存库(391)之间的同步为止。
在一些实施例中,在第二时间窗口中,可以使用表锁定来锁定第二高速缓存区域(332、334和336),例如,直到在第二高速缓存区域(分别为332、334和336)上写入新输入的流式数据的操作完成;并且可以使用表锁定来锁定第一高速缓存区域(331、333和335),例如直到数据库储存库(391)和第一高速缓存区域(分别为331、333和335)之间的同步完成,以便禁止在第一高速缓存区域(分别为331、333和335)上写入流式数据。使用表锁定对第二高速缓存区域(分别为332、334和336)的锁定,可以通过锁定整个第二高速缓存区域(分别为332、334和336)以防止从应用(分别为341、342和343)对第二高速缓存区域(分别为332、334和336)的访问来完成。类似地,使用表锁定对第一高速缓存区域(331、333和335)的锁定,可以通过锁定整个第一高速缓存区域(分别为331、333和335)以防止从应用(分别为341、342和343)对第一高速缓存区域(分别为331、333和335)的访问来完成。
在一些实施例中,在第二时间窗口中,可以使用散列索引基础来锁定第二高速缓存区域(332、334和336),例如,直到在第二高速缓存区域(分别为332、334和336)上写入新输入的流式数据的操作完成;并且可以使用表锁定来锁定第一高速缓存区域(331、333和335),例如直到数据库储存库(391)和第一高速缓存区域(分别为331、333和335)之间的同步完成,以便禁止在第一高速缓存区域(分别为331、333和335)上写入新输入的流式数据。使用散列索引基础对第二高速缓存区域(332、334和336)的锁定,可以通过使用散列索引基础为基础锁定第二高速缓存区域(分别为332、334和336)以防止分别从应用(分别为341、342和343)对第二高速缓存区域(分别为332、334和336)的访问来完成。使用表锁定对第一高速缓存区域(331、333和335)的锁定,可以通过锁定整个第一高速缓存区域(分别为331、333和335)以防止从应用(分别为341、342和343)对第一高速缓存区域(分别为331、333和335)的访问来完成。
在第二时间窗口中,应用(341、342和343)可以读取第一高速缓存区域(分别为331、333和335)上的数据,但是由于针对第一高速缓存区域(分别为331、333和335)进行的上述锁定,不允许将数据写入第一高速缓存区域(分别为331、333和335)(如图3B中通过第一高速缓存区域(331、333和335)与应用(341、342和343)之间没有连接所指示的)。
现在返回参考图3A,在第二时间窗口过去时,数据处理系统(301)再次在上述第一、第二和第三对中的每一对中将第一高速缓存区域的角色与第二高速缓存区域的角色交换。因此,数据处理系统(301)根据图3A中描述的框图处理新输入的数据。
如上所述,在经过预定时间窗口时,数据处理系统(301)在上述第一、第二和第三对中的每一对中将第一高速缓存区域的角色与第二高速缓存区域的角色交换,以处理流式数据。该交换可以使用图3A中所示的角色以奇数(例如,第一、第三、第五)时间窗口并且使用图3B中所示的角色以偶数(例如,第二、第四、第六)时间窗口无限地继续。
图3A和3B中描述的实施例使得能够实现新输入的流式数据的实时执行和一致性。
在图3A和3B中描述的实施例中,第一、第二和第三对可以在相同的时间窗口中同时使用。
在另一实施例中,第一、第二和第三对可以在不同窗口中的每一个中使用。例如,可以根据时间窗口的顺序来按顺序使用第一、第二和第三对。这是例如在仅使用应用-1(341)和接口-1(321)并且仅通过接口-1(321)使用第一、第二和第三对的情况下进行的。
本领域普通技术人员可以使用图3A和3B中描述的框图来应用各种变型。
图4以及图5A和5B各自示出了描述处理流式数据的过程的不同流程图。
现在参考图4,其描绘根据本发明实施例的描绘处理流式传输数据的过程的流程图。
每个操作的主体可以是数据处理系统,其可以对应于图1中描述的计算机系统(101)。
在401,数据处理系统开始该过程。预定义窗口的长度可以被预先、手动或自动地定义,并且可以取决于从以下数据导出的数据,所述以下数据可以是从过程的过去实例获得的:例如接收的流式数据、流式数据的处理时间、与数据库储存库同步数据所需的时间、或其组合。
在402,数据处理系统在数据处理系统中的高速缓存存储器上提供一对或多对第一和第二高速缓存区域。数据处理系统可以在高速缓存存储器上指定用于第一高速缓存区域的地址以及用于第二高速缓存区域的地址,以提供一对或多对第一高速缓存区域和第二高速缓存区域中的每一对。
在403,在预定义的时间窗口(第一时间窗口)中,数据处理系统接收流式数据并且将流式数据写入第一高速缓存区域上,而不执行第一高速缓存区域与数据库储存库之间的同步。在第一时间窗口的至少一部分中允许数据库储存库和第二高速缓存区域之间的同步。因此,数据处理系统可以执行数据库储存库和第二高速缓存区域之间的同步。
在第一时间窗口中,数据处理系统可以锁定整个第一高速缓存区域以防止从应用对第一高速缓存区域的访问,并且还可以锁定整个第二高速缓存区域以防止从应用对第二高速缓存区域的访问。或者,在第一时间窗口中,数据处理系统可以以散列索引基础为基础锁定第一高速缓存区域以防止从应用对第一高速缓存区域的访问,并且还可以锁定整个第二高速缓存区域以防止从应用对第二高速缓存区域的访问。
在404,数据处理系统确定第一时间窗口是否已经过去。如果第一时间窗口已经过去,则数据处理系统进行到步骤405。否则,数据处理系统返回到步骤403以重复步骤403。
在405,在经过第一时间窗口时,数据处理系统将第一高速缓存区域的角色与第二高速缓存区域的角色交换。
在406,数据处理系统使能在405处的交换之后的第一高速缓存区域与数据库储存库之间的同步,但是禁止数据库储存库与在405处的交换之后的第二高速缓存区域之间的同步。此外,在405处的交换之后,数据处理系统将新输入的流式数据写入第二高速缓存区域。
因此,在预定义的时间窗口(第二时间窗口)中,数据处理系统接收新输入的流式数据,并且将新输入的流式数据写入交换之后的第二高速缓存区域上,而不执行数据库储存库和交换之后的第二高速缓存区域之间的同步。在第二时间窗口的至少一部分中允许交换之后的第一高速缓存区域与数据库储存库之间的同步。因此,数据处理系统可以在交换之后的第一高速缓存区域与数据库储存库之间执行同步。
第二时间窗口的长度可以与第一时间窗口的长度相同或不同。第二窗口的长度可以由应用根据从过去的实例或在第一时间窗口中获得的以下数据导出的数据自动更新:例如接收的流式数据、流式数据的处理时间、与数据库储存库同步所需的时间、或其组合。如果预定义时间窗口的长度被更新,则更新的长度可以用于随后的时间窗口(例如,随后的第二时间窗口)。
在第二时间窗口中,数据处理系统可以锁定整个第一高速缓存区域以防止从应用对交换之后的第一高速缓存区域的访问,并且还可以锁定整个第二高速缓存区域以防止从应用对交换之后的第二高速缓存区域的访问。或者,在第二时间窗口中,数据处理系统可以锁定整个第一高速缓存区域以防止从应用对第一高速缓存区域的访问,并且还可以在散列索引基础的基础上锁定第二高速缓存区域以防止从应用对第二高速缓存区域的访问。
在407,数据处理系统确定第二时间窗口是否已经过去。如果第二时间窗口已经过去,则数据处理系统进行到步骤408。否则,数据处理系统返回到步骤406以重复步骤406。
在408,在经过第二时间窗口时,数据处理系统将交换之后的第一高速缓存区域的角色与第二高速缓存区域的角色重新交换。因此,在第三时间窗口中再次进行与403中描述的处理相同的处理,并且过程返回到403。
在用户选择终止上述过程的情况下,数据处理系统可以终止该过程。
现在参考图5A和5B,图5A和5B是描绘根据本公开的实施例的处理流式数据的过程的流程图。
在图5A中,每个操作的主体可以是数据处理系统,其可以对应于图1中描述的计算机系统(101)。
在501,数据处理系统开始该过程的一部分。如上所述,可以预先手动或自动地定义预定义窗口的长度。
在502,数据处理系统在数据处理系统中的高速缓存存储器上提供一对或多对的两个高速缓存区域,即前表(F)和后表(B)。数据处理系统可以在高速缓存存储器上指定用于前表的地址以及用于后表的地址,以提供一对或多对前表和后表中的每一对。前表和后表可以分别对应于图4中描述的第一高速缓存区域和第二高速缓存区域。
在503,数据处理系统确定预定义的时间窗口是否已经过去。如果预定义时间窗口已经过去,则数据处理系统进行到504。否则,数据处理系统返回到503,直到预定义的时间窗口已经过去。
在504,数据处理系统交换前表的地址和后表的地址。
在505,在预定义的时间窗口(第二时间窗口)中,数据处理系统锁定整个后表以防止从应用访问后表,在用于快照的存储器和后表之间或者在数据库储存库和后表之间操作快照(例如,同步),然后解锁后表。在一些实施例中,数据还从用于快照的存储器写入数据库。该后表可以专用于快照的操作。因此,这种锁定是针对整个表格基础完成的。
在506,数据处理系统锁定整个后表以防止从应用对后表的访问,清除后表,然后解锁后表。
在解锁之后,数据处理系统返回到503。
在用户选择终止上述过程的情况下,数据处理系统可以终止该过程。
在图5B中,每个步骤的主体可以是实现应用的系统或实现应用的数据处理系统。在下文中,图5B中的每个步骤的主体可以被简单地称为计算机系统,但是该计算机系统包括实现应用的系统或实现应用的数据处理系统。
在511,计算机系统开始该过程的剩余部分。剩余部分可以通过应用的操作来执行。
在512,计算机系统获得前表的当前地址。
在513,计算机系统基于写在前表上的流式数据计算散列索引。
在514,计算机系统使用散列索引基础锁定前表,将传入的流式数据写到前表上,然后在写入之后解锁前表。使用散列索引基础来完成对前表的锁定,以便将等待锁定被释放的时间减少到最小。
在解锁之后,计算机系统返回到步骤512。
在用户选择终止上述过程的情况下,计算机系统可以终止该过程。
现在参考图6,描绘根据本发明的实施例获得的结果的示例。
准备以下实验场景:四个执行PUT操作的线程、四个执行GET操作的线程和一个执行数据库写入操作的线程各自在十秒的时间窗口中运行五次,对在总共50秒内完成的PUT和GET操作进行计数。在每个数据库写入操作中,在制作用于快照的存储器中在那时的高速缓存数据库映像的拷贝期间执行锁定,然后释放锁定,并且将用于快照的存储器中的拷贝数据写入数据库储存库。用于快照的存储器可以在高速缓存数据库和数据库储存库之间准备。
在以下三种环境中进行以下实验:
-场景_1:如上所述的传统解决方案TS1,其具有可以从数据库高速缓存和数据库读取/写入的应用,该数据库利用表锁定定期地将数据与数据库高速缓存同步;
-场景_2a:根据本公开的实施例的两个数据库高速缓存,每个数据库高速缓存具有表锁定;以及
-场景_2b:根据本公开的实施例的两个数据库高速缓存,具有基于散列索引基础的锁定的前表以及具有整个后表的锁定的后表。
表(601)和图(602)示出了在场景_1、场景_2a和场景_2b中的每一个中在50秒内完成的操作的数目的比较。表(601)中的结果显示本发明的实施例(即,场景_2a和场景_2b)实现了处理速度的改进,其比上文描述的传统解决方案(即,场景_1)快约四到六倍。
现在参考图7,其描绘与图4中所描述的过程相关的计算机系统硬件的总体功能框图。
数据处理系统(701)可以对应于图1中描述的计算机系统(101)。
数据处理系统(701)可以包括高速缓存存储器(711)、提供部(741)、锁定部(742)、接收部(743)、写入部(744)、同步部(745)和交换部(746)以及可选地包括时间窗口部(747)。
高速缓存存储器(711)可以具有一对或多对第一高速缓存区域(731)和第二高速缓存区域(732)。
提供部(741)在高速缓存存储器(711)中提供第一高速缓存区域(731)和第二高速缓存区域(732)的对。
锁定部(742)在第一时间窗口内在整个第一高速缓存区域(731)上锁定对第一高速缓存区域(731)的访问,并且进一步在整个第二高速缓存区域(732)上锁定对第二高速缓存区域(732)的访问,或者在散列索引基础上锁定对第一高速缓存区域(731)的访问,并且进一步在第一时间窗口内在整个第二高速缓存区域(732)上锁定对第二高速缓存区域(732)的访问;在整个第一高速缓存区域(731)上锁定对第一高速缓存区域(731)的访问,并且还在整个第二高速缓存区域(732)上锁定对第二高速缓存区域(732)的访问;或者在第二时间窗口中,在交换之后的整个第一高速缓存区域(731)上锁定对交换之后的第一高速缓存区域(731)的访问,并且进一步在第二时间窗口中在散列索引基础上锁定对交换之后的第二高速缓存区域(732)的访问。
接收部(743)在每个预定义时间窗口中接收流式数据。
写入部(744)在第一时间窗口内,将流式数据写入第一高速缓存区域(731),而不进行第一高速缓存区域(731)与数据库储存库(791)的同步,在经过第一时间窗口后,在第二时间窗口内,将新输入的流式数据写入交换之后的第二高速缓存区域(732),而在第二时间窗口内不进行数据库储存库(791)与第二高速缓存区域(732)的同步。
同步部(745)在第一时间窗口内禁止第一高速缓存区域(731)与数据库储存库(791)的同步,进行数据库储存库(791)与第二高速缓存区域(732)的同步,在经过第一时间窗口后,禁止交换后的数据库储存库(791)与第二高速缓存区域(732)的同步,进行交换后的第一高速缓存区域(731)与数据库储存库(791)的同步。
交换部(746)在经过第一时间窗口时,将第一高速缓存区域(731)的角色与第二高速缓存区域(732)的角色进行交换,在经过第二时间窗口时,将交换后的第一高速缓存区域(731)的角色与交换后的第二高速缓存区域(732)的角色进行重新交换。
时间窗口部(747)可以设置预定义的时间窗口并且测量预定义的时间窗口。时间窗口部(747)可以进一步根据从下列数据导出的数据来定义时间窗口的长度,所述下列数据是从过去的实例或者一个或多个先前的时间窗口获得的:例如接收的流式数据、流式数据的处理时间、与数据库储存库同步所需的时间、或其组合。
本发明可以是任何可能的技术细节集成水平的方法、系统和/或计算机程序产品。计算机程序产品可以包括其上具有计算机可读程序指令的计算机可读存储介质(或多个介质),所述计算机可读程序指令用于使处理器执行本发明的各方面。
计算机可读存储介质可以是能够保留和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适的组合。计算机可读存储介质的更具体示例的非穷举列表包括以下:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、诸如上面记录有指令的打孔卡或凹槽中的凸起结构的机械编码装置,以及上述的任何适当组合。如本文所使用的计算机可读存储介质不应被解释为暂时性信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤线缆的光脉冲)、或通过导线传输的电信号。
本文描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络,例如因特网、局域网、广域网和/或无线网络,下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路的配置数据,或者以一种或多种编程语言(包括面向对象的编程语言,例如Smalltalk、C++等)和过程编程语言(例如“C”编程语言或类似的编程语言)的任意组合编写的源代码或目标代码。计算机可读程序指令可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立的软件包执行,部分在用户的计算机上并且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(LAN)或广域网(WAN),或者可以连接到外部计算机(例如,使用因特网服务提供商通过因特网)。在一些实施例中,为了执行本发明的各方面,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化。
在此参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各方面。将理解,流程图和/或框图的每个框以及流程图和/或框图中的框的组合可以由计算机可读程序指令来实现。
这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现流程图和/或框图的一个或多个框中指定的功能/动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,其可以引导计算机、可编程数据处理装置和/或其他设备以特定方式工作,使得其中存储有指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图的一个或多个框中指定的功能/动作的各方面的指令。
计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图的一个或多个框中指定的功能/动作。
附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个框可以表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施方案中,框中所注明的功能可不按图中所注明的次序发生。例如,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意,框图和/或流程图图示的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或动作或执行专用硬件和计算机指令的组合的专用的基于硬件的系统来实现。

Claims (19)

1.一种用于处理流式数据的计算机实现的方法,包括:
在数据处理系统中的高速缓存存储器上提供第一高速缓存区域和第二高速缓存区域,所述数据处理系统包括数据库储存库和用于所述数据库储存库的所述高速缓存存储器;
在第一时间窗口中接收流式数据并且将所述流式数据写入在所述第一高速缓存区域上;
在所述第一时间窗口中禁止在所述第一高速缓存区域与所述数据库储存库之间执行同步;
在所述第一时间窗口的至少一部分中,使能所述数据库储存库与所述第二高速缓存区域之间的同步;以及
在所述第一时间窗口过去时,使能所述第一高速缓存区域和所述数据库储存库之间的同步。
2.根据权利要求1所述的方法,其中,所述数据处理系统还包括与应用的接口,并且还包括:
使所述应用能够访问所述高速缓存存储器,以便实时处理输入的流式数据。
3.根据前述权利要求中任一项所述的方法,所述方法还包括:
在所述第一时间窗口过去时,禁止所述数据库储存库与所述第二高速缓存区域之间的同步。
4.根据权利要求3所述的方法,所述方法还包括:
在所述第一时间窗口过去时,在所述第二高速缓存区域上写入新输入的流式数据。
5.根据前述权利要求中任一项所述的方法,所述方法还包括,
在所述第一时间窗口过去时,将所述第一高速缓存区域的角色与所述第二高速缓存区域的角色交换;以及
在第二时间窗口内,实现交换之后的所述第一高速缓存区域与所述数据库储存库之间的同步;
在所述第二时间窗口中,将新输入的流式数据写入所述第二高速缓存区域;以及
在所述第二时间窗口中,禁止所述第二高速缓存区域与所述数据库储存库之间的同步。
6.根据权利要求5所述的方法,所述方法还包括:
在所述第二时间窗口过去时,将所述交换之后的所述第一高速缓存区域的角色与所述交换之后的所述第二高速缓存区域的角色重新交换;以及
在第三时间窗口中,重复所述接收、所述写入和所述使能。
7.根据前述权利要求中任一项所述的方法,所述方法还包括:
在所述第一时间窗口中,在整个所述第一高速缓存区域上锁定对所述第一高速缓存区域的访问;以及
在所述第一时间窗口中,在整个所述第二高速缓存区域上锁定对所述第二高速缓存区域的访问。
8.根据权利要求1至6中任一项所述的方法,所述方法还包括:
在所述第一时间窗口中,在散列索引基础上锁定对所述第一高速缓存区域的访问;以及
在所述第一时间窗口中,在整个所述第二高速缓存区域上锁定对所述第二高速缓存区域的访问。
9.根据权利要求8所述的方法,所述方法还包括:
在所述第一时间窗口过去时,将所述第一高速缓存区域的角色与所述第二高速缓存区域的角色交换;以及
在第二时间窗口中,在整个所述第一高速缓存区域上锁定对所述第一高速缓存区域的访问;以及
在所述第二时间窗口中,在整个所述第二高速缓存区域上锁定对所述第二高速缓存区域的访问。
10.根据前述权利要求中任一项所述的方法,其中,在所述高速缓存存储器上提供第一高速缓存区域和第二高速缓存区域包括在所述高速缓存存储器上提供多对第一高速缓存区域和第二高速缓存区域。
11.根据权利要求10所述的方法,其中,所述多对在相同的时间窗口中同时使用或者在不同的时间窗口中的每一个中使用。
12.根据权利要求5所述的方法,其中,由用于处理所述流式数据的所述应用更新相应时间窗口的长度;并且其中更新的长度用于随后的时间窗口。
13.根据权利要求5所述的方法,其中,根据所接收的流式数据的量、所述流式数据的处理时间、与数据库储存库同步所需的时间、或其组合来定义相应时间窗口的长度。
14.一种数据处理系统,包括:
一个或多个处理器;
存储程序的存储器,当在所述处理器上执行所述程序时,所述程序执行用于处理流式数据的操作;
数据库储存库;以及
用于所述数据库储存库的高速缓存存储器,其中所述高速缓存存储器包括:
第一高速缓存区域,用于在第一时间窗口内,执行接收流式数据和将流式数据写入到其上的角色,而不进行所述第一高速缓存区域与所述数据库储存库之间的同步;以及
第二高速缓存区域,用于在第一时间窗口的至少一部分中执行与所述数据库储存库同步的角色;以及
其中,所述数据处理系统在所述第一时间窗口过去时执行所述第一高速缓存区域与所述数据库储存库之间的同步。
15.根据权利要求14所述的数据处理系统,其中,在所述第一时间窗口过去时,所述数据处理系统禁止所述数据库储存库和所述第二高速缓存区域之间的同步。
16.根据权利要求14或15所述的数据处理系统,其中,所述数据处理系统在所述第一时间窗口过去时将新输入的流式数据写入所述第二高速缓存区域上。
17.根据权利要求14至16中任一项所述的数据处理系统,其中,所述数据处理系统在所述第一时间窗口过去时将所述第一高速缓存区域的角色与所述第二高速缓存区域的角色交换;以及
在交换之后出现的第二时间窗口中,执行所述数据库储存库和所述第一高速缓存区域之间的同步,并且在所述第二高速缓存区域上写入新输入的流式数据,而不执行所述第二高速缓存区域和所述数据库储存库之间的同步。
18.一种用于处理流式数据的计算机程序产品,所述计算机程序产品包括:一种计算机可读存储介质,其可由处理电路读取并且存储用于由所述处理电路执行以用于执行根据权利要求1至13中任一项所述的方法的指令。
19.一种存储在计算机可读介质上并且可加载到数字计算机的内部存储器中的计算机程序,包括软件代码部分,当所述程序在计算机上运行时,用于执行根据权利要求1至13中任一项所述的方法。
CN201980032923.6A 2018-06-08 2019-06-06 流式数据的多高速缓存处理 Active CN112119387B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/004,020 2018-06-08
US16/004,020 US10902020B2 (en) 2018-06-08 2018-06-08 Multiple cache processing of streaming data
PCT/IB2019/054733 WO2019234685A1 (en) 2018-06-08 2019-06-06 Multiple cache processing of streaming data

Publications (2)

Publication Number Publication Date
CN112119387A true CN112119387A (zh) 2020-12-22
CN112119387B CN112119387B (zh) 2024-06-04

Family

ID=

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050044080A1 (en) * 2003-08-22 2005-02-24 Fridella Stephen A. Management of the file-modification time attribute in a multi-processor file server system
CN102483720A (zh) * 2009-09-18 2012-05-30 国际商业机器公司 读写感知的高速缓存
US20150193311A1 (en) * 2014-01-05 2015-07-09 International Business Machines Corporation Managing production data
CN107077477A (zh) * 2014-09-15 2017-08-18 微软技术许可有限责任公司 用于增强的事件处理的构造的数据流

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050044080A1 (en) * 2003-08-22 2005-02-24 Fridella Stephen A. Management of the file-modification time attribute in a multi-processor file server system
CN102483720A (zh) * 2009-09-18 2012-05-30 国际商业机器公司 读写感知的高速缓存
US20150193311A1 (en) * 2014-01-05 2015-07-09 International Business Machines Corporation Managing production data
CN107077477A (zh) * 2014-09-15 2017-08-18 微软技术许可有限责任公司 用于增强的事件处理的构造的数据流

Also Published As

Publication number Publication date
JP2021526252A (ja) 2021-09-30
DE112019001744T5 (de) 2021-03-04
WO2019234685A1 (en) 2019-12-12
GB2587583A (en) 2021-03-31
US10902020B2 (en) 2021-01-26
JP7316724B2 (ja) 2023-07-28
US20190377822A1 (en) 2019-12-12
GB2587583B (en) 2021-08-25
GB202100032D0 (en) 2021-02-17

Similar Documents

Publication Publication Date Title
US10969966B2 (en) Method and device for data read and write
US8793528B2 (en) Dynamic hypervisor relocation
US10983913B2 (en) Securing exclusive access to a copy of a metadata track via a process while the metadata track is held in a shared mode by another process
US8549354B2 (en) Managing rollback in a transactional memory environment
US10678775B2 (en) Determining integrity of database workload transactions
JP7316724B2 (ja) ストリーミングデータの複数のキャッシュ処理
US9632818B2 (en) Identifying performance bottleneck of transaction in transaction processing system
US20160170905A1 (en) Migrating buffer for direct memory access in a computer system
CN112119387B (zh) 流式数据的多高速缓存处理
US20180101417A1 (en) Detecting deadlocks involving inter-processor interrupts
US9223806B2 (en) Restarting a batch process from an execution point
US20150254145A1 (en) Operating system/hypervisor efficiencies for sub-divided privilege levels
US20140372996A1 (en) Compiler optimization for memoization of pure function arguments
US9727242B2 (en) Selective memory dump using usertokens
US20200210571A1 (en) System and method of optimizing antivirus scanning of files on virtual machines
US9430403B1 (en) Optimizing system memory usage
US10282243B2 (en) Performance enhancement for platform data dump collection
US9317546B2 (en) Storing changes made toward a limit
US10235394B2 (en) Managing relational databases
US10614092B2 (en) Optimizing data retrieval operation in big-data processing systems
US9519583B1 (en) Dedicated memory structure holding data for detecting available worker thread(s) and informing available worker thread(s) of task(s) to execute
JP2023551830A (ja) アクティブ-アクティブアーキテクチャにおけるバッチジョブのパフォーマンス改善
CN117235177A (zh) 数据库同步操作方法、装置、设备及计算机介质
US20160378812A1 (en) Reduction of bind breaks

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