CN110019496B - 数据读写方法和系统 - Google Patents

数据读写方法和系统 Download PDF

Info

Publication number
CN110019496B
CN110019496B CN201710626889.8A CN201710626889A CN110019496B CN 110019496 B CN110019496 B CN 110019496B CN 201710626889 A CN201710626889 A CN 201710626889A CN 110019496 B CN110019496 B CN 110019496B
Authority
CN
China
Prior art keywords
database
read
slave
user operation
operation request
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
CN201710626889.8A
Other languages
English (en)
Other versions
CN110019496A (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.)
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201710626889.8A priority Critical patent/CN110019496B/zh
Publication of CN110019496A publication Critical patent/CN110019496A/zh
Application granted granted Critical
Publication of CN110019496B publication Critical patent/CN110019496B/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/217Database tuning
    • 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

Landscapes

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

Abstract

本公开提供了一种数据读写方法,应用于具有主数据库和从数据库架构的数据库系统,所述主数据库中的数据变更能够同步到所述从数据库中,所述方法包括:接收用户操作请求;在所述用户操作请求为读取所述数据库系统的第一表中的第一内容时,判断所述第一表是否为在主数据库和从数据库的同步过程中有延迟的表;在所述第一表为所述有延迟的表时,从所述主数据库中读取所述第一内容,否则,从所述从数据库中读取所述第一内容。

Description

