CN102741843A - 从数据库中读取数据的方法及装置 - Google Patents
从数据库中读取数据的方法及装置 Download PDFInfo
- Publication number
- CN102741843A CN102741843A CN2011800040802A CN201180004080A CN102741843A CN 102741843 A CN102741843 A CN 102741843A CN 2011800040802 A CN2011800040802 A CN 2011800040802A CN 201180004080 A CN201180004080 A CN 201180004080A CN 102741843 A CN102741843 A CN 102741843A
- Authority
- CN
- China
- Prior art keywords
- data
- information
- cache node
- tables
- message queue
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种从数据库中读取数据的方法及装置,涉及数据库,实现了缓存的实时更新,并且降低了整个应用系统开发的复杂性。本发明的方法包括:根据缓存节点需要缓存的数据内容,为所述需要缓存的数据内容建立数据读取控制表和创建消息队列;当应用程序更新数据库中的数据时,更新数据的数据表对应的触发器,将所述数据表的更新数据信息和所述数据表需要缓存的缓存节点标识,写入到所述数据表对应的消息队列中;缓存节点根据所述缓存节点标识读取所述缓存节点对应的消息队列,并根据所述更新数据信息更新所述缓存节点中的数据。本发明的实施例主要用于缓存系统从数据库读取数据并更新缓存的过程中。
Description
技术领域
本发明涉及数据库领域,尤其涉及一种从数据库中读取数据的方法及装置。
背景技术
在现代计算机技术中,数据库的应用非常广泛,它是用于组织、存储和管理数据的仓库。数据库作为整个应用系统的核心,其重要性不言而喻。而大多数应用的数据库读取操作比写操作更密集,而且查询条件相对复杂,数据库的大部分性能消耗在查询上,尤其在高用户、高并发的大型应用中,数据库的直接读取的代价非常高,这时数据库将会成为整个应用的瓶颈。缓存是内存的一部分,用来缓存数据的一块区域。当应用程序需要这些数据时,可以直接从缓存中提取,不需要访问数据库。故缓存是提高性能、缓解数据库压力的一种高效方法。而缓存更新就是把数据库中的数据读取并更新到内存中去,其中如何从数据库中读取数据,是影响整个系统性能的关键。
目前从数据库读取数据的方法有两种,包括:第一种,各缓存节点定时轮询数据库,检查增量表或者源表的数据是否发生变化,如果有变化则读取数据并更新缓存,同时在数据库中标识该数据已被更新或删除。该方法有如下缺点:各缓存节点在检查增量表或者源表的数据是否发生变化时需要定时轮询数据库,当系统比较大、缓存节点比较多的时候,频繁、大量的轮询数据库,将会严重影响数据库的性能,给数据库造成了更大的压力,并且各缓存节点定时轮询必定有时间间隔,当增量表或者源表的数据发生变化时更新缓存的实时性不是特别高。
第二种,利用应用程序对变更的数据进行采集、传输和维护操作。当数据被修改并保存到数据库后,应用程序进行数据修改通知,把被修改的数据或者数据记录唯一标识传递给各个缓存节点,然后各个缓存节点再进行缓存数据更新。此方法有效的解决了各缓存节点定时轮询数据库方法实时性差的问题,并且由于缓存节点不再轮询数据库,所以在很大程度上提高数据库性能,缓解了数据库压力。但是,该方法要为所有处理缓存数据更新的功能模块编写相应的处理缓存更新的代码。并且由于变动的数据是通过应用程序传输的,当在一些大型应用系统,需要多节点缓存时,因为各个缓存节点需求的数据不一样,需要对各个缓存节点进行相应的配置,所以会使整个系统非常复杂、繁琐,开发难度、开发量和维护量都会大大增加。
发明内容
本发明的实施例提供一种从数据库中读取数据的方法及装置,实现了缓存的实时更新,并且降低了整个应用系统开发的复杂性。
为达到上述目的,本发明的实施例采用如下技术方案:
一方面,本发明的实施例提供一种从数据库中读取数据的方法,包括:
根据缓存节点需要缓存的数据内容,为所述需要缓存的数据内容建立数据读取控制表和创建消息队列,所述数据读取控制表包括缓存节点信息表和缓存节点数据表,所述缓存节点信息表包括缓存节点ID和缓存节点标识,所述缓存节点数据表包括数据表标识、归属缓存节点标识、实际读取对象标识;
当应用程序更新数据库中的数据时,更新数据的数据表对应的触发器,将所述数据表的更新数据信息和所述数据表需要缓存的缓存节点标识,写入到所述数据表对应的消息队列中;
缓存节点从所述缓存节点对应的消息队列中读取所述缓存节点对应的更新数据信息,并根据所述更新数据信息更新所述缓存节点中的数据。
另一方面,本发明的实施例提供一种从数据库读取数据的装置,包括:
建立单元,用于根据缓存节点需要缓存的数据内容,为所述需要缓存的数据内容建立数据读取控制表,所述数据读取控制表包括缓存节点信息表和缓存节点数据表,所述缓存节点信息表包括缓存节点ID和缓存节点标识,所述缓冲节点数据表包括数据表标识、归属缓存节点标识、实际读取对象标识;
创建单元,用于根据缓存节点需要缓存的数据内容,为所述需要缓存的数据内容创建消息队列;
写入单元,用于当应用程序更新数据库中的数据时,更新数据的数据表对应的触发器,将所述数据表的更新数据信息和缓存所述数据表的缓存节点标识,写入到所述数据表对应的消息队列中;
读取单元,用于所述缓存节点从所述缓存节点对应的消息队列中读取所述缓存节点对应的更新数据信息,并根据所述更新数据信息更新所述缓存节点中的数据。
本发明实施例提供的技术方案,与现有技术相比,根据缓存节点需要缓存的数据内容,为所述需要缓存的数据内容建立数据读取控制表和创建消息队列,当应用程序更新数据库中的数据时,更新数据的数据表对应的触发器,将所述数据表的更新数据信息和所述数据表需要缓存的缓存节点标识,写入到所述数据表对应的消息队列中,各缓存节点从所述缓存节点对应的消息队列中读取所述缓存节点对应的更新数据信息,并根据所述更新数据信息更新所述缓存节点中的数据,避免缓存节点通过定时轮询数据库更新缓存,减轻了数据库的压力,实现了缓存数据更新的实时性;并且更新缓存数据的获取是由缓存主动去读对应的消息队列中的相应更新信息获取的,并不是通过应用程序互相通知去获取的,因此使得缓存更新是一个独立的操作,从而降低了整个应用系统开发的复杂性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例1中从数据库中读取数据的方法的流程图;
图2为本发明实施例2中从数据库中读取数据的流程图;
图3为本发明实施例2中写入消息队列的流程图;
图4为本发明实施例2中从消息队列中读取更新数据信息的方法流程图;
图5为本发明实施例3中一种从数据库中读取数据的装置组成框图;
图6为本发明实施例3中另一种从数据库中读取数据的装置组成框图;
图7为本发明实施例3中另一种从数据库中读取数据的装置组成框图;
图8为本发明实施例3中另一种从数据库中读取数据的装置组成框图;
图9为本发明实施例3中另一种从数据库中读取数据的装置组成框图;
图10为本发明实施例3中另一种从数据库中读取数据的装置组成框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
本发明实施例提供一种从数据库读取数据的方法,如图1所示,该方法包括:
101、根据缓存节点需要缓存的数据内容,为所述需要缓存的数据内容建立数据读取控制表和创建消息队列。
其中,所述数据读取控制表包括:缓存节点信息表和缓存节点数据表。所述缓存节点信息表包括缓存节点ID和缓存节点标识,所述缓存节点数据表包括数据表标识、归属缓存节点标识、实际读取对象标识。
102、当应用程序更新数据库中的数据时,更新数据的数据表对应的触发器,将所述数据表的更新数据信息和所述数据表需要缓存的缓存节点标识,写入到所述数据表对应的消息队列中。
103、缓存节点从所述缓存节点对应的消息队列中读取所述缓存节点对应的更新数据信息,并根据所述更新数据信息更新所述缓存节点中的数据。
本发明实施例中,根据缓存节点需要缓存的数据内容,为所述需要缓存的数据内容建立数据读取控制表和创建消息队列,当应用程序更新数据库中的数据时,更新数据的数据表对应的触发器,将所述数据表的更新数据信息和所述数据表需要缓存的缓存节点标识,写入到所述数据表对应的消息队列中,各缓存节点从所述缓存节点对应的消息队列中读取所述缓存节点对应的更新数据信息,并根据所述更新数据信息更新所述缓存节点中的数据,避免缓存节点通过定时轮询数据库更新缓存,减轻了数据库的压力,实现了缓存数据更新的实时性;并且更新缓存数据的获取是由缓存主动去读对应的消息队列中的相应更新信息获取的,并不是通过应用程序互相通知去获取的,因此使得缓存更新是一个独立的操作,从而降低了整个应用系统开发的复杂性。
实施例2
本发明实施例提供一种从数据库读取数据的方法,如图2所示,该方法包括:
201、根据缓存节点需要缓存的数据内容,为所述需要缓存的数据内容建立数据读取控制表和创建消息队列,所述数据读取控制表包括缓存节点信息表和缓存节点数据表,所述缓存节点信息表包括缓存节点ID和缓存节点标识,所述缓存节点数据表包括数据表标识、归属缓存节点标识、实际读取对象标识。
其中,所述根据缓存节点需要缓存的数据内容,为所述需要缓存的数据内容创建消息队列,可以采用以下的方法实现,该方法包括:根据缓存节点需要缓存的数据内容,为不同类型的所述需要缓存的数据内容建立不同的消息队列。当数据库为Oracle数据库时,所述根据缓存节点需要缓存的数据内容,为不同类型的所述需要缓存的数据内容建立不同的消息队列,包括:
根据缓存节点需要缓存的数据内容,为不同类型的所述需要缓存的数据内容建立不同的数据对象类型;其中,对于只保存变动数据记录唯一标识的,建立对象内容包括节点标识、表或者视图标识、操作类型(如插入、更新或者删除)和记录唯一标识;对于保存全部变动数据的,对象内容包括节点标识、表或者视图标识、操作类型和该表的缓存内容;具体的,可以通过Create orReplace Type objectname As Object来建立用对象内容。
根据不同的所述数据对象类型分别建立不同的数据队列表;其中,有多少个对象类型,需要建立多少个队列表;具体的,可以通过dbms_aqadm.create_queue_table建立队列表。
为每个所述数据队列表创建对应的消息队列;具体的,可以通过dbms_aqadm.create_queue分别创建对应的消息队列。
202、当应用程序更新数据库中的数据时,更新数据的数据表对应的触发器获取所述数据表的更新数据信息,并根据所述数据表的标识查询所述缓存节点数据表,获取缓存所述数据表的缓存节点标识。
203、将所述更新数据信息和所述缓存节点标识写入到所述数据表对应的消息队列中。
进一步的,所述更新数据的数据表对应的触发器将所述更新数据信息写入到所述数据表对应的消息队列中,如图3所示,包括:。
2031、确定所述更新数据信息写入到消息队列中的形式,若所述更新数据信息以更新数据记录标识的形式写入消息队列中,则执行步骤2032;若所述更新数据信息以更新数据的形式写入消息队列中,则执行步骤2033。
2032、所述更新数据的数据表对应的触发器读取所述数据表更新数据记录的标识,并将所述更新数据信息以更新数据记录标识的形式写入到所述数据表对应的消息队列中。
2033、所述更新数据的数据表对应的触发器读取所述数据表更新数据,并将所述更新数据信息以更新数据的形式直接写入到所述数据表对应的消息队列中。
204、缓存节点从所述缓存节点对应的消息队列中读取所述缓存节点对应的更新数据信息,并根据所述更新数据信息更新所述缓存节点中的数据。
其中,所述缓存节点从所述缓存节点对应的消息队列中读取所述缓存节点对应的更新数据信息,并根据所述更新数据信息更新所述缓存节点中的数据,可以通过以下的方法实现,如图4所示,包括:
2041、缓存节点在连接数据库后,根据所述缓存节点ID查询所述缓存节点信息表,获取所述缓存节点的缓存节点标识。
2042、缓存节点根据所述缓存节点标识读取所述缓存节点对应的消息队列。若所述缓存节点对应的消息队列中不存在所述缓存节点的数据,执行步骤2043。若所述缓存节点对应的消息队列中存在所述缓存节点的数据,执行步骤2044。
2043、所述缓存节点读取所述缓存节点对应的消息队列的程序被阻塞。
2044、从所述缓存节点对应的消息队列中读取所述缓存节点对应的更新数据信息,并根据所述更新数据信息更新所述缓存节点中的数据。
其中,所述从所述缓存节点对应的消息队列中读取所述缓存节点对应的更新数据信息,并根据所述更新数据信息更新所述缓存节点中的数据,包括:
确定所述更新数据信息写入到消息队列中的形式。
当所述更新数据信息以更新数据记录标识的形式写入到所述数据表对应的消息队列中时,从所述对应的消息队列中读取所述缓存节点对应的更新数据记录标识,根据所述更新数据记录标识从数据库中获取所述更新数据记录标识对应的更新数据,并根据所述更新数据更新所述缓存节点中的数据。
当所述更新数据信息以更新数据的形式写入到所述数据表对应的消息队列中时,从所述对应的消息队列中读取所述缓存节点对应的更新数据,并根据所述更新数据更新所述缓存节点中的数据。
本发明实施例中,根据缓存节点需要缓存的数据内容,为所述需要缓存的数据内容建立数据读取控制表和创建消息队列,当应用程序更新数据库中的数据时,更新数据的数据表对应的触发器,将所述数据表的更新数据信息和所述数据表需要缓存的缓存节点标识,写入到所述数据表对应的消息队列中,各缓存节点从所述缓存节点对应的消息队列中读取所述缓存节点对应的更新数据信息,并根据所述更新数据信息更新所述缓存节点中的数据,避免缓存节点通过定时轮询数据库更新缓存,减轻了数据库的压力,实现了缓存数据更新的实时性;并且更新缓存数据的获取是由缓存主动去读对应的消息队列中的相应更新信息获取的,并不是通过应用程序互相通知去获取的,因此使得缓存更新是一个独立的操作,从而降低了整个应用系统开发的复杂性。
并且,本发明实施例中为不同类型的所述需要缓存的数据内容建立不同的数据对象类型,根据不同的所述数据对象类型分别建立不同的数据队列表,并且为每个所述数据队列表创建对应的消息队列,这样可以很好的支持多节点缓存,同时各缓存节点需要的缓存数据可以灵活配置。
此外,当所述缓存节点对应的消息队列中不存在所述缓存节点的数据时,所述缓存节点读取所述缓存节点对应的消息队列的程序会被阻塞,当所述缓存节点对应的消息队列中存在所述缓存节点的数据时,缓存节点根据所述缓存节点标识读取所述缓存节点对应的消息队列从而读取所述缓存节点对应的更新数据信息。这样可以更好的实现当有数据变动时所述缓存节点才会读取所述更新数据信息进而更新所述缓存节点中的数据。
实施例3
本发明实施例提供一种从数据库读取数据的装置,如图5所示,该装置包括:建立单元31、创建单元32、写入单元33、读取单元34。
建立单元31,用于根据缓存节点需要缓存的数据内容,为所述需要缓存的数据内容建立数据读取控制表。
创建单元32,用于根据缓存节点需要缓存的数据内容,为所述需要缓存的数据内容创建消息队列。具体的,所述创建单元32用于,根据缓存节点需要缓存的数据内容,为不同类型的所述需要缓存的数据内容建立不同的消息队列。
写入单元33,用于当应用程序更新数据库中的数据时,更新数据的数据表对应的触发器,将所述数据表的更新数据信息和缓存所述数据表的缓存节点标识,写入到所述数据表对应的消息队列中。
读取单元34,用于所述缓存节点从所述缓存节点对应的消息队列中读取所述缓存节点对应的更新数据信息,并根据所述更新数据信息更新所述缓存节点中的数据。
进一步的,如图6所示,所述写入单元33还包括:第一获取模块331、第二获取模块332、写入模块333。
第一获取模块331,用于当应用程序更新数据库中的数据时,更新数据的数据表对应的触发器获取所述数据表的更新数据信息。
第二获取模块332,用于根据所述数据表的标识查询所述缓存节点数据表,获取缓存所述数据表的缓存节点标识。
写入模块333,用于将所述第一获取模块获取的所述更新数据信息和所述第二获取模块获取的所述缓存节点标识写入到所述数据表对应的消息队列中。
进一步的,如图7所示,所述写入模块还包括:第一确定子模块3331、第一写入子模块3332、第二写入子模块3333。
第一确定子模块3331,用于确定所述更新数据信息写入到消息队列中的形式。
第一写入子模块3332,用于在所述第一确定子模块3331确定所述更新数据信息以更新数据记录标识的形式写入消息队列中时,所述更新数据的数据表对应的触发器读取所述数据表更新数据记录的标识,并将所述更新数据信息以更新数据记录标识的形式写入到所述数据表对应的消息队列中
第二写入子模块3333,用于在所述第一确定子模块3331确定所述更新数据信息以更新数据的形式写入消息队列中时,所述更新数据的数据表对应的触发器读取所述数据表更新数据,并将所述更新数据信息以更新数据的形式直接写入到所述数据表对应的消息队列中。
进一步的,如图8所示,所述读取单元34还包括:查询模块341、第一读取模块342、第二读取模块343、阻塞操作模块344。
查询模块341,用于根据所述缓存节点ID查询所述缓存节点信息表,获取所述缓存节点的缓存节点标识。
第一读取模块342,用于根据所述缓存节点标识读取所述缓存节点对应的消息队列。
第二读取模块343,用于在所述缓存节点对应的消息队列中存在所述缓存节点的数据时,从所述缓存节点对应的消息队列中读取所述缓存节点对应的更新数据信息,并根据所述更新数据信息更新所述缓存节点中的数据。
阻塞操作模块344,用于在所述缓存节点对应的消息队列中不存在所述缓存节点的数据时,所述缓存节点读取所述缓存节点对应的消息队列的程序被阻塞。
进一步的,如图9所示所述第二读取模块343包括第二确定子模块3431、第一读取子模块3432和第二读取子模块3433。
第二确定子模块3431,用于确定所述更新数据信息写入到消息队列中的形式;
第一读取子模块3432,用于当所述第二确定子模块3431确定所述更新数据信息以更新数据记录标识的形式写入到所述数据表对应的消息队列中时,从所述对应的消息队列中读取所述缓存节点对应的更新数据记录标识,根据所述更新数据记录标识从数据库中获取所述更新数据记录标识对应的更新数据,并根据所述更新数据更新所述缓存节点中的数据;
第二读取子模块3433,用于当所述第二确定子模块3431确定所述更新数据信息以更新数据的形式写入到所述数据表对应的消息队列中时,从所述对应的消息队列中读取所述缓存节点对应的更新数据,并根据所述更新数据更新所述缓存节点中的数据。
进一步的,如图10所示,当所述数据库为Oracle数据库时,所述创建单元32还包括:建立模块321、第一创建模块322、第二创建模块323。
建立模块321,用于根据缓存节点需要缓存的数据内容,为不同类型的所述需要缓存的数据内容建立不同的数据对象类型。
第一创建模块322,用于根据建立模块建立的不同的所述数据对象类型分别建立不同的数据队列表。
第二创建模块323,用于为第一创建模块创建的每个所述数据队列表创建对应的消息队列。
需要说明的是,本发明实施例中各功能模块的其他描述,可以参考实施例1和实施例2中的相应描述,本发明实施例此处将不再赘述。
本发明实施例中,根据缓存节点需要缓存的数据内容,为所述需要缓存的数据内容建立数据读取控制表和创建消息队列,当应用程序更新数据库中的数据时,更新数据的数据表对应的触发器,将所述数据表的更新数据信息和所述数据表需要缓存的缓存节点标识,写入到所述数据表对应的消息队列中,各缓存节点从所述缓存节点对应的消息队列中读取所述缓存节点对应的更新数据信息,并根据所述更新数据信息更新所述缓存节点中的数据,避免缓存节点通过定时轮询数据库更新缓存,减轻了数据库的压力,实现了缓存数据更新的实时性;并且更新缓存数据的获取是由缓存主动去读对应的消息队列中的相应更新信息获取的,并不是通过应用程序互相通知去获取的,因此使得缓存更新是一个独立的操作,从而降低了整个应用系统开发的复杂性。
并且,本发明实施例中为不同类型的所述需要缓存的数据内容建立不同的数据对象类型,根据不同的所述数据对象类型分别建立不同的数据队列表,并且为每个所述数据队列表创建对应的消息队列,这样可以很好的支持多节点缓存,同时各缓存节点需要的缓存数据可以灵活配置。
此外,当所述缓存节点对应的消息队列中不存在所述缓存节点的数据时,所述缓存节点读取所述缓存节点对应的消息队列的程序会被阻塞,当所述缓存节点对应的消息队列中存在所述缓存节点的数据时,缓存节点根据所述缓存节点标识读取所述缓存节点对应的消息队列从而读取所述缓存节点对应的更新数据信息。这样可以更好的实现当有数据变动时所述缓存节点才会读取所述更新数据信息进而更新所述缓存节点中的数据。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (14)
1.一种从数据库读取数据的方法,其特征在于,包括:
根据缓存节点需要缓存的数据内容,为所述需要缓存的数据内容建立数据读取控制表和创建消息队列,所述数据读取控制表包括缓存节点信息表和缓存节点数据表,所述缓存节点信息表包括缓存节点ID和缓存节点标识,所述缓存节点数据表包括数据表标识、归属缓存节点标识、实际读取对象标识;
当应用程序更新数据库中的数据时,更新数据的数据表对应的触发器,将所述数据表的更新数据信息和所述数据表需要缓存的缓存节点标识,写入到所述数据表对应的消息队列中;
缓存节点从所述缓存节点对应的消息队列中读取所述缓存节点对应的更新数据信息,并根据所述更新数据信息更新所述缓存节点中的数据。
2.根据权利要求1所述的方法,其特征在于,所述根据缓存节点需要缓存的数据内容,为所述需要缓存的数据内容创建消息队列,包括:
根据缓存节点需要缓存的数据内容,为不同类型的所述需要缓存的数据内容建立不同的消息队列。
3.根据权利要求2所述的方法,其特征在于,当所述数据库为Oracle数据库时,所述根据缓存节点需要缓存的数据内容,为不同类型的所述需要缓存的数据内容建立不同的消息队列,包括:
根据缓存节点需要缓存的数据内容,为不同类型的所述需要缓存的数据内容建立不同的数据对象类型;
根据不同的所述数据对象类型分别建立不同的数据队列表;
为每个所述数据队列表创建对应的消息队列。
4.根据权利要求1所述的方法,其特征在于,所述当应用程序更新数据库中的数据时,更新数据的数据表对应的触发器,将所述数据表的更新数据信息和所述数据表需要缓存的缓存节点标识,写入到所述数据表对应的消息队列中,包括:
当应用程序更新数据库中的数据时,更新数据的数据表对应的触发器获取所述数据表的更新数据信息,并根据所述数据表的标识查询所述缓存节点数据表,获取缓存所述数据表的缓存节点标识;
将所述更新数据信息和所述缓存节点标识写入到所述数据表对应的消息队列中。
5.根据权利要求4所述的方法,其特征在于,所述更新数据的数据表对应的触发器将所述更新数据信息写入到所述数据表对应的消息队列中,包括:
确定所述更新数据信息写入到消息队列中的形式;
若所述更新数据信息以更新数据记录标识的形式写入消息队列中,则所述更新数据的数据表对应的触发器读取所述数据表更新数据记录的标识,并将所述更新数据信息以更新数据记录标识的形式写入到所述数据表对应的消息队列中;
若所述更新数据信息以更新数据的形式写入消息队列中,则所述更新数据的数据表对应的触发器读取所述数据表更新数据,并将所述更新数据信息以更新数据的形式直接写入到所述数据表对应的消息队列中。
6.根据权利要求1所述的方法,其特征在于,所述缓存节点从所述缓存节点对应的消息队列中读取所述缓存节点对应的更新数据信息,并根据所述更新数据信息更新所述缓存节点中的数据,包括:
缓存节点根据所述缓存节点的缓存节点ID查询所述缓存节点信息表,获取所述缓存节点的缓存节点标识;
根据所述缓存节点标识读取所述缓存节点对应的消息队列;
若所述缓存节点对应的消息队列中存在所述缓存节点的数据,则从所述缓存节点对应的消息队列中读取所述缓存节点对应的更新数据信息,并根据所述更新数据信息更新所述缓存节点中的数据;
若所述缓存节点对应的消息队列中不存在所述缓存节点的数据,则所述缓存节点读取所述缓存节点对应的消息队列的程序被阻塞。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述从所述对应的消息队列中读取所述缓存节点对应的更新数据信息,根据所述更新数据信息更新所述缓存节点中的数据,包括:
确定所述更新数据信息写入到消息队列中的形式;
当所述更新数据信息以更新数据记录标识的形式写入到所述数据表对应的消息队列中时,从所述对应的消息队列中读取所述缓存节点对应的更新数据记录标识,根据所述更新数据记录标识从数据库中获取所述更新数据记录标识对应的更新数据,并根据所述更新数据更新所述缓存节点中的数据;
当所述更新数据信息以更新数据的形式写入到所述数据表对应的消息队列中时,从所述对应的消息队列中读取所述缓存节点对应的更新数据,并根据所述更新数据更新所述缓存节点中的数据。
8.一种从数据库读取数据的装置,其特征在于,包括:
建立单元,用于根据缓存节点需要缓存的数据内容,为所述需要缓存的数据内容建立数据读取控制表,所述数据读取控制表包括缓存节点信息表和缓存节点数据表,所述缓存节点信息表包括缓存节点ID和缓存节点标识,所述缓冲节点数据表包括数据表标识、归属缓存节点标识、实际读取对象标识;
创建单元,用于根据缓存节点需要缓存的数据内容,为所述需要缓存的数据内容创建消息队列;
写入单元,用于当应用程序更新数据库中的数据时,更新数据的数据表对应的触发器,将所述数据表的更新数据信息和缓存所述数据表的缓存节点标识,写入到所述数据表对应的消息队列中;
读取单元,用于缓存节点从所述缓存节点对应的消息队列中读取所述缓存节点对应的更新数据信息,并根据所述更新数据信息更新所述缓存节点中的数据。
9.根据权利要求8所述的装置,其特征在于,所述创建单元用于,根据缓存节点需要缓存的数据内容,为不同类型的所述需要缓存的数据内容建立不同的消息队列。
10.根据权利要求8或9所述的装置,其特征在于,当所述数据库为Oracle数据库时,所述创建单元包括:
建立模块,用于根据缓存节点需要缓存的数据内容,为不同类型的所述需要缓存的数据内容建立不同的数据对象类型;
第一创建模块,用于根据建立模块建立的不同的所述数据对象类型分别建立不同的数据队列表;
第二创建模块,用于为第一创建模块创建的每个所述数据队列表创建对应的消息队列。
11.根据权利要求8所述的装置,其特征在于,所述写入单元包括:
第一获取模块,用于当应用程序更新数据库中的数据时,更新数据的数据表对应的触发器获取所述数据表的更新数据信息;
第二获取模块,用于根据所述数据表的标识查询所述缓存节点数据表,获取缓存所述数据表的缓存节点标识;
写入模块,用于将所述第一获取模块获取的所述更新数据信息和所述第二获取模块获取的所述缓存节点标识写入到所述数据表对应的消息队列中。
12.根据权利要求11所述的装置,其特征在于,所述写入模块包括:
第一确定子模块,用于确定所述更新数据信息写入到消息队列中的形式;
第一写入子模块,用于在所述第一确定子模块确定所述更新数据信息以更新数据记录标识的形式写入消息队列中时,所述更新数据的数据表对应的触发器读取所述数据表更新数据记录的标识,并将所述更新数据信息以更新数据记录标识的形式写入到所述数据表对应的消息队列中;
第二写入子模块,用于在所述第一确定子模块确定所述更新数据信息以更新数据的形式写入消息队列中时,所述更新数据的数据表对应的触发器读取所述数据表更新数据,并将所述更新数据信息以更新数据的形式直接写入到所述数据表对应的消息队列中。
13.根据权利要求8所述的装置,其特征在于,所述读取单元包括:
查询模块,用于根据所述缓存节点ID查询所述缓存节点信息表,获取所述缓存节点的缓存节点标识;
第一读取模块,用于根据所述缓存节点标识读取所述缓存节点对应的消息队列;
第二读取模块,用于在所述缓存节点对应的消息队列中存在所述缓存节点的数据时,从所述缓存节点对应的消息队列中读取所述缓存节点对应的更新数据信息,并根据所述更新数据信息更新所述缓存节点中的数据;
阻塞操作模块,用于在所述缓存节点对应的消息队列中不存在所述缓存节点的数据时,所述缓存节点读取所述缓存节点对应的消息队列的程序被阻塞。
14.根据权利要求13所述的装置,其特征在于,所述第二读取模块包括:
第二确定子模块,用于确定所述更新数据信息写入到消息队列中的形式;
第一读取子模块,用于当所述第二确定子模块确定所述更新数据信息以更新数据记录标识的形式写入到所述数据表对应的消息队列中时,从所述对应的消息队列中读取所述缓存节点对应的更新数据记录标识,根据所述更新数据记录标识从数据库中获取所述更新数据记录标识对应的更新数据,并根据所述更新数据更新所述缓存节点中的数据;
第二读取子模块,用于当所述第二确定子模块确定所述更新数据信息以更新数据的形式写入到所述数据表对应的消息队列中时,从所述对应的消息队列中读取所述缓存节点对应的更新数据,并根据所述更新数据更新所述缓存节点中的数据。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2011/072035 WO2012126177A2 (zh) | 2011-03-22 | 2011-03-22 | 从数据库中读取数据的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102741843A true CN102741843A (zh) | 2012-10-17 |
CN102741843B CN102741843B (zh) | 2014-03-26 |
Family
ID=46879775
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180004080.2A Active CN102741843B (zh) | 2011-03-22 | 2011-03-22 | 从数据库中读取数据的方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN102741843B (zh) |
WO (1) | WO2012126177A2 (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103440285A (zh) * | 2013-08-14 | 2013-12-11 | 北京乐动卓越科技有限公司 | 大型手机游戏系统及其数据库更新方法 |
CN105786882A (zh) * | 2014-12-24 | 2016-07-20 | 阿里巴巴集团控股有限公司 | 一种数据表标识生成、数据写入方法及装置 |
CN106033474A (zh) * | 2016-04-21 | 2016-10-19 | 苏州奖多多科技有限公司 | 一种数据同步更新方法、装置及电子设备 |
CN106815329A (zh) * | 2016-12-29 | 2017-06-09 | 网易无尾熊(杭州)科技有限公司 | 一种缓存数据的更新方法及装置 |
CN107678856A (zh) * | 2017-09-20 | 2018-02-09 | 苏宁云商集团股份有限公司 | 一种处理业务实体中增量信息的方法及装置 |
CN108897868A (zh) * | 2018-06-29 | 2018-11-27 | 北京奇虎科技有限公司 | 基于触发器的缓存同步方法及装置、计算设备及存储介质 |
CN109597818A (zh) * | 2018-11-28 | 2019-04-09 | 优刻得科技股份有限公司 | 数据更新方法、装置、存储介质和设备 |
CN110019340A (zh) * | 2017-12-08 | 2019-07-16 | 北京新媒传信科技有限公司 | 数据存储/读取方法、装置及系统 |
CN111522818A (zh) * | 2020-04-23 | 2020-08-11 | 北京思特奇信息技术股份有限公司 | 一种基于内存数据库的多主机间消息交互方法 |
CN111563102A (zh) * | 2020-04-10 | 2020-08-21 | 中国联合网络通信集团有限公司 | 缓存更新方法、服务器、系统及存储介质 |
US10754873B2 (en) | 2016-01-18 | 2020-08-25 | Alibaba Group Holding Limited | Data synchronization method, apparatus, and system |
CN112286973A (zh) * | 2020-11-19 | 2021-01-29 | 每日互动股份有限公司 | 数据消息的存储方法、装置、计算机设备及存储介质 |
CN113377289A (zh) * | 2021-06-01 | 2021-09-10 | 北京齐尔布莱特科技有限公司 | 一种缓存管理方法、系统、计算设备及可读存储介质 |
CN113742617A (zh) * | 2020-08-28 | 2021-12-03 | 北京沃东天骏信息技术有限公司 | 一种缓存更新的方法和装置 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105094756B (zh) * | 2014-04-28 | 2018-07-03 | 阿里巴巴集团控股有限公司 | 数据读写方法和装置 |
US10809998B2 (en) | 2016-02-12 | 2020-10-20 | Nutanix, Inc. | Virtualized file server splitting and merging |
US11218418B2 (en) | 2016-05-20 | 2022-01-04 | Nutanix, Inc. | Scalable leadership election in a multi-processing computing environment |
US11568073B2 (en) | 2016-12-02 | 2023-01-31 | Nutanix, Inc. | Handling permissions for virtualized file servers |
US11562034B2 (en) | 2016-12-02 | 2023-01-24 | Nutanix, Inc. | Transparent referrals for distributed file servers |
US11294777B2 (en) | 2016-12-05 | 2022-04-05 | Nutanix, Inc. | Disaster recovery for distributed file servers, including metadata fixers |
US11281484B2 (en) | 2016-12-06 | 2022-03-22 | Nutanix, Inc. | Virtualized server systems and methods including scaling of file system virtual machines |
US11288239B2 (en) | 2016-12-06 | 2022-03-29 | Nutanix, Inc. | Cloning virtualized file servers |
US11770447B2 (en) | 2018-10-31 | 2023-09-26 | Nutanix, Inc. | Managing high-availability file servers |
US11768809B2 (en) * | 2020-05-08 | 2023-09-26 | Nutanix, Inc. | Managing incremental snapshots for fast leader node bring-up |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101127041A (zh) * | 2007-08-28 | 2008-02-20 | 激动集团股份有限公司 | 一种业务规则基础数据的缓冲方法 |
CN101188566A (zh) * | 2007-12-13 | 2008-05-28 | 沈阳东软软件股份有限公司 | 一种集群环境下数据缓存同步的方法及系统 |
US20080215580A1 (en) * | 2004-07-30 | 2008-09-04 | International Business Machines Corporation | System and method for adaptive database caching |
CN101452484A (zh) * | 2003-06-25 | 2009-06-10 | 微软公司 | 用于寄存和检索可以用来使缓存记录无效的数据库表格变化信息 |
US20090216709A1 (en) * | 2008-02-27 | 2009-08-27 | International Business Machines Corporation | Optimized collection of just-in-time statistics for database query optimization |
JP4326464B2 (ja) * | 2004-12-09 | 2009-09-09 | 株式会社野村総合研究所 | アプリケーションシステム及び分散データを同期させる方法 |
CN101770484A (zh) * | 2008-12-31 | 2010-07-07 | 北大方正集团有限公司 | 一种网站更新实时发布的方法及系统 |
-
2011
- 2011-03-22 WO PCT/CN2011/072035 patent/WO2012126177A2/zh active Application Filing
- 2011-03-22 CN CN201180004080.2A patent/CN102741843B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101452484A (zh) * | 2003-06-25 | 2009-06-10 | 微软公司 | 用于寄存和检索可以用来使缓存记录无效的数据库表格变化信息 |
US20080215580A1 (en) * | 2004-07-30 | 2008-09-04 | International Business Machines Corporation | System and method for adaptive database caching |
JP4326464B2 (ja) * | 2004-12-09 | 2009-09-09 | 株式会社野村総合研究所 | アプリケーションシステム及び分散データを同期させる方法 |
CN101127041A (zh) * | 2007-08-28 | 2008-02-20 | 激动集团股份有限公司 | 一种业务规则基础数据的缓冲方法 |
CN101188566A (zh) * | 2007-12-13 | 2008-05-28 | 沈阳东软软件股份有限公司 | 一种集群环境下数据缓存同步的方法及系统 |
US20090216709A1 (en) * | 2008-02-27 | 2009-08-27 | International Business Machines Corporation | Optimized collection of just-in-time statistics for database query optimization |
CN101770484A (zh) * | 2008-12-31 | 2010-07-07 | 北大方正集团有限公司 | 一种网站更新实时发布的方法及系统 |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103440285B (zh) * | 2013-08-14 | 2016-09-07 | 北京乐动卓越科技有限公司 | 大型手机游戏系统及其数据库更新方法 |
CN103440285A (zh) * | 2013-08-14 | 2013-12-11 | 北京乐动卓越科技有限公司 | 大型手机游戏系统及其数据库更新方法 |
CN105786882B (zh) * | 2014-12-24 | 2019-04-12 | 阿里巴巴集团控股有限公司 | 一种数据表标识生成、数据写入方法及装置 |
CN105786882A (zh) * | 2014-12-24 | 2016-07-20 | 阿里巴巴集团控股有限公司 | 一种数据表标识生成、数据写入方法及装置 |
US10754873B2 (en) | 2016-01-18 | 2020-08-25 | Alibaba Group Holding Limited | Data synchronization method, apparatus, and system |
US11010404B2 (en) | 2016-01-18 | 2021-05-18 | Advanced New Technologies Co., Ltd. | Data synchronization method, apparatus, and system |
CN106033474A (zh) * | 2016-04-21 | 2016-10-19 | 苏州奖多多科技有限公司 | 一种数据同步更新方法、装置及电子设备 |
CN106815329A (zh) * | 2016-12-29 | 2017-06-09 | 网易无尾熊(杭州)科技有限公司 | 一种缓存数据的更新方法及装置 |
CN107678856A (zh) * | 2017-09-20 | 2018-02-09 | 苏宁云商集团股份有限公司 | 一种处理业务实体中增量信息的方法及装置 |
CN110019340A (zh) * | 2017-12-08 | 2019-07-16 | 北京新媒传信科技有限公司 | 数据存储/读取方法、装置及系统 |
CN108897868A (zh) * | 2018-06-29 | 2018-11-27 | 北京奇虎科技有限公司 | 基于触发器的缓存同步方法及装置、计算设备及存储介质 |
CN109597818A (zh) * | 2018-11-28 | 2019-04-09 | 优刻得科技股份有限公司 | 数据更新方法、装置、存储介质和设备 |
CN111563102A (zh) * | 2020-04-10 | 2020-08-21 | 中国联合网络通信集团有限公司 | 缓存更新方法、服务器、系统及存储介质 |
CN111522818A (zh) * | 2020-04-23 | 2020-08-11 | 北京思特奇信息技术股份有限公司 | 一种基于内存数据库的多主机间消息交互方法 |
CN111522818B (zh) * | 2020-04-23 | 2023-09-26 | 北京思特奇信息技术股份有限公司 | 一种基于内存数据库的多主机间消息交互方法 |
CN113742617A (zh) * | 2020-08-28 | 2021-12-03 | 北京沃东天骏信息技术有限公司 | 一种缓存更新的方法和装置 |
CN112286973A (zh) * | 2020-11-19 | 2021-01-29 | 每日互动股份有限公司 | 数据消息的存储方法、装置、计算机设备及存储介质 |
CN113377289A (zh) * | 2021-06-01 | 2021-09-10 | 北京齐尔布莱特科技有限公司 | 一种缓存管理方法、系统、计算设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102741843B (zh) | 2014-03-26 |
WO2012126177A2 (zh) | 2012-09-27 |
WO2012126177A3 (zh) | 2012-11-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102741843B (zh) | 从数据库中读取数据的方法及装置 | |
US10990576B2 (en) | Providing snapshots of journal tables | |
US10089012B1 (en) | Zero on demand operations based on zeroed chunk tables of storage drive objects stored in main memory | |
US9898475B1 (en) | Tiering with pluggable storage system for parallel query engines | |
US10558615B2 (en) | Atomic incremental load for map-reduce systems on append-only file systems | |
CN105549905B (zh) | 一种多虚拟机访问分布式对象存储系统的方法 | |
US8782324B1 (en) | Techniques for managing placement of extents based on a history of active extents | |
CN102331986B (zh) | 一种数据库缓存管理方法及一种数据库服务器 | |
US10061834B1 (en) | Incremental out-of-place updates for datasets in data stores | |
CN106294814B (zh) | 基于内存数据库的HBase二级索引构建与查询的装置及方法 | |
CN103902623A (zh) | 用于在存储系统上存取文件的方法和系统 | |
CN105630865A (zh) | 用于内存列式存储的n比特压缩版本化列数据阵列 | |
CN101930472A (zh) | 一种支持分布式数据库基于并行查询的方法 | |
CN102043653A (zh) | 缓存配置的修改方法、缓存数据的操作、查询方法及缓存系统 | |
CN102725739A (zh) | 虚拟单一存储装置上的元信息共享型分布式数据库系统 | |
CN104021145A (zh) | 一种混合业务并发访问的方法和装置 | |
CN103186622B (zh) | 一种全文检索系统中索引信息的更新方法以及装置 | |
CN102541927A (zh) | 一种实现数据缓存的方法和装置 | |
CN102033948A (zh) | 一种数据更新方法和装置 | |
CN103714163A (zh) | 一种NoSQL数据库的模式管理方法及系统 | |
CN103020255A (zh) | 分级存储方法和装置 | |
CN102750317A (zh) | 数据持久化处理方法、装置及数据库系统 | |
CN103425785A (zh) | 数据存储系统及其用户数据存储、读取方法 | |
CN104657387A (zh) | 一种数据查询方法及装置 | |
CN102779138A (zh) | 实时数据的硬盘存取方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20170124 Address after: 266100 Shandong Province, Qingdao city Laoshan District Songling Road No. 399 Patentee after: Poly Polytron Technologies Inc Address before: 266071 Laoshan, Qingdao province Hongkong District No. East Road, room 248, room 131 Patentee before: Qingdao Hisense Media Networks Co., Ltd. |