CN109542917B - 数据读取方法及计算机可读介质 - Google Patents
数据读取方法及计算机可读介质 Download PDFInfo
- Publication number
- CN109542917B CN109542917B CN201811216580.2A CN201811216580A CN109542917B CN 109542917 B CN109542917 B CN 109542917B CN 201811216580 A CN201811216580 A CN 201811216580A CN 109542917 B CN109542917 B CN 109542917B
- Authority
- CN
- China
- Prior art keywords
- data
- data reading
- parameter
- database
- information
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种数据读取方法及计算机可读介质。数据读取方法包括:获取数据库的类型,其中,所述数据库用于存储待读取的业务数据;根据所述数据库的类型和预设的配置信息,生成与所述数据库的类型对应的数据读取代理;通过所述数据读取代理从所述数据库中读取所述业务数据;将读取的所述业务数据转化为预设格式的消息并持久化存储。该数据读取方法可以解决数据采集困难的问题。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种数据读取方法及计算机可读介质。
背景技术
目前,企业的发展越来越依赖于通过计算机和网络系统实现管理。然而,企业的高速发展使得企业内部存在很多遗留系统和遗留数据,特别是对于大公司和运营时间比较长的公司,这样的系统和数据会非常多。
以包括多条业务线的企业系统为例,可能存在着诸如:1)不同业务线间相同用户的唯一标识不同;2)不同业务线记录的用户信息有差别;3)不同业务线的技术架构有很大差别,导致原始数据的存储分散,等等问题。由此,导致无法有效地收集数据,造成数据的整合和清理极端困难,无法对已有数据进行有效利用。
发明内容
有鉴于此,本发明实施例所解决的技术问题之一在于提供一种数据读取方法及计算机可读介质,用以克服现有技术中的多数据业务数据采集困难的问题。
本发明实施例的第一方面,提供一种数据读取方法,包括:获取数据库的类型,其中,所述数据库用于存储待读取的业务数据;根据所述数据库的类型和预设的配置信息,生成与所述数据库的类型对应的数据读取代理;通过所述数据读取代理从所述数据库中读取所述业务数据;将读取的所述业务数据转化为预设格式的消息并持久化存储。
本发明实施例的第二方面,提供一种计算机可读介质,所述计算机可读介质存储有:用于获取数据库的类型的指令,其中,所述数据库用于存储待读取的业务数据;用于根据所述数据库的类型和预设的配置信息,生成与所述数据库的类型对应的数据读取代理的指令;用于通过所述数据读取代理从所述数据库中读取所述业务数据的指令;用于将读取的所述业务数据转化为预设格式的消息并持久化存储的指令。
由以上技术方案可见,本发明实施例的数据读取方法能够根据不同的数据库的类型生成对应的数据读取代理,利用对应的数据读取代理从数据库中读取业务数据,由此实现简单可靠地进行数据读取,确保在业务数据量较大,业务数据分布在不同数据库类型的数据库中时也可以高效可靠地对业务数据进行读取,且将读取的业务数据转化为具有预设格式的消息,并发布到消息队列中可以使后续能够方便地对业务数据进行处理和分析,使得业务数据可以被有效利用。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1示出了本发明的实施例一的数据读取方法的流程图。
具体实施方式
当然,实施本发明实施例的任一技术方案必不一定需要同时达到以上的所有优点。
为了使本领域的人员更好地理解本发明实施例中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明实施例一部分实施例,而不是全部的实施例。基于本发明实施例中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本发明实施例保护的范围。
下面结合本发明实施例附图进一步说明本发明实施例具体实现。
实施例一
图1示出了本发明的实施例一的数据读取方法的流程图。如图1所示,本实施例的数据读取方法包括以下步骤:
步骤S101:获取数据库的类型。
其中,所述数据库用于存储待读取的业务数据。
例如,数据库可以是某一个业务线的数据库,该数据库中存储有对应业务线的业务数据。
针对业务线较多的情况,不同的业务线采用的存储业务数据的数据库类型可能不同。例如,数据量较大的业务线可能会采取支持分布式的数据存储的数据库类型,而数据量较小但对数据读取较为频繁的业务线可能会采取键-值型的数据库类型。由于不同的业务线采取的数据存储方式、数据存储架构的不同,导致业务线的数据收集难度大,无法有效利用这些数据进行分析。
为了克服这一问题,在采集数据时,先确定需要采集的业务数据所在的数据库的类型,进而针对不同类型的数据库生成适当的数据读取代理。这样可以适应不同类型的数据库。
其中,数据库的类型包括下列至少之一:关系型数据库、键-值型数据库和列存储型数据库。当然,数据库的类型还可以包括其他的类型,如面向文档型的数据库类型,等等,具体数据库的类型的采用可以根据实际需求适当设置,本发明实施例对此不作限制。
关系型数据库例如为SQL数据库、MySQL数据库等,键-值(key-value)型数据库例如为Redis数据库等,列存储型数据库例如为Hbase数据库等,面向文档型的数据库例如为MorgoDB数据库、CouchDB数据库等。
在获取数据库的类型时,可以通过向业务数据对应的数据库发送请求消息,请求获取数据库的数据库类型;也可以预先设置数据库信息表,在信息表中记录各个数据库对应的数据库的类型,当需要读取某一数据库中的业务数据时,从信息表中获取对应的数据库的类型。
步骤S102:根据所述数据库的类型和预设的配置信息,生成与所述数据库的类型对应的数据读取代理。
预设的配置信息用于指示数据读取代理中可配置的参数、以及每个参数的配置规则。根据这些配置信息即可生成相应的数据读取代理。本实施例中,通过“代理”形式进行数据读取,可以保证数据获取的有效实现,又可提高其复用度,降低平台实现成本。
例如,业务线A、B、C使用的数据库包括:MySQL数据库、Redis数据库、Neo4j数据库,则对应地,根据配置信息,业务线A对应的数据读取代理A中的类型参数(type)可以设置为MySQL,以指示该数据读取代理A用于读取MySQL类型的数据库。业务线B对应的数据读取代理B的类型参数可以设置为Redis,以指示其用于读取Redis类型的数据库。业务线C对应的数据读取代理C中的类型参数可以配置为Neo4j,以指示其用于读取Neo4j类型的数据库。
通过设置具有不同类型参数的数据读取代理,每个数据读取代理针对一个类型的数据库进行数据读取,既大大提高了数据读取和处理效率,也简化了数据读取的操作实现。
可选地,除类型参数外,根据配置信息的指示,数据读取代理还可以包括数据更新方法参数、更新频率参数、同步更新参数和最大延迟等待时间参数中的至少一个。
在一种可行方式中,根据所述数据库的类型和预设的配置信息,生成与所述数据库的类型对应的数据读取代理包括:根据所述数据库的类型和预设的配置信息,确定所述数据读取代理的生成信息;根据确定的所述数据更新方法信息,生成所述数据读取代理。
当数据读取代理包括数据更新方法参数时,确定数据读取代理的生成信息中包括数据更新方法信息,所述数据更新方法信息中包括下列规则至少之一:用于指示读取指定时间范围内业务数据的规则(记作time)、用于指示读取指定数量范围内业务数据的规则(记作value)、和用于指示备份业务数据的规则(记作mirror)。
当数据读取代理包括更新频率参数时,生成信息包括更新频率参数信息,所述更新频率参数信息用于指示相邻两次数据读取动作间的时间间隔。当数据读取代理包括同步更新参数时,生成信息包括所述同步更新参数信息,其用于指示是否依照所述更新频率参数信息设定的时间间隔进行数据读取。
当数据读取代理包括最大延迟等待时间参数时,生成信息包括所述最大延迟等待时间参数信息,其用于指示在一次数据读取动作未获得业务数据的情况下,下一数据读取动作的触发时间间隔。
当数据读取代理包括前述的所有参数时,所述根据确定的所述数据更新方法信息,生成所述数据读取代理包括:根据所述数据更新方法信息、更新频率参数信息、同步更新参数信息和最大延迟等待时间参数信息,生成所述数据读取代理。
针对存储在不同类型数据库中的不同结构的业务数据,可以为对应的数据读取代理中的各参数配置不同的参数值。以存储在MySQL类型的数据库中的学生选课信息为例,学生选课信息中包括学生的ID、姓名、所选课程的名称、以及选课时间等信息。
为了读取这一业务数据,可以将数据读取代理的数据更新方法参数的值配置为time,以指示读取指定时间范围内业务数据。更新频率参数的值配置为100秒,以指示每隔100秒进行一次数据读取动作。同步更新参数的值配置为false,以指示根据更新频率参数的值触发数据读取动作,而不根据外部系统设定的时间间隔触发数据读取动作。当同步更新参数的值配置为true时,指示根据外部系统设定的时间间隔触发数据读取动作。最大延迟等待时间参数的值配置为0,以指示不延迟等待。如果最大延迟等待时间参数的值配置为大于0,则指示在一次数据读取动作未获得业务数据的情况下,间隔设定的时间触发下一数据读取动作。
当然,根据待读取的业务数据的不同,数据读取代理中可以仅包括前述的所有参数中的一个或几个,本实施例对此不作限定。
数据读取代理可以以进程的方式从对应的数据库中读取业务数据。也可以根据需要,采用线程方式或其他任何适当方式从对应的数据库中读取业务数据,只要能够实现与数据库通信并获取业务数据即可。
当需要采集的业务数据分布在不同类型的数据库时,针对每个类型的数据库均生成至少一个数据读取代理,利用对应数据读取代理对业务数据进行读取。这样既保证了数据读取效率,又降低了数据读取难度,可以高效稳定地进行数据采集。
步骤S103:通过所述数据读取代理从所述数据库中读取所述业务数据。
在一种可行方式中,通过所述数据读取代理从所述数据库中读取所述业务数据包括:根据生成的所述数据读取代理的生成信息和预设的数据读取间隔参数,确定查询参数;当数据读取动作触发时,从所述数据库中读取符合所述查询参数的业务数据。
针对不同类型的业务数据,可以使用不同的查询参数。例如,针对具有时间信息的业务数据,可以使用时间作为查询参数,即从数据库中读取某一时刻或者时间段的业务数据。针对没有时间信息的业务时间,可以使用数据编号作为查询参数,即从数据库中读取编号在某一范围内的业务数据。
通过这种方式实现数据读取,既可以保证能够读取到需要的数据,又可以避免业务数据的充分读取,可以提升数据读取效率。
数据读取间隔参数用于指示查询参数更新的步长。如当前查询参数用于查询时间信息在2018年1月1日~1月2日之间的业务数据,若数据读取间隔参数为1天,则下一查询参数用于查询时间信息在2018年1月2日~1月3日的数据。
数据读取间隔参数的类型与查询参数的类型一致,例如,查询参数为时间,则数据读取间隔参数也为时间;同样地,查询参数为数量,则数据读取间隔参数也未数量。
数据读取间隔参数可以在系统中预先设定,也可以由用户根据具体需求填写。
在使用时间作为查询参数的情况下,根据生成的所述数据读取代理的生成信息和数据读取间隔参数,确定查询参数,包括:确定所述查询参数对应的数据读取动作是否为首次数据读取动作;若是首次数据读取动作,则根据所述生成信息中更新方法信息中的起始值和所述数据读取间隔参数,确定与所述首次数据读取动作对应的查询参数;若不是首次数据读取动作,则根据前一次数据读取动作对应的所述查询参数和所述数据读取间隔参数,确定当前数据读取动作对应的查询参数。
在数据读取代理的数据更新方法参数指示读取指定时间范围内业务数据时,指定时间范围至少包括起始值。例如,指定时间范围为:2018年1月1日~2018年12月31日。或者,指定时间范围为:2018年1月1日~,这种指示读取自2018年1月1日起至当前时刻的所有业务数据,由于终止值不确定,所以可以省略不填。
为了避免一次读取的业务数据量过大,造成读取容易崩溃,数据读取代理一次数据读取动作都是读取较小的一个时间范围内的业务数据,通过重复数据读取动作、并迭代每次数据读取动作对应的查询参数的方式读取所有需要的业务数据。为此,设置了数据读取间隔参数,数据读取间隔参数可以是1天、1小时等时间间隔,也可以是100、200等数量间隔,只要保证数据读取间隔参数的单位与查询参数的单位一致即可。
首次数据读取动作对应的查询参数根据设定起始值和数据读取间隔参数确定。之后的数据读取动作对应的查询参数由前一查询参数和数据读取间隔参数确定。
例如,所述查询参数包括参数上界和参数下界。
所述根据所述生成信息中更新方法信息中的起始值和所述数据读取间隔参数,确定与所述首次数据读取动作对应的查询参数,包括:根据所述起始值确定所述查询参数的参数上界;根据所述查询参数的参数上界和所述数据读取间隔参数,确定所述查询参数的参数下界。
当起始值为2018年1月1日,数据读取间隔参数为1天时,首次数据读取动作对应的查询参数的参数上界为2018年1月1日,参数下界为2018年1月2日。
所述根据前一次数据读取动作对应的所述查询参数和所述数据读取间隔参数,确定当前数据读取动作对应的查询参数,包括:根据所述前一次数据读取动作对应的查询参数的参数下界,确定当前数据读取动作对应的所述查询参数的参数上界;根据当前数据读取动作对应的所述查询参数的参数上界和所述数据读取间隔参数,确定当前数据读取动作对应的所述查询参数的参数下界。
若前一次数据读取动作对应的查询参数的参数下界为2018年1月2日,数据读取间隔参数为1天,则当前数据读取动作对应的查询参数的参数上界为2018年1月2日,参数下界为2018年1月3日。
当然,本实施例中仅是例举了一种读取业务数据的方式,在其他可行方式中,针对不同的数据库的类型可以采用不同的方式读取业务数据,本实施例对此不作限定。
当数据读取动作触发时,从所述数据库中读取符合所述查询参数的业务数据。例如,从数据库中读取时间信息在2018年1月2日到2018年1月3日的业务数据。
需要说明的是,针对一些存入数据库有延迟的业务数据,为了避免这一延迟导致读取时丢失业务数据,可以为数据读取代理的最大延迟等待时间参数配置一个等待时间,例如2小时。
当最大延迟等待时间参数的值大于0时,表示该数据读取代理读取的业务数据存在延迟进入数据库的情况,这种情况下,在完成一次数据读取动作后,为了避免遗漏那些延迟入库的业务数据,所述通过所述数据读取代理从所述数据库中读取所述业务数据,还包括:在所述从所述数据库中读取符合所述查询参数的业务数据之后,确定当前数据读取动作读取到的所述业务数据的数量是否等于0;若不等于0,则返回根据生成的所述数据读取代理的生成信息和数据读取间隔参数,确定查询参数的步骤继续执行,直至满足预设的终止条件后终止执行;若等于0,则中断数据读取动作,根据最大延迟等待时间参数信息和所述查询参数进行业务数据的延迟读取;在所述最大延迟等待时间参数信息指示的时间到达时,读取符合所述查询参数的业务数据,恢复所述数据读取动作,并返回根据生成的所述数据读取代理的生成信息和数据读取间隔参数,确定查询参数的步骤继续执行,直至满足预设的终止条件后终止执行。
在一次数据读取动作完成后,若读取到的数据为0,则表示可能由于业务数据延迟入库造成没有符合查询参数的业务数据。此时不更新查询参数,而是等待配置的最大延迟等待时间后,再从数据库中读取一次业务数据,确认是否存在符合该查询参数的业务数据。之后,再更新查询参数,这样可以避免丢失业务数据,保证数据读取的可靠性。
步骤S104:将读取的所述业务数据转化为预设格式的消息并持久化存储。
在通过数据读取代理获得业务数据之后,为了便于后续对业务数据进行处理和分析,从而有效地使用这些业务数据,可以将读取的业务数据转化为预设格式的消息,并将其持久化存储,以备后续使用。
在进行业务数据持久化存储时,可以将数据存储到本地,并将业务数据名称和数据存储的位置保存到Resdis数据库中。
例如,存在Redis数据库中的数据格式为:
'student_20180904':
{'path':'/event_phase/Log_data','cname':'tb','name':'student_20180904.eac'}。
在Redis数据库中的数据都是以键值对的形式进行存储的,其中键名为基于数据读取代理获取的数据的名称,如“student_20180904”,存储的内容为数据持久化到本地的路径(如'path':'/event_phase/Log_data')、数据的名称(如'name':'student_20180904.eac')、和数据存储的仓库名称(如'cname':'tb')。
对业务数据持久化存储后,将数据存储的位置信息存放在Redis数据库中可以很好的进行数据获取的索引,便于后续获取存储的业务数据。可选地,为了便于后续将读取代理获取的数据发布到消息队列中时,需要按照时间先后对持久化到本地的日志文件进行获取和发布。在一种可行方式中,将读取的所述业务数据转化为预设格式的消息并持久化存储,包括:将所述业务数据形成多组日志文件;将所述多组日志文件保存到日志栈中;当检测到所述日志栈中存储有所述多组日志文件中的部分或全部时,将所述日志栈中存储的日志文件转化为预设格式的消息并持久化存储。在读取代理获得业务数据之后,为了便于后续对业务数据进行处理和分析,从而有效地使用这些数据,将读取的业务数据转化为预设格式的消息,并将其发布到分布式消息队列中。
针对不同的分布式消息队列类型,业务数据转换的消息的预设格式可以不同。通过将业务数据转化为预设格式的消息,并发布到消息队列中,使得下游的数据消费者(例如进行业务数据处理和分析的单元)可以方便地获取到数据读取代理所读取的业务数据,进而可以对业务数据进行处理。
以Kafka消息队列为例,分布式消息队列用于在分布式应用间交换信息,其可驻留在内存或磁盘上,队列存储消息直到它们被相应的程序读走。通过分布式消息队列,程序可独立地执行,它们不需要知道彼此的位置、或在继续执行前不需要等待接收程序接收此消息。通过分布式消息队列有效实现了数据处理平台中多个功能模块间的协作。在本实施例中以分布式消息队列为Kafka消息队列为例进行说明,在其他实施例中,该分布式消息队列可以是其他任何适当的消息队列,本实施例对此不作限定。Kafka消息队列作为一种分布式流处理消息队列,其能充分利用磁盘的顺序读写特性,且吞吐量高,可以实时的数据流处理。
在Kafka消息队列中,通过主题(topic)的类别存储数据。针对每个主题,Kafka消息队列管理一个针对其的分区日志,该分区日志用于记录数据,故而在发布业务数据时,可以将业务数据形成多组日志文件,以方便地发布到Kafka消息队列中。在将业务数据发布到分布式消息队列中时,通过日志切分的方式将业务数据转化成多组日志文件,之后将多组日志文件保存到日志栈中。当检测到日志栈中存储有多组日志文件中的部分或全部时,将存储的日志文件转化为消息,并将该消息发布到分布式消息队列中。其中,转化的消息到格式应满足Kafka消息队列规定的消息格式。
一种可行的数据读取过程如下:
例如,数据读取代理的更新方法参数指示读取指定时间范围内业务数据。该指定时间范围为2018年1月1日~2018年12月31日。更新频率参数的值配置为1天,指示每隔1天进行一次数据读取动作。同步更新参数的值配置为false,指示根据更新频率参数的值触发数据读取动作。最大延迟等待时间参数的值配置为1小时,以指示在一次数据读取动作未获得业务数据的情况下,间隔1小时触发下一数据读取动作。设定的数据读取间隔参数为1天。
通过该数据读取代理首次读取业务数据时,对应的查询参数的参数上界为2018年1月1日,参数下界为2018年1月2日。数据读取代理从数据库中读取时间信息在2018年1月1日~2018年1月2日之间的业务数据。
若读取到的数据大于0,则更新查询参数,更新后的查询参数的参数上界为2018年1月2日,更新后的查询参数的参数下界为2018年1月3日。当与首次数据读取动作时间间隔1天时,触发新的数据读取动作,数据读取代理从数据库中读取时间信息在2018年1月2日~2018年1月1日之间的业务数据。
若读取到的数据等于0,则不更新查询参数,并等待最大延迟等待时间参数配置的时间,即等待1小时后触发延迟读取动作,数据读取代理从数据库中读取时间信息在2018年1月2日~2018年1月1日之间的业务数据。之后,再更新查询参数,更新后的查询参数的参数上界为2018年1月3日,更新后的查询参数的参数下界为2018年1月4日。并在下次数据读取动作触发时,进行数据读取,直至,更新后的查询参数的时间上界超过指定时间范围的终止值,即超过2018年12月31日,数据读取代理终止读取。
本实施例的数据读取方法能够根据不同的数据库的类型生成对应的数据读取代理,利用对应的数据读取代理从数据库中读取业务数据,由此实现简单可靠地进行数据读取,确保在业务数据量较大,业务数据分布在不同数据库类型的数据库中时也可以高效可靠地对业务数据进行读取,且将读取的业务数据转化为具有预设格式的消息,并发布到消息队列中可以使后续能够方便地对业务数据进行处理和分析,使得业务数据可以被有效利用。
此外,在业务数据读取过程中,对查询参数进行迭代更新,可以避免重复读取已经读取的数据,提升读取效率。而且根据读取到的业务数据的数量可以控制是否进行延迟读取,可以避免遗漏数据,充分保证了数据读取的可靠性。
实施例二
根据本发明的实施例,提供一种计算机存储介质,计算机可读介质存储有:用于获取数据库的类型的指令,其中,数据库用于存储待读取的业务数据;用于根据数据库的类型和预设的配置信息,生成与数据库的类型对应的数据读取代理的指令;用于通过数据读取代理从数据库中读取业务数据的指令;用于将读取的业务数据转化为预设格式的消息并持久化存储的指令。
可选地,数据库类型包括下列至少之一:关系型数据库、键-值型数据库和列存储型数据库。
可选地,用于根据数据库的类型和预设的配置信息,生成与数据库的类型对应的数据读取代理的指令,包括:用于根据数据库的类型和预设的配置信息,确定数据读取代理的生成信息的指令,其中,生成信息包括数据更新方法信息,数据更新方法信息中包括下列规则至少之一:用于指示读取指定时间范围内业务数据的规则、用于指示读取指定数量范围内业务数据的规则、和用于指示备份业务数据的规则;用于根据确定的数据更新方法信息,生成数据读取代理的指令。
可选地,生成信息还包括:更新频率参数信息、同步更新参数信息和最大延迟等待时间参数信息;更新频率参数信息用于指示相邻两次数据读取动作间的时间间隔;同步更新参数信息用于指示是否依照更新频率参数信息设定的时间间隔进行数据读取;最大延迟等待时间参数信息用于指示在一次数据读取动作未获得业务数据的情况下,下一数据读取动作的触发时间间隔;用于根据确定的数据更新方法信息,生成数据读取代理的指令包括:用于根据数据更新方法信息、更新频率参数信息、同步更新参数信息和最大延迟等待时间参数信息,生成数据读取代理的指令。
可选地,用于通过数据读取代理从数据库中读取业务数据的指令,包括:用于根据生成的数据读取代理的生成信息和预设的数据读取间隔参数,确定查询参数的指令;用于当数据读取动作触发时,从数据库中读取符合查询参数的业务数据的指令。
可选地,用于根据生成的数据读取代理的生成信息和数据读取间隔参数,确定查询参数的指令,包括:用于确定查询参数对应的数据读取动作是否为首次数据读取动作的指令;用于在确定是首次数据读取动作时,根据生成信息中更新方法信息中的起始值和数据读取间隔参数,确定与首次数据读取动作对应的查询参数的指令;用于在确定不是首次数据读取动作时,根据前一次数据读取动作对应的查询参数和数据读取间隔参数,确定当前数据读取动作对应的查询参数的指令。
可选地,查询参数包括参数上界和参数下界;用于根据生成信息中更新方法信息中的起始值和数据读取间隔参数,确定与首次数据读取动作对应的查询参数的指令,包括:用于根据起始值确定查询参数的参数上界的指令;用于根据查询参数的参数上界和数据读取间隔参数,确定查询参数的参数下界的指令。
可选地,查询参数包括参数上界和参数下界;用于根据前一次数据读取动作对应的查询参数和数据读取间隔参数,确定当前数据读取动作对应的查询参数的指令,包括:用于根据前一次数据读取动作对应的查询参数的参数下界,确定当前数据读取动作对应的查询参数的参数上界的指令;用于根据当前数据读取动作对应的查询参数的参数上界和数据读取间隔参数,确定当前数据读取动作对应的查询参数的参数下界的指令。
可选地,用于通过数据读取代理从数据库中读取业务数据的指令,还包括:用于在从数据库中读取符合查询参数的业务数据之后,确定当前数据读取动作读取到的业务数据的数量是否等于0的指令;用于在不等于0时,返回根据生成的数据读取代理的生成信息和数据读取间隔参数,确定查询参数的步骤继续执行,直至满足预设的终止条件后终止执行的指令;用于在等于0时,中断数据读取动作,根据最大延迟等待时间参数信息和查询参数进行业务数据的延迟读取;在最大延迟等待时间参数信息指示的时间到达时,读取符合查询参数的业务数据,恢复数据读取动作,并返回根据生成的数据读取代理的生成信息和数据读取间隔参数,确定查询参数的步骤继续执行,直至满足预设的终止条件后终止执行的指令。
可选地,用于将读取的业务数据转化为预设格式的消息并持久化存储的指令,包括:用于将业务数据形成多组日志文件的指令;用于将多组日志文件保存到日志栈中的指令;用于当检测到日志栈中存储有多组日志文件中的部分或全部时,将日志栈中存储的日志文件转化为预设格式的消息并持久化存储的指令。
需要指出,根据实施的需要,可将本发明实施例中描述的各个部件/步骤拆分为更多部件/步骤,也可将两个或多个部件/步骤或者部件/步骤的部分操作组合成新的部件/步骤,以实现本发明实施例的目的。
上述根据本发明实施例的方法可在硬件、固件中实现,或者被实现为可存储在记录介质(诸如CD ROM、RAM、软盘、硬盘或磁光盘)中的软件或计算机代码,或者被实现通过网络下载的原始存储在远程记录介质或非暂时机器可读介质中并将被存储在本地记录介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件(诸如ASIC或FPGA)的记录介质上的这样的软件处理。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件(例如,RAM、ROM、闪存等),当所述软件或计算机代码被计算机、处理器或硬件访问且执行时,实现在此描述的数据读取方法。此外,当通用计算机访问用于实现在此示出的数据读取方法的代码时,代码的执行将通用计算机转换为用于执行在此示出的数据读取方法的专用计算机。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明实施例的范围。
以上实施方式仅用于说明本发明实施例,而并非对本发明实施例的限制,有关技术领域的普通技术人员,在不脱离本发明实施例的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明实施例的范畴,本发明实施例的专利保护范围应由权利要求限定。
Claims (10)
1.一种数据读取方法,其特征在于,包括:
获取数据库的类型,其中,所述数据库用于存储待读取的业务数据;
根据所述数据库的类型和预设的配置信息,生成与所述数据库的类型对应的数据读取代理;
通过所述数据读取代理从所述数据库中读取所述业务数据;
将读取的所述业务数据转化为预设格式的消息并将读取的所述业务数据持久化存储;
所述根据所述数据库的类型和预设的配置信息,生成与所述数据库的类型对应的数据读取代理,包括:
根据所述数据库的类型和预设的配置信息,确定所述数据读取代理的生成信息,所述生成信息包括数据更新方法信息、以及更新频率参数信息、同步更新参数信息和最大延迟等待时间参数信息中至少之一;
根据所述数据更新方法信息、以及更新频率参数信息、同步更新参数信息和最大延迟等待时间参数信息中至少之一,生成所述数据读取代理;
所述数据更新方法信息中包括下列规则至少之一:用于指示读取指定时间范围内业务数据的规则、用于指示读取指定数量范围内业务数据的规则、和用于指示备份业务数据的规则。
2.根据权利要求1所述的方法,其特征在于,所述数据库类型包括下列至少之一:关系型数据库、键-值型数据库和列存储型数据库。
3.根据权利要求1所述的方法,其特征在于,
所述更新频率参数信息用于指示相邻两次数据读取动作间的时间间隔;
所述同步更新参数信息用于指示是否依照所述更新频率参数信息设定的时间间隔进行数据读取;
所述最大延迟等待时间参数信息用于指示在一次数据读取动作未获得业务数据的情况下,下一数据读取动作的触发时间间隔。
4.根据权利要求3所述的方法,其特征在于,通过所述数据读取代理从所述数据库中读取所述业务数据,包括:
根据生成的所述数据读取代理的生成信息和预设的数据读取间隔参数,确定查询参数;
当数据读取动作触发时,从所述数据库中读取符合所述查询参数的业务数据。
5.根据权利要求4所述的方法,其特征在于,根据生成的所述数据读取代理的生成信息和数据读取间隔参数,确定查询参数,包括:
确定所述查询参数对应的数据读取动作是否为首次数据读取动作;
若是首次数据读取动作,则根据所述生成信息中更新方法信息中的起始值和所述数据读取间隔参数,确定与所述首次数据读取动作对应的查询参数;
若不是首次数据读取动作,则根据前一次数据读取动作对应的所述查询参数和所述数据读取间隔参数,确定当前数据读取动作对应的查询参数。
6.根据权利要求5所述的方法,其特征在于,所述查询参数包括参数上界和参数下界;
所述根据所述生成信息中更新方法信息中的起始值和所述数据读取间隔参数,确定与所述首次数据读取动作对应的查询参数,包括:
根据所述起始值确定所述查询参数的参数上界;
根据所述查询参数的参数上界和所述数据读取间隔参数,确定所述查询参数的参数下界。
7.根据权利要求5所述的方法,其特征在于,所述查询参数包括参数上界和参数下界;
所述根据前一次数据读取动作对应的所述查询参数和所述数据读取间隔参数,确定当前数据读取动作对应的查询参数,包括:
根据所述前一次数据读取动作对应的查询参数的参数下界,确定当前数据读取动作对应的所述查询参数的参数上界;
根据当前数据读取动作对应的所述查询参数的参数上界和所述数据读取间隔参数,确定当前数据读取动作对应的所述查询参数的参数下界。
8.根据权利要求4所述的方法,其特征在于,所述通过所述数据读取代理从所述数据库中读取所述业务数据,还包括:
在所述从所述数据库中读取符合所述查询参数的业务数据之后,确定当前数据读取动作读取到的所述业务数据的数量是否等于0;
若不等于0,则返回根据生成的所述数据读取代理的生成信息和数据读取间隔参数,确定查询参数的步骤继续执行,直至满足预设的终止条件后终止执行;
若等于0,则中断数据读取动作,根据最大延迟等待时间参数信息和所述查询参数进行业务数据的延迟读取;在所述最大延迟等待时间参数信息指示的时间到达时,读取符合所述查询参数的业务数据,恢复所述数据读取动作,并返回根据生成的所述数据读取代理的生成信息和数据读取间隔参数,确定查询参数的步骤继续执行,直至满足预设的终止条件后终止执行。
9.根据权利要求1所述的方法,其特征在于,将读取的所述业务数据转化为预设格式的消息并将读取的所述业务数据持久化存储,包括:
将所述业务数据形成多组日志文件;
将所述多组日志文件保存到日志栈中;
当检测到所述日志栈中存储有所述多组日志文件中的部分或全部时,将所述日志栈中存储的日志文件转化为预设格式的消息并持久化存储。
10.一种计算机可读介质,其特征在于,所述计算机可读介质存储有:用于获取数据库的类型的指令,其中,所述数据库用于存储待读取的业务数据;用于根据所述数据库的类型和预设的配置信息,生成与所述数据库的类型对应的数据读取代理的指令;用于通过所述数据读取代理从所述数据库中读取所述业务数据的指令;用于将读取的所述业务数据转化为预设格式的消息并将读取的所述业务数据持久化存储的指令,所述用于根据所述数据库的类型和预设的配置信息,生成与所述数据库的类型对应的数据读取代理的指令,包括:用于根据所述数据库的类型和预设的配置信息,确定所述数据读取代理的生成信息,所述生成信息包括数据更新方法信息、以及更新频率参数信息、同步更新参数信息和最大延迟等待时间参数信息中至少之一的指令;和用于根据所述数据更新方法信息、以及更新频率参数信息、同步更新参数信息和最大延迟等待时间参数信息中至少之一,生成所述数据读取代理的指令;所述数据更新方法信息中包括下列规则至少之一:用于指示读取指定时间范围内业务数据的规则、用于指示读取指定数量范围内业务数据的规则、和用于指示备份业务数据的规则。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811216580.2A CN109542917B (zh) | 2018-10-18 | 2018-10-18 | 数据读取方法及计算机可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811216580.2A CN109542917B (zh) | 2018-10-18 | 2018-10-18 | 数据读取方法及计算机可读介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109542917A CN109542917A (zh) | 2019-03-29 |
CN109542917B true CN109542917B (zh) | 2021-06-29 |
Family
ID=65844445
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811216580.2A Active CN109542917B (zh) | 2018-10-18 | 2018-10-18 | 数据读取方法及计算机可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109542917B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110298001B (zh) * | 2019-05-30 | 2021-11-09 | 北京奇艺世纪科技有限公司 | 日志数据包的获取方法和装置及计算机可读存储介质 |
CN114676117B (zh) * | 2022-05-27 | 2022-08-16 | 成都明途科技有限公司 | 一种岗位数据存储方法、装置及岗位机器人 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103488765A (zh) * | 2013-09-28 | 2014-01-01 | 雷虹 | 一种代理数据库的访问驱动及其数据访问方法 |
CN103729373A (zh) * | 2012-10-15 | 2014-04-16 | 北京新媒传信科技有限公司 | 一种数据库代理方法和装置 |
CN104008135A (zh) * | 2014-05-07 | 2014-08-27 | 南京邮电大学 | 一种多源异构数据库融合系统及其数据查询方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1146821C (zh) * | 2000-02-21 | 2004-04-21 | 国际商业机器公司 | 面向用户的数据库查询方法及系统 |
-
2018
- 2018-10-18 CN CN201811216580.2A patent/CN109542917B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103729373A (zh) * | 2012-10-15 | 2014-04-16 | 北京新媒传信科技有限公司 | 一种数据库代理方法和装置 |
CN103488765A (zh) * | 2013-09-28 | 2014-01-01 | 雷虹 | 一种代理数据库的访问驱动及其数据访问方法 |
CN104008135A (zh) * | 2014-05-07 | 2014-08-27 | 南京邮电大学 | 一种多源异构数据库融合系统及其数据查询方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109542917A (zh) | 2019-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107038162B (zh) | 基于数据库日志的实时数据查询方法和系统 | |
CN110321387B (zh) | 数据同步方法、设备及终端设备 | |
CN107220142B (zh) | 执行数据恢复操作的方法及装置 | |
CN109918349B (zh) | 日志处理方法、装置、存储介质和电子装置 | |
CN109391646B (zh) | 消息中间件消息获取方法、装置和系统 | |
CN107515874B (zh) | 一种分布式非关系型数据库中同步增量数据的方法与设备 | |
CN104809201A (zh) | 一种数据库同步的方法和装置 | |
CN111045806A (zh) | 延迟消息队列实现方法以及系统 | |
CN109542917B (zh) | 数据读取方法及计算机可读介质 | |
CN110572464A (zh) | 底层资源状态同步方法、装置、云平台系统及存储介质 | |
CN111277639A (zh) | 一种保持数据一致性的方法和装置 | |
US8600990B2 (en) | Interacting methods of data extraction | |
CN111210340A (zh) | 一种自动任务处理方法、装置、服务器及存储介质 | |
CN103645968B (zh) | 一种浏览器状态复原方法和装置 | |
CN110866068B (zh) | 一种基于hdfs的公告数据存储方法及其装置 | |
CN110532305A (zh) | 一种业务数据割接方法及系统 | |
CN110888739B (zh) | 延迟任务的分布式处理方法与装置 | |
CN112433757A (zh) | 一种确定接口调用关系的方法和装置 | |
CN108717438B (zh) | 一种链式数据状态采集系统及方法 | |
CN105095224A (zh) | 一种在移动通信网络中进行olap分析的方法、装置和系统 | |
CN107563942B (zh) | 一种物流数据批量处理方法、物流处理系统以及处理装置 | |
CN116010388A (zh) | 数据校验方法、数据采集服务端及数据校验系统 | |
CN114722045A (zh) | 时间序列数据的存储方法及装置 | |
JP2008108046A (ja) | トランザクション処理システムおよびトランザクション処理方法、ならびにそのプログラム | |
CN113672307A (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 |