数据读写方法和系统
技术领域
本公开涉及计算机技术领域,更具体地,涉及一种数据读写方法和一种数据读写系统。
背景技术
随着计算机技术的快速发展,数据库中的数据量越来越大。为了提高读写效率,现有技术提供了一种读写分离的方法。读写分离,一般指的是数据库服务器具有主从部署架构的前提下,让主数据库处理写操作,而从数据库处理读操作。
在实现本发明构思的过程中,发明人发现现有技术中至少存在如下问题,读从数据库时的数据延迟问题,即,写入到主数据库中的数据不能及时同步到从数据库中,导致读从数据库时可能会出现数据延迟问题,例如,读到旧数据,或者读不到数据等。
发明内容
有鉴于此,本公开提供了一种自适应的读写分离的数据读写方法和系统。
本公开的一个方面提供了一种数据读写方法,应用于具有主数据库和从数据库架构的数据库系统,所述主数据库中的数据变更能够同步到所述从数据库中,所述方法包括:接收用户操作请求,在所述用户操作请求为读取所述数据库系统的第一表中的第一内容时,判断所述第一表是否为在主数据库和从数据库的同步过程中有延迟的表,在所述第一表为所述有延迟的表时,从所述主数据库中读取所述第一内容,否则,从所述从数据库中读取所述第一内容。
根据本公开的实施例,上述方法还包括:建立延迟列表,所述延迟列表中存储有当前时刻主数据库和从数据库在同步过程中有延迟的表的表标识。
根据本公开的实施例,上述判断所述第一表是否为在主数据库和从数据库的同步过程中有延迟的表,包括:判断所述第一表的表标识是否存在于所述延迟列表中,若存在,则表示所述第一表为所述有延迟的表。
根据本公开的实施例,上述方法还包括:在所述用户操作请求为数据库事务请求时,在所述主数据库中执行所述数据库事务请求的相关操作。
根据本公开的实施例,上述方法还包括:根据业务需求,判断所述用户操作请求是否需要读写分离,在所述用户操作请求需要读写分离时,且所述用户操作请求为读取所述数据库系统的第一表中的第一内容时,判断所述第一表是否为在主数据库和从数据库的同步过程中有延迟的表。
本公开的另一个方面提供了一种数据读写系统,应用于具有主数据库和从数据库架构的数据库系统,所述主数据库中的数据变更能够同步到所述从数据库中,所述系统包括:接收模块,接收用户操作请求,第一判断模块,在所述用户操作请求为读取所述数据库系统的第一表中的第一内容时,判断所述第一表是否为在主数据库和从数据库的同步过程中有延迟的表,读取模块,在所述第一表为所述有延迟的表时,从所述主数据库中读取所述第一内容,否则,从所述从数据库中读取所述第一内容。
根据本公开的实施例,上述系统还包括:建立模块,建立延迟列表,所述延迟列表中存储有当前时刻主数据库和从数据库在同步过程中有延迟的表的表标识。
根据本公开的实施例,上述判断所述第一表是否为在主数据库和从数据库的同步过程中有延迟的表,包括:判断所述第一表的表标识是否存在与所述延迟列表中,若存在,则表示所述第一表为所述有延迟的表。
根据本公开的实施例,上述系统还包括:数据库事务操作模块,在所述用户操作请求为数据库事务请求时,在所述主数据库中执行所述数据库事务请求的相关操作。
根据本公开的实施例,上述系统还包括第二判断模块,其中:所述第二判断模块,根据业务需求,判断所述用户操作请求是否需要读写分离。所述第一判断模块,在所述用户操作请求需要读写分离时,且所述用户操作请求为读取所述数据库系统的第一表中的第一内容时,判断所述第一表是否为在主数据库和从数据库的同步过程中有延迟的表。
本公开的另一方面提供了一种数据读写系统,包括:一个或多个处理器,存储装置,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上所述的方法。
本公开的另一方面提供了一种计算机可读介质,其上存储有可执行指令,该指令被处理器执行时使处理器实现如上所述的方法。
本公开的另一方面提供了一种计算机程序,所述计算机程序包括计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。
根据本公开的实施例,可以至少部分地减轻读从数据库时的数据延迟问题,并因此可以实现具有较高读写效率的技术效果。
附图说明
通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了根据本公开实施例的可以应用数据读写方法的示例性系统架构;
图2示意性示出了根据本公开实施例的数据读写方法的流程图;
图3示意性示出了根据本公开另一实施例的数据读写方法的流程图;
图4示意性示出了根据本公开实施例的数据读写系统的框图;
图5示意性示出了根据本公开实施例的适于实现数据读写的计算机系统的方框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。这里使用的词语“一”、“一个(种)”和“该”等也应包括“多个”、“多种”的意思,除非上下文另外明确指出。此外,在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
本公开的实施例提供了一种数据读写方法以及能够应用该方法的数据读写系统。可应用于具有主数据库和从数据库架构的数据库系统,在该架构下,主数据库中的数据变更能够同步到所述从数据库中。该方法包括:接收用户操作请求,在用户操作请求为读取数据库系统的第一表中的第一内容时,判断第一表是否为在主数据库和从数据库的同步过程中有延迟的表,在第一表为有延迟的表时,从主数据库中读取第一内容,否则,从从数据库中读取第一内容。
图1示意性示出了根据本公开实施例的可以应用数据读写方法的示例性系统架构100。
如图1所示,根据该实施例的系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。
终端设备101、102、103可以是具有显示屏并且支持数据传输和读写的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对用户利用终端设备101、102、103所浏览的网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的用户请求等数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息、或数据等)反馈给终端设备。
需要说明的是,本公开实施例所提供的数据读写方法一般可以由服务器105执行。相应地,本公开实施例所提供的数据读写系统一般可以设置于服务器105中。本公开实施例所提供的数据读写方法也可以由不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群执行。相应地,本公开实施例所提供的数据读写系统也可以设置于不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群中。或者,本公开实施例所提供的数据读写方法也可以由终端设备101、102、或103执行,或者也可以由不同于终端设备101、102或103其他终端设备执行。相应地,本公开实施例所提供的数据读写系统也可以设置于终端设备101、102、或103中,或设置于不同于终端设备101、102、或103的其他终端设备中。
例如,数据库系统存储在一个或者多个数据库服务器中,终端设备101、102、或103中的任意一个(例如,终端设备101,但不限于此)接收用户操作请求。然后,终端设备101可以在本地执行本公开实施例所提供的数据读写方法,以确定是从数据库系统的主数据库还是从数据库中读取数据。或者终端设备101在接收到用户操作请求后,将该操作请求发送到其他终端设备、服务器、或服务器集群,并由接收该操作请求的其他终端设备、服务器、或服务器集群来执行本公开实施例所提供的数据读写方法,以确定是从数据库系统的主数据库还是从数据库中读取数据。或者终端设备101在接收到用户操作请求后,将该操作请求发送到任意一个存储有该数据库系统的数据库服务器中,由接收该操作请求的数据库服务器来执行本公开实施例所提供的数据读写方法。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面结合图1的系统架构,参考图2来描述根据本公开示例性实施方式的数据读写方法。需要注意的是,上述系统架构仅是为了便于理解本公开的精神和原理而示出,本公开的实时方式在此方面不受任何限制。相反,本公开的实施方式可以应用于适用的系统架构。
本公开实施例提供了一种数据读写方法。
图2示意性示出了根据本公开实施例的数据读写方法的流程图。
如图2所示,该方法包括操作S201~S204,该方法可以应用于具有主数据库和从数据库架构的数据库系统,其中,主数据库中的数据变更能够同步到从数据库中。
根据本公开实施例,一般在主数据库和从数据库架构下,可以实现数据的读写分离,即,主数据库处理写操作(例如,增、改、删等操作),而从数据库处理读操作(例如,查询等操作)。主数据库和从数据库之间可以通过数据库复制把主数据的数据变更同步到从数据库中。这种主从数据库的架构极大地缓解了所有操作都在单个数据库上的压力,提高了并发性能和读写效率。
具体地,在操作S201,接收用户操作请求。
根据本公开实施例,用户操作请求可以是针对数据库系统的操作请求。例如可以包括对数据库系统进行写操作的请求,也可以是对数据库系统进行读操作的请求,还可以是数据库事务请求等。
在操作S202,在用户操作请求为读取数据库系统的第一表中的第一内容时,判断该第一表是否为在主数据库和从数据库的同步过程中有延迟的表。
在主数据库中的数据有增加或者修改或者删除等变更时,从数据库中的数据的同步更新可能会出现延迟情况。例如,在T1时刻,主数据库中的A数据出现变更,那么可能在之后的T2时刻,从数据库中的A数据才会实现同步变更。如果,用户在T1时刻之后,T2时刻之前读取该A数据,可能会造成用户无法从从数据库中读取到变更后的A数据,或者无法获取到A数据。导致响应于用户的读取操作,向用户返回的数据为错误的数据,甚至返回结果为空。
为尽量避免上述由于从数据库延迟情况造成的读取操作失败,在本公开实施例中,当用户的操作请求为读取数据库系统的第一表中的第一内容时,先判断用户想要获取的第一表是否为在主数据库和从数据库的同步过程中有延迟的表。例如,用户请求读取的内容所属的第一表在主数据库中有更新操作,但是从数据库中还没有相应的同步更新,则判断该第一表属于在主数据库和从数据库的同步过程中有延迟的表。
根据本公开实施例,该方法还包括建立延迟列表,其中,延迟列表中存储有当前时刻主数据库和从数据库在同步过程中有延迟的表的表标识。
例如,数据库系统中的表具有唯一对应的表标识,则延迟列表中可以仅存储当前时刻有延迟的表的表标识。而判断第一表是否为在主数据库和从数据库的同步过程中有延迟的表则可以包括,判断第一表的表标识是否存在于延迟列表中,若存在,则表示该第一表为有延迟的表,否则,该第一表为未延迟的表。
可以理解,在一些实施例中,延迟列表中还可以存储数据库系统中全部表的表标识以及每个表对应的延迟状态,例如,数据库系统中有100个表,则延迟列表中可以存储该100个表的表标识以及每个表当前时刻的延迟状态,例如表1当前为未延迟状态,表2当前为延迟状态等。
根据本公开实施例,获取当前时刻主数据库和从数据库在同步过程中有延迟的表可以根据不同的数据库类型采用不同的获取工具。例如,当数据库类型为Mysql数据库,则可以借用Maatkit工具包实现当前时刻有延迟的表的表标识的采集。
在本公开实施例中,延迟列表可以是实时更新,通过不停地监控主从数据库的同步状态,实时采集有延迟的表的表标识更新该延迟列表,以保证延迟列表中的表标识所指向的表在当前时刻都存在主从数据库的同步延迟情况。
可以理解,上述建立延迟列表仅是本公开实施例的一种判断第一表是否是有延迟的表的方式,本公开还可以包括其他判断方法,例如,判断主数据库中的第一表在预设时间内是否有变更,如果没有变更,则表示该第一表没有延迟等,本领域技术人员可以根据实际情况以及数据库类型选择判断相应的判断方法。
本公开实施例通过建立延迟列表,可以快速准确地确定用户请求的第一表是否为有延迟的表,提高校验速度。
在操作S203,在第一表为有延迟的表时,从主数据库中读取第一内容。
根据本公开实施例,当第一表为有延迟的表时,则表示用户想用读取的内容还没有同步到从数据库中,因此,为了使用户能够读到准确的第一内容,则请求主数据库处理该读取操作。
在操作S204,在第一表不是有延迟的表时,从从数据库中读取第一内容。
根据本公开实施例,当第一表为未延迟的表时,则表示用户想要读取的内容在主数据和从数据库中是一样的,因此,为了减轻主数据库的负担,提高数据库读写效率,则请求从数据库处理该读取操作。
本公开的实施例提供了一种自适应的读写分离方法,通过判断用户请求读取的第一内容所属的第一表是否为有延迟的表,控制该读取操作的处理对象,当该第一表为有延迟的表时,请求主数据库处理该读取操作,否则,请求从数据库处理该读取操作,自适应地实现了读写分离,在减轻主数据库的负担,提高数据库读写效率的同时,还可以避免读从数据库时的延迟情况,为用户提供准确的读取数据。
下面参考图3,结合具体实施例对图2所示的方法做进一步说明。
图3示意性示出了根据本公开另一实施例的数据读写方法的流程图。
如图3所示,该方法包括操作S201~S204以及操作S301~S303。其中,操作S201~S204与上述参考图2描述的方法相同或类似,在此不再赘述。
在操作S301,判断用户操作请求是否为数据库事务请求。
根据本公开实施例,数据库事务请求包括一系列操作请求,该些操作请求具有一致性,要么完全地执行,要么完全地不执行。因为数据库事务请求具有其独特性,因此在处理上与普通请求不同。在本公开实施例中,当用户操作请求为数据库事务请求时,执行操作S303,否则执行操作S302。
在操作S302,请求主数据库处理。即,主数据响应用户操作请求,例如在主数据中读取数据或者写入数据。
在本公开实施例中,当用户操作请求为数据库事务请求时,在主数据库中执行数据库事务请求的相关操作。因为数据库事务请求具有一致性,为了给用户提供更好的服务和体验,本公开实施例,将用户请求为数据库事务请求的请求交托给主数据库进行处理。避免在从数据库中读不到数据,无法执行数据库事务中的某一操作请求时,导致整个事务请求失败。
可以理解,在本公开实施例中,当用户操作请求为写操作请求时,可以直接请求主数据库处理该写操作请求。
在操作S303,判断用户操作是否需要读写分离。
根据本公开实施例,在所述用户请求为非数据库事务请求时,根据业务需求判断该用户操作请求是否需要读写分离。
在本公开实施例中,用户可以根据业务需求设定何种操作请求需要读写分离。例如,容错率低的业务的相关请求则设置为不需要进行读写分离,容错率高的业务的相关请求则可以设置为需要进行读写分离。或者,读取任务量大的请求可以设置为需要读写分离,读取任务量小的请求可以设置为不需要读写分离。可以理解,上述举例仅为帮助理解,本公开不限制具体地设定条件,用户可以根据实际情况判断是否需要进行读写分离。
在用户操作请求不需要读写分离时,执行操作S302,请求主数据库处理该用户操作请求。
在用户操作请求需要读写分离时,执行操作S202。即,在用户操作请求需要读写分离时,且用户操作请求为读取数据库系统的第一表中的第一内容时,判断该第一表是否为在主数据库和从数据库的同步过程中有延迟的表。
根据本公开实施例,还可以设置请求标识,非数据库事务请求中加入请求标识,请求标识例如包括需要读写分离和不需要读写分离,对于请求标识为不需要读写分离的用户操作请求,执行操作S302,对于请求标识为需要读写分离的用户操作请求,执行操作S202。
在本公开实施例中,接收到用户操作请求时,先判断该用户操作请求是否为数据库事务请求,在该用户操作请求为数据库请求时,直接请求主数据库处理该请求,否则继续判断该用户操作请求是否需要读写分离,在该用户操作请求不需要读写分离的情况下,直接请求主数据库处理该请求,在该请求需要读写分离时,并且为读操作时,判断该读操作指向的第一表是否为有延迟的表,若是,则请求主数据库处理,否则,请求从数据库处理。通过本公开实施例的数据读写方法,可以为用户提供更好的服务,以速度较快并且准确率较高的返回结果提高用户体验,减轻主数据库负担,提高数据读取准确度。
可以理解,上述参考图2~图3描述的数据读写方法仅是示例性的实施例,也可以不按照图示的顺序执行图示的操作,或者一些操作可以并行地执行,只要其能实现本公开的目的即可。
图4示意性示出了根据本公开实施例的数据读写系统400的框图。
如图4所示,数据读写系统400包括接收模块410、第一判读模块420、读取模块430、建立模块440、数据库事务操作模块450以及第二判断模块460。该数据读写系统400可以执行上面参考图2~图3描述的方法,以实现数据的读写。
具体地,接收模块410接收用户操作请求。根据本公开实施例,接收模块410例如可以执行上文参考图2描述的操作S201,在此不再赘述。
第一判读模块420在用户操作请求为读取数据库系统的第一表中的第一内容时,判断该第一表是否为在主数据库和从数据库的同步过程中有延迟的表。根据本公开实施例,第一判读模块420例如可以执行上文参考图2描述的操作S202,在此不再赘述。
读取模块430在第一表为有延迟的表时,从主数据库中读取第一内容,否则,从从数据库中读取第一内容。根据本公开实施例,读取模块430例如可以执行上文参考图2描述的操作S203和S204,在此不再赘述。
建立模块440建立延迟列表,其中,延迟列表中存储有当前时刻主数据库和从数据库在同步过程中有延迟的表的表标识。其中,判断第一表是否为在主数据库和从数据库的同步过程中有延迟的表则可以包括,判断第一表的表标识是否存在于延迟列表中,若存在,则表示该第一表为有延迟的表,否则,该第一表为未延迟的表。
数据库事务操作模块450在用户操作请求为数据库事务请求时,在主数据库中执行数据库接收模块事务请求的相关操作。根据本公开实施例,数据库事务操作模块450例如可以执行上文参考图3描述的操作S301和S302,在此不再赘述。
第二判断模块460根据业务需求判断该用户操作请求是否需要读写分离,以及第一判断模块420还用于在所述用户操作请求需要读写分离时,且所述用户操作请求为读取所述数据库系统的第一表中的第一内容时,判断所述第一表是否为在主数据库和从数据库的同步过程中有延迟的表。
本公开的实施例提供了一种自适应的读写分离系统,通过判断用户请求读取的第一内容所属的第一表是否为有延迟的表,控制该读取操作的处理对象,当该第一表为有延迟的表时,请求主数据库处理该读取操作,否则,请求从数据库处理该读取操作,自适应地实现了读写分离,在减轻主数据库的负担,提高数据库读写效率的同时,还可以避免读从数据库时的延迟情况,为用户提供准确的读取数据。
可以理解的是,接收模块410、第一判读模块420、读取模块430、建立模块440、数据库事务操作模块450以及第二判断模块460可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本发明的实施例,接收模块410、第一判读模块420、读取模块430、建立模块440、数据库事务操作模块450以及第二判断模块460中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以以对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式的适当组合来实现。或者,接收模块410、第一判读模块420、读取模块430、建立模块440、数据库事务操作模块450以及第二判断模块460中的至少一个可以至少被部分地实现为计算机程序模块,当该程序被计算机运行时,可以执行相应模块的功能。
图5示意性示出了根据本公开实施例的适于实现数据读写的计算机系统的方框图。图5示出的计算机系统仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图5所示,根据本公开实施例的计算机系统500包括处理器501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。处理器501例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器510还可以包括用于缓存用途的板载存储器。处理器510可以包括用于执行参考图2~图3描述的根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 503中,存储有系统500操作所需的各种程序和数据。处理器501、ROM 502以及RAM 503通过总线504彼此相连。处理器501通过执行ROM 502和/或RAM 503中的程序来执行以上参考图2~图3描述的数据读写方法的各种操作。需要注意,所述程序也可以存储在除ROM 502和RAM 503以外的一个或多个存储器中。处理器501也可以通过执行存储在所述一个或多个存储器中的程序来执行以上参考图2~图3描述的数据读写方法的各种操作。
根据本公开的实施例,系统500还可以包括输入/输出(I/O)接口505,输入/输出(I/O)接口505也连接至总线504。系统500还可以包括连接至I/O接口505的以下部件中的一项或多项:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
根据本公开的实施例,上文参考流程图描述的方法可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被处理器501执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
需要说明的是,本公开所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。根据本公开的实施例,计算机可读介质可以包括上文描述的ROM 502和/或RAM 503和/或ROM 502和RAM 503以外的一个或多个存储器。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
作为另一方面,本公开还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备执行以下操作:
接收用户操作请求,在用户操作请求为读取所述数据库系统的第一表中的第一内容时,判断第一表是否为在主数据库和从数据库的同步过程中有延迟的表,在该第一表为有延迟的表时,从主数据库中读取所述第一内容,否则,从从数据库中读取所述第一内容。
根据本公开的实施例,上述方法还包括:建立延迟列表,延迟列表中存储有当前时刻主数据库和从数据库在同步过程中有延迟的表的表标识。
根据本公开的实施例,上述判断第一表是否为在主数据库和从数据库的同步过程中有延迟的表,包括:判断第一表的表标识是否存在于延迟列表中,若存在,则表示该第一表为有延迟的表。
根据本公开的实施例,上述方法还包括:在用户操作请求为数据库事务请求时,在主数据库中执行数据库事务请求的相关操作。
根据本公开的实施例,上述方法还包括:根据业务需求,判断用户操作请求是否需要读写分离,在用户操作请求需要读写分离时,且用户操作请求为读取数据库系统的第一表中的第一内容时,判断第一表是否为在主数据库和从数据库的同步过程中有延迟的表。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。

Claims (10)

1.一种数据读写方法,应用于具有主数据库和从数据库架构的数据库系统,所述主数据库中的数据变更能够同步到所述从数据库中,所述方法包括:
接收用户操作请求;
在所述用户操作请求为读取所述数据库系统的第一表中的第一内容时,判断所述第一表是否为在主数据库和从数据库的同步过程中有延迟的表;
在所述第一表为所述有延迟的表时,从所述主数据库中读取所述第一内容,否则,从所述从数据库中读取所述第一内容;
所述方法还包括:
在所述数据库系统中预先设定不同的业务需求与读写分离操作的对应关系;
根据所述业务需求,基于所述对应关系判断所述用户操作请求是否需要读写分离;
在所述用户操作请求需要读写分离时,且所述用户操作请求为读取所述数据库系统的第一表中的第一内容时,判断所述第一表是否为在主数据库和从数据库的同步过程中有延迟的表。
2.根据权利要求1所述的方法,还包括:
建立延迟列表,所述延迟列表中存储有当前时刻主数据库和从数据库在同步过程中有延迟的表的表标识。
3.根据权利要求2所述的方法,其中,所述判断所述第一表是否为在主数据库和从数据库的同步过程中有延迟的表,包括:
判断所述第一表的表标识是否存在于所述延迟列表中,若存在,则表示所述第一表为所述有延迟的表。
4.根据权利要求1所述的方法,还包括:
在所述用户操作请求为数据库事务请求时,在所述主数据库中执行所述数据库事务请求的相关操作。
5.一种数据读写系统,应用于具有主数据库和从数据库架构的数据库系统,所述主数据库中的数据变更能够同步到所述从数据库中,所述系统包括:
接收模块,接收用户操作请求;
第一判断模块,在所述用户操作请求为读取所述数据库系统的第一表中的第一内容时,判断所述第一表是否为在主数据库和从数据库的同步过程中有延迟的表;
读取模块,在所述第一表为所述有延迟的表时,从所述主数据库中读取所述第一内容,否则,从所述从数据库中读取所述第一内容;
所述数据库系统还包括第二判断模块,在所述数据库系统中预先设定不同的业务需求与读写分离操作的对应关系,其中:
所述第二判断模块根据所述业务需求,基于所述对应关系判断所述用户操作请求是否需要读写分离;
所述第一判断模块,在所述用户操作请求需要读写分离时,且所述用户操作请求为读取所述数据库系统的第一表中的第一内容时,判断所述第一表是否为在主数据库和从数据库的同步过程中有延迟的表。
6.根据权利要求5所述的系统,还包括:
建立模块,建立延迟列表,所述延迟列表中存储有当前时刻主数据库和从数据库在同步过程中有延迟的表的表标识。
7.根据权利要求6所述的系统,其中,所述判断所述第一表是否为在主数据库和从数据库的同步过程中有延迟的表,包括:
判断所述第一表的表标识是否存在与所述延迟列表中,若存在,则表示所述第一表为所述有延迟的表。
8.根据权利要求5所述的系统,还包括:
数据库事务操作模块,在所述用户操作请求为数据库事务请求时,在所述主数据库中执行所述数据库事务请求的相关操作。
9.一种数据读写系统,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现根据权利要求1~4中任一项所述的方法。
10.一种计算机可读介质,其上存储有可执行指令,该指令被处理器执行时使处理器实现根据权利要求1~4中任一项所述的方法。
CN201710626889.8A 2017-07-27 2017-07-27 数据读写方法和系统 Active CN110019496B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710626889.8A CN110019496B (zh) 2017-07-27 2017-07-27 数据读写方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710626889.8A CN110019496B (zh) 2017-07-27 2017-07-27 数据读写方法和系统

Publications (2)

Publication Number Publication Date
CN110019496A CN110019496A (zh) 2019-07-16
CN110019496B true CN110019496B (zh) 2021-06-29

Family

ID=67185993

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710626889.8A Active CN110019496B (zh) 2017-07-27 2017-07-27 数据读写方法和系统

Country Status (1)

Country Link
CN (1) CN110019496B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110489092B (zh) * 2019-08-27 2022-08-16 四川长虹电器股份有限公司 一种数据库读写分离架构下读取数据延迟问题的解决方法
CN110781214A (zh) * 2019-09-26 2020-02-11 金蝶软件(中国)有限公司 数据库读写方法、装置、计算机设备和存储介质
CN112951437B (zh) * 2019-12-11 2023-08-08 北京懿医云科技有限公司 医疗数据管理方法、装置、存储介质与电子设备
CN113094431A (zh) * 2021-03-30 2021-07-09 北京达佳互联信息技术有限公司 读写分离方法、装置及服务器
CN113760934B (zh) * 2021-09-08 2024-04-12 福建天泉教育科技有限公司 一种数据读取方法及终端

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102591964A (zh) * 2011-12-30 2012-07-18 北京新媒传信科技有限公司 数据读写分离机制的实现方法和装置
CN104899218A (zh) * 2014-03-06 2015-09-09 腾讯科技(深圳)有限公司 数据读写方法及数据读写装置
CN106874281A (zh) * 2015-12-11 2017-06-20 北京新媒传信科技有限公司 实现数据库读写分离的方法和装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102053982B (zh) * 2009-11-02 2017-03-01 阿里巴巴集团控股有限公司 一种数据库信息管理方法和设备
CN103853748A (zh) * 2012-11-29 2014-06-11 天津书生投资有限公司 一种数据库同步方法
US9461973B2 (en) * 2014-03-19 2016-10-04 Bluefin Payment Systems, LLC Systems and methods for decryption as a service
US10268743B2 (en) * 2015-06-19 2019-04-23 Sap Se Distributed database transaction protocol
CN105138469B (zh) * 2015-08-28 2018-03-16 北京腾凌科技有限公司 一种数据读写方法以及主板
CN106372115A (zh) * 2016-08-23 2017-02-01 成都乾威科技有限公司 一种数据读写方法、系统及数据库系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102591964A (zh) * 2011-12-30 2012-07-18 北京新媒传信科技有限公司 数据读写分离机制的实现方法和装置
CN104899218A (zh) * 2014-03-06 2015-09-09 腾讯科技(深圳)有限公司 数据读写方法及数据读写装置
CN106874281A (zh) * 2015-12-11 2017-06-20 北京新媒传信科技有限公司 实现数据库读写分离的方法和装置

Also Published As

Publication number Publication date
CN110019496A (zh) 2019-07-16

Similar Documents

Publication Publication Date Title
CN110019496B (zh) 数据读写方法和系统
CN109408205B (zh) 基于hadoop集群的任务调度方法和装置
CN110262807B (zh) 集群创建进度日志采集系统、方法和装置
CN107656748B (zh) 应用发布的方法和装置
US20190258534A1 (en) Message oriented middleware with integrated rules engine
US20200004464A1 (en) Method and apparatus for storing data
CN111125107A (zh) 数据处理方法、装置、电子设备和介质
CN112597126A (zh) 一种数据迁移方法和装置
CN111338834B (zh) 数据存储方法和装置
CN107347093B (zh) 用于分布式服务器系统的配置方法和装置
CN107220375B (zh) 数据读写方法和服务器
CN109597697B (zh) 一种资源撮合处理方法及装置
US11157690B2 (en) Techniques for asynchronous execution of computationally expensive local spreadsheet tasks
US20210185109A1 (en) Page presentation method and system, computer system, and computer readable medium
CN112948138A (zh) 一种处理消息的方法和装置
CN116302271A (zh) 一种页面展示方法、装置及电子设备
CN113076175B (zh) 用于虚拟机的内存共享方法及装置
US20190097875A1 (en) Information transmission, sending, and acquisition method and device
CN114780361A (zh) 日志生成方法、装置、计算机系统及可读存储介质
CN112688982B (zh) 一种用户请求处理方法和装置
CN113781154A (zh) 一种信息回滚方法、系统、电子设备及存储介质
CN113448578A (zh) 页面数据处理方法、处理系统、电子设备和可读存储介质
CN112988604A (zh) 对象测试方法、测试系统、电子设备及可读存储介质
CN113779122A (zh) 导出数据的方法和装置
CN109213815B (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