CN100589079C - 一种数据共享的方法、系统和装置 - Google Patents

一种数据共享的方法、系统和装置 Download PDF

Info

Publication number
CN100589079C
CN100589079C CN200810099505A CN200810099505A CN100589079C CN 100589079 C CN100589079 C CN 100589079C CN 200810099505 A CN200810099505 A CN 200810099505A CN 200810099505 A CN200810099505 A CN 200810099505A CN 100589079 C CN100589079 C CN 100589079C
Authority
CN
China
Prior art keywords
data
buffer memory
query
thread
thread buffer
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
CN200810099505A
Other languages
English (en)
Other versions
CN101271410A (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.)
Chuangze intelligent robot Group Co.,Ltd.
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN200810099505A priority Critical patent/CN100589079C/zh
Publication of CN101271410A publication Critical patent/CN101271410A/zh
Application granted granted Critical
Publication of CN100589079C publication Critical patent/CN100589079C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例公开了一种数据共享的方法、系统和装置,本发明实施例公开的数据共享的方法,包括:接收到查询数据请求,判断是否访问线程缓存;所述判断结果为访问所述线程缓存时,向所述线程缓存发送查询请求;接收所述线程缓存返回的查询结果数据,向所述查询数据请求的发送方返回所述查询结果数据。通过使用本发明的实施例,有效的确保了单次调用数据充分共享的前提下,不会出现脏数据。

Description

一种数据共享的方法、系统和装置
技术领域
本发明涉及网络通讯领域,尤其涉及一种数据共享的方法、系统和装置。
背景技术
在管理类应用系统中,数据的校验常常使用专门的API(ApplicationProgramming Interface,应用编程接口)完成,例如根据用户号码校验数据是否正确,这些API往往要借助数据库表的查询数据来完成校验,但是这种数据校验往往由于规划不合理带来重复查询,造成额外的性能开销。
现有的技术是将数据库数据缓存起来,在进行数据比较时,由于查询数据直接来自缓存,从而大大降低多次查询的性能开销。具体来说,数据库的数据预先加载或者第一次访问时加载到内存中的高速缓存中,应用API在访问数据时直接从高速缓存中获取相关的数据,这样即使多个需要同样的数据访问,由于访问高速缓存时间开销极少,可以大幅提高数据访问的性能。另外,如果缓存中的数据发生了变化,可以通过通知更新接口将数据更新到缓存中,这样可以保证数据访问时获取最新的数据,以维护缓存数据和数据库数据的一致性。
发明人在实现本发明的过程中,发现现有技术至少存在以下问题:
现有技术不适合大数据量的缓存,并且有时候为了共享缓存数据,需要缓存基础数据,每次在此基础数据上进行运算,从而加重了业务逻辑的负担。同时缓存中数据的时效性比较难控制。
发明内容
本发明实施例提供一种数据共享的方法、系统和装置,以有效的实现单次调用数据充分共享,减少业务逻辑的负担。
本发明实施例提供一种数据共享的方法,包括:
接收到查询数据请求,根据条件控制逻辑判断所述查询数据请求是否访问线程缓存;
所述判断结果为访问所述线程缓存时,向所述线程缓存发送查询请求;
接收所述线程缓存返回的查询结果数据,向所述查询数据请求的发送方返回所述查询结果数据;
所述判断结果为不访问线程缓存时,向数据访问控制器发送查询数据请求,并接收所述数据访问控制器在数据库中查询得到的查询结果数据,向所述查询数据请求的发送方返回所述查询结果数据。
所述数据共享的方法,其特征在于,所述接收到查询数据请求之前还包括:
将缓存与线程进行绑定形成所述线程缓存。
所述数据共享的方法,其特征在于,所述形成所述线程缓存后使用所述线程的线程变量标识所述缓存的生命周期,使所述缓存与所述线程的生命周期一致。
所述数据共享的方法,其特征在于,所述判断是否访问线程缓存具体包括:
根据条件控制逻辑判断所述查询数据请求是否访问线程缓存。
所述数据共享的方法,其特征在于,所述接收数据访问控制器在数据库中查询得到的查询结果数据之后,还包括:
判断所述查询结果数据是否录入线程缓存;
所述判断结果为录入线程缓存,将所述查询结果数据录入线程缓存。
所述数据共享的方法,其特征在于,所述接收所述线程缓存返回的查询结果数据后还包括:
判断查询结果数据是否有效;
所述判断结果为有效,向所述查询数据请求的发送方返回所述查询结果数据;
所述判断结果为无效,向数据访问控制器发送查询数据请求。
所述数据共享的方法,其特征在于,所述向所述查询数据请求的发送方返回所述查询结果数据后还包括:
接收到结束请求,销毁线程缓存中的对象及缓存自身并清理线程变量。
同时本发明实施例提供了一种数据共享的装置,包括:
第一接收模块,用于接收查询数据请求;
第一判断模块,用于当所述第一接收模块接收到查询数据请求时,判断是否访问线程缓存;
第一发送模块,用于当所述第一判断模块判断访问线程缓存时,向所述线程缓存发送查询请求;
第二接收模块,用于接收所述线程缓存返回的查询结果数据;
第二发送模块,用于当所述第二接收模块接收到查询结果数据时,向所述查询数据请求的发送方返回所述查询结果数据。
第三发送模块,用于当所述第一判断模块判断不需要访问线程缓存时,向数据访问控制器发送查询请求;
第三接收模块,用于接收所述数据访问控制器返回的查询结果数据;
第四发送模块,用于当所述第三接收模块接收到查询结果数据时,向所述线程缓存发送查询请求。
所述数据共享的装置,其特征在于,还包括:
第二判断模块,用于判断所述第二接收模块接收的查询结果数据是否有效。
所述数据共享的装置,其特征在于,还包括:
录入判断模块,用于判断所述第三接收模块接收到的查询结果数据是否录入线程缓存。
所述数据共享的装置,其特征在于,还包括:
销毁模块,用于接收到结束请求后销毁线程缓存中的对象及缓存自身并清理线程变量。
所述数据共享的装置,其特征在于,所述装置为条件控制器。
同时本发明实施例提供了一种数据共享的系统,包括:
条件控制器,线程缓存,数据访问控制器和数据库;
所述条件控制器,接收到查询数据请求,判断是否需要访问所述线程缓存;所述判断结果为需要访问线程缓存时,向所述线程缓存发送查询请求;接收所述线程缓存返回的查询结果数据,向所述查询数据请求的发送方返回所述查询结果数据;所述判断结果为不访问线程缓存时,向数据访问控制器发送查询数据请求,并接收所述数据访问控制器在数据库中查询得到的查询结果数据,向所述查询数据请求的发送方返回所述查询结果数据。
所述数据共享的系统,其特征在于,
还包括:数据访问控制器和数据库;所述条件控制器,进一步用于判断结果为不需要访问线程缓存时,所述条件控制器向所述数据访问控制器发送查询数据请求;
所述数据访问控制器,用于接收到所述条件控制器发送的数据查询请求后,在所述数据库中查询数据并将查询结果数据发送到所述条件控制器;
所述数据库,用于为所述数据访问控制器提供查询数据。
所述数据共享的系统,其特征在于,所述条件控制器包括:
第一接收模块,用于接收查询数据请求;
第一判断模块,用于当所述第一接收模块接收到查询数据请求时,判断是否访问线程缓存;
第一发送模块,用于当所述第一判断模块判断访问线程缓存时,向所述线程缓存发送查询请求;
第二接收模块,用于接收所述线程缓存返回的查询结果数据;
第二发送模块,用于当所述第二接收模块接收到查询结果数据时,向所述查询数据请求的发送方返回所述查询结果数据。
与现有技术相比,本发明实施例具有以下优点:
通过判断是否需要访问线程缓存并向线程缓存发送查询请求,接收线程缓存返回的查询结果数据并判断所述数据有效后,返回查询结果数据,因此查询重复数据时,可以从线程缓存中直接获取数据,而且从数据库中查询到的数据可以录入线程缓存,这样可以有效的确保调用数据充分共享。
附图说明
图1是本发明实施例的应用环境示意图;
图2是本发明实施例中数据共享的方法流程图;
所述查询数据请求的发送方返回所述查询结果数据。判断查询结果数据无效时,需要向数据条件控制器发送查询数据请求。
接收到查询数据请求后,首先判断是否访问线程缓存,如果判断需要访问线程缓存,可以直接从线程缓存中获取查询结果数据,这样可以有效的确保了在不会出现脏数据的前提下,使单次调用数据充分共享。
下面通过实施例对本发明提供的数据共享的方法进行详细说明,如图3所示,具体包括:
步骤S301、应用API在内部向数据库发起数据访问。
具体的,所述应用API泛指为了完成业务操作而设计的应用接口,通常包含了一个或多个原子功能,如用户校验、流程控制。对应用API而言,其主要目标是完成某一特定功能,为了完成所述特定功能一般情况下需要访问数据库。
步骤S302、应用API向条件控制器发送查询数据请求。
步骤S303、条件控制器查询自身内部条件控制逻辑,判断是否需要访问线程缓存。
具体的,所述条件控制器通过内置的条件控制逻辑来控制查询数据的获取位置,也就是说控制查询数据是直接从数据库中获取,还是通过线程缓存从缓存中获取。也可以说,条件控制器是应用API和数据库的中间控制组件,所有访问均经过条件控制器进行转发。
所述条件控制器的条件控制逻辑实现方式为一系列的条件判断,并可以利用数据库、判定表或其他方式实现。这些判断条件可以固定在条件控制器内部。例如条件控制逻辑可以设定为:对某个实体A的查询、或对某个SQL(Structure Query Language,结构化查询语言)的查询、或对某个标识为x的SQL的查询。
根据实际的需要,所述条件控制逻辑可以设定为在某一时间点生效,也可以设定为在某一时间段生效。例如在某个时间段需要对数据库进行维护,可以设定线程缓存在此时间段内生效。
步骤S304、条件控制器根据条件控制逻辑判断查询数据请求是否需要访问缓存,判断结果为需要时,执行步骤S305;否则,执行步骤S308。
具体的,当查询数据请求满足条件控制器中的条件控制逻辑时,判断为需要访问缓存;否则,判断为不需要访问缓存。
步骤S305、条件控制器向线程缓存发送查询数据请求。
所述线程缓存实际上是位于一个线程存储内部的暂态的缓存,内部是键值和对象的映射。具体的,带有特定参数的SQL确定一个具有唯一标识的键值,该键值对应唯一的对象。也就是说,所述键值可以用于标识查询结果数据的唯一性。所述带有特定参数的SQL的实现形式可以为:SQL的名字和参数、SQL和参数等。
步骤S306、线程缓存向条件控制器返回查询结果数据。
步骤S307、条件控制器判断线程缓存返回的查询结果数据是否有效。
具体的,数据有效可以指数据存在或者在数据有效期内满足一定的规定。例如,线程缓存返回数据为空时,数据无效;或者所查询的数据被查询的次数超过门限值后,该数据无效。当然,在实际情况中判断数据有效的方式并不限于以上所述的方式。
判断查询结果数据有效,执行步骤S314;否则,执行步骤S308。
步骤S308、条件控制器向数据访问控制器发送查询数据请求。
具体的,条件控制器根据条件控制逻辑判断查询数据请求不需要访问线程缓存时,向数据访问控制器发送查询数据请求。
步骤S309、数据访问控制器根据条件访问控制器发送的查询数据请求,在数据库中查询相应的数据信息。
步骤S310、数据库向数据访问控制器返回查询结果数据。
步骤S311、数据访问控制器将数据库返回的查询结果数据发送给条件控制器。
步骤S312、条件控制器判断查询结果数据是否需要录入线程缓存。如果需要,执行步骤S313;否则,直接执行步骤S314。
具体的,可以根据条件控制器的配置判断是否需要录入线程缓存,符合配置要求即可认为需要录入线程缓存。
这里所述需要录入线程缓存包括两个含义:一是查询数据时首先从线程缓存中查找;二是首次查询(在线程缓存中未查到数据而使用数据访问控制器获取数据)的查询结果数据要保存到线程缓存中。
步骤S313、将查询结果数据录入线程缓存。
步骤S314、将查询结果数据返回给应用API。
步骤S315、应用API向条件控制器发送表示本次请求结束的结束请求。
步骤S316、条件控制器接收到应用API发送的结束请求后,销毁线程缓存中的缓存对象及缓存自身,并清理线程变量,流程结束。
通过判断是否访问线程缓存以及根据判断结果得到相应的查询数据路线,并获取查询结果数据,可以在保持应用API语义的一致性前提下,提高数据访问的性能。
本发明实施例以管理类应用系统中的订购为例,提供一种数据共享的方法,可以提高数据访问的性能。
订购流程中大量的应用API都是以用户号码作为应用API输入,例如判断用户是否已经存在、是否允许用户进行订购、用户订购的产品是否与现有的产品存在互斥关系(即订购了一个产品就不能订购另一个产品)、用户是否重复订购了某个产品。
为了便于说明问题,假设订购需要依次调用功能A、功能功B、功能C以及功能D,这里所述的功能也就是应用API。应用API可以是一个具体的业务功能接口,可以实现为一个方法,如C++的一个函数、Java的一个方法,或者可以实现为组件接口,如一个EJB(Enterprise JavaBean)的接口等。这里以Java方法实现为例,场景示意图如图4所示,在每个功能中列出了需要进行数据访问的内部请求,为简单起见这里仅列出了多个功能重复调用的数据访问请求。
功能A、功能B、功能C和功能D均需要通过用户号码查询用户键值,其中功能C和功能D均需要通过用户键值查询用户已有的产品订购记录。
下面结合具体的流程阐述如何基于线程缓存实现数据共享访问。
情景一:功能A调用流程;
产品订购时首先调用功能A判断用户是否存在,功能A中需要“根据用户号码查询用户键值”,如图5所示,包括:
步骤S501、功能A向条件控制器发送查询数据请求。
具体的,请求的实现形式为带命名的SQL(结构化查询语言)加上相关的参数,其中每个SQL均通过一个名称来标识,所述相关的参数为用户号码。
步骤S502、条件控制器查询内部条件控制逻辑,判断是否需要访问线程缓存。
条件控制器使用规则引擎的方式实现,所述规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,可以实现将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。此处利用规则引擎定义条件控制逻辑。
对于本实施例中条件控制器的配置示例如下:
IF查询用户的信息
THEN使用线程缓存
对于功能A发送给条件控制器的查询请求,由于查询的是用户信息,上述条件判断成立,也就是说条件控制器判断出“根据用户号码查询用户键值”是需要访问缓存的。
步骤S503、条件控制器向线程缓存发送查询数据请求。
此处线程缓存使用与线程绑定的线程变量,在以Java语言构造的线程中可以设置线程变量,表示缓存生命周期和线程一致。在线程变量中保存一个哈希表,条件控制器发送哈希键值到线程缓存,键值为带有SQL名称和参数的哈希码。利用键值在线程缓存中查询对应的数据。
步骤S504、线程缓存向条件控制器返回查询结果数据。
如果在线程缓存中没有查询到相对应的查询结果数据,线程缓存返回的数据为空,该查询结果数据无效,继续执行步骤S505。在此实施例中,线程缓存中没有相应的数据。
步骤S505、条件控制器向数据访问控制器发送查询数据请求。
具体的,条件控制器向数据访问控制器发送查询数据请求,根据查询请求中的用户号码查询用户键值,这里数据访问控制器实现形式为JDBC的数据访问封装。
所述JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
步骤S506、数据访问控制器根据用户号码,在数据库的号码表中查询用户的键值。
步骤S507、数据库将用户键值返回到数据访问控制器。
步骤S508、数据访问控制器将用户键值返回给条件控制器。
步骤S509、将用户键值录入缓存。
由步骤S502中条件控制器的配置可以判断出该查询结果数据是需要录入线程缓存的,所以继续执行以下步骤。
步骤S510、条件控制器将用户键值返回到功能A。
情景二:功能B调用流程;
产品订购调用功能B判断“是否允许用户进行订购”,功能B中需要“根据用户号码查询用户键值”。如图6所示,包括:
步骤S601、功能B向条件控制器发送查询数据请求。
步骤S602、条件控制器根据内部的条件控制逻辑是否需要查询线程缓存。
由于条件控制器的配置示例如下:
IF查询用户的信息
THEN使用线程缓存
所以判断需要查询线程缓存。条件控制器判断出需要访问线程缓存后,继续执行以下步骤;
步骤S603、条件控制器向线程缓存发送查询数据请求。
步骤S604、线程缓存将查询结果数据返回给条件控制器。
由于此前功能A已经将相关查询结果数据录入到线程缓存中,线程缓存可以直接向条件控制器返回查询结果数据。
步骤S605、条件控制器将查询到的用户键值返回给功能B。
功能C、功能D中“根据用户号码查询用户键值”的流程和功能B的调用流程类似。
功能C中“根据用户键值查询已有产品订购记录”与功能A的流程类似,第一次查询数据时需要访问数据库;功能D中“根据用户键值查询已有产品订购记录”的流程和功能B调用流程类似,可以直接从线程缓存中获取数据。
在订购处理完成后,应用API发出结束请求给条件控制器表示本次请求结束,条件控制器销毁线程缓中的缓存对象及缓存自身,并清理线程变量,线程缓存生命周期结束。
通过使用本发明实施例提供的数据共享方法,可以在保持应用API语义的一致性(如只使用C++、Java)前提下,减少访问数据库的次数,提高数据访问的性能。
同时,本发明实施例还提供了一种数据共享的装置,如图7所示,具体包括:
第一接收模块10,用于接收查询数据请求;
第一判断模块20,用于当所述第一接收模块10接收到查询数据请求时,判断是否访问线程缓存;
第一发送模块30,用于当所述第一判断模块20判断访问线程缓存时,向所述线程缓存发送查询请求;
第二接收模块40,用于接收所述线程缓存返回的查询结果数据;
第二发送模块50,用于当所述第二接收模块40接收到查询结果数据时,向所述查询数据请求的发送方返回所述查询结果数据。
通过以上所述的装置,可以实现数据共享,具体实现方式如下:
第一接收模块10接收查询数据请求后,第一判断模块20判断此请求是否需要访问线程缓存。当第一判断模块20判断需要访问线程缓存时,第一发送模块30向所述线程缓存发送查询请求。
第二接收模块40接收所述线程缓存根据查询请求返回的查询结果数据,然后通过第二发送模块50向所述查询数据请求的发送方返回所述查询结果数据。
如图8所示,在又一实施例中所述数据共享的装置,还可以包括:
第三发送模块60,用于当所述第一判断模块20判断不访问线程缓存时,向数据访问控制器发送查询请求;
第三接收模块70,用于接收所述数据访问控制器返回的查询结果数据;
第四发送模块80,用于当所述第三接收模块70接收到查询结果数据时,向所述查询数据请求的发送方返回所述查询结果数据。
在又一实施例中所述数据共享的装置,还可以包括:
第二判断模块90,用于判断所述第二接收模块40接收的查询结果数据是否有效;
录入判断模块100,用于判断所述第三接收模块70接收到的查询结果数据是否录入线程缓存。
所述数据共享的装置,还可以包括:
销毁模块110,用于接收到结束请求后销毁线程缓存中的对象及缓存自身并清理线程变量。
通过以上所述的模块,可以实现数据共享,具体实现方式如下:
第一接收模块10接收查询数据请求后,第一判断模块20判断此请求是否需要访问线程缓存。具体的,根据第一判断模块20中设定的条件控制逻辑对查询数据请求进行判断。所述条件控制逻辑的实现形式为一系列的判断条件。
当第一判断模块20判断需要访问线程缓存时,第一发送模块30向所述线程缓存发送查询请求。第二接收模块40接收所述线程缓存根据查询请求返回的查询结果数据后,第二判断模块90检测所述第二接收模块40接收的查询结果数据是否有效,若有效,通过第二发送模块50将查询结果数据发送到应用接口;若无效,通过第三发送模块60向数据访问控制器发送查询请求。
当第一判断模块20判断不需要访问线程缓存时,第三发送模块60向数据访问控制器发送查询请求。第三接收模块70接收到所述数据访问控制器返回的查询结果数据后,录入判断模块100判断查询结果数据是否需要录入线程缓存。此后第四发送模块80向应用接口返回查询结果数据。
接收到结束请求后,销毁模块110销毁线程缓存中的对象及缓存自身并清理线程变量。
通过使用本发明实施例提供的数据共享的装置,可以实现数据共享的方法,有效的确保了在不会出现脏数据的前提下,使单次调用数据充分共享。
同时本发明实施例还提供了一种数据共享的系统,如图1所示,包括:条件控制器1,线程缓存2;
所述条件控制器1,用于接收到查询数据请求,判断是否需要访问所述线程缓存;所述判断结果为需要访问线程缓存时,向所述线程缓存发送查询请求;接收所述线程缓存返回的查询结果数据,向所述查询数据请求的发送方返回所述查询结果数据;
所述线程缓存2,用于为所述条件控制器1提供查询结果数据,当数据访问控制器向条件控制器返回查询结果数据时,录入所述查询结果数据。
所述数据共享的系统还包括:数据访问控制器3和数据库4;
所述数据访问控制器3,用于接收到条件控制器2发送的数据查询请求后,在数据库中查询数据并将查询结果数据发送到条件控制器;
所述数据库4,用于为所述数据访问控制器3提供查询数据。
具体的,所述条件控制器1,接收到查询数据请求,判断是否需要访问所述线程缓存2;所述判断结果为需要访问线程缓存时,向所述线程缓存2发送查询请求;接收所述线程缓存2返回的查询结果数据后,向所述查询数据请求的发送方返回所述查询结果数据。所述判断结果为不需要访问线程缓存2时,条件控制器1向数据访问控制器3发送查询数据请求,所述数据访问控制器3根据查询数据请求在数据库4中搜索相对应的数据,并将查询结果数据返回条件控制器1。条件控制器1向所述查询数据请求的发送方返回所述查询结果数据。
所述条件控制器包括:
第一接收模块10,用于接收查询数据请求;
第一判断模块20,用于当所述第一接收模块10接收到查询数据请求时,判断是否访问线程缓存;
第一发送模块30,用于当所述第一判断模块20判断访问线程缓存时,向所述线程缓存发送查询请求;
第二接收模块40,用于接收所述线程缓存返回的查询结果数据;
第二发送模块50,用于当所述第二接收模块40接收到查询结果数据时,向所述查询数据请求的发送方返回所述查询结果数据。
通过以上所述模块,可以实现数据共享,具体实现方式如下:
第一接收模块10接收查询数据请求后,第一判断模块20判断此请求是否需要访问线程缓存。当第一判断模块20判断需要访问线程缓存时,第一发送模块30向所述线程缓存发送查询请求。
第二接收模块40接收所述线程缓存根据查询请求返回的查询结果数据,然后通过第二发送模块50向所述查询数据请求的发送方返回所述查询结果数据。
所述条件控制器,还包括:
第三发送模块60,用于当所述第一判断模块20判断不访问线程缓存时,向数据访问控制器发送查询请求;
第三接收模块70,用于接收所述数据访问控制器返回的查询结果数据;
第四发送模块80,用于当所述第三接收模块70接收到查询结果数据时,向所述查询数据请求的发送方返回所述查询结果数据。
所述条件控制器,还包括:
第二判断模块90,用于判断所述第二接收模块40接收的查询结果数据是否有效;
录入判断模块100,用于判断所述第三接收模块70接收到的查询结果数据是否录入线程缓存。
所述条件控制器,还包括:
销毁模块110,用于接收到结束请求后销毁线程缓存中的对象及缓存自身并清理线程变量。
通过以上所述模块,可以实现数据共享,具体实现方式如下:
第一接收模块10接收查询数据请求后,第一判断模块20判断此请求是否需要访问线程缓存2。具体的,根据第一判断模块20中设定的条件控制逻辑对查询数据请求进行判断。所述条件控制逻辑的实现形式为一系列的判断条件。
当第一判断模块20判断需要访问线程缓存2时,第一发送模块30向所述线程缓存2发送查询请求。第二接收模块40接收所述线程缓存2根据查询请求返回的查询结果数据后,第二判断模块90检测所述第二接收模块40接收的查询结果数据是否有效,若有效,通过第二发送模块50将查询结果数据发送到应用接口;若无效,通过第三发送模块60向数据访问控制器3发送查询请求。
当第一判断模块20判断不需要访问线程缓存时,第三发送模块60向数据访问控制器3发送查询请求。数据访问控制器3在数据库4中获取相应的数据。第三接收模块70接收到所述数据访问控制器3返回的查询结果数据后,录入判断模块100判断查询结果数据是否需要录入线程缓存2。此后第四发送模块80向应用接口返回查询结果数据。
接收到结束请求后,销毁模块110销毁线程缓存中的对象及缓存自身并清理线程变量。
通过使用本发明的实施例提供的方法、系统和装置,可以有效的确保在不会出现脏数据的前提下,使单次调用数据充分共享,并且在保持应用API语义的一致性前提下,提高数据访问的性能。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以可借助软件加必要的通用硬件平台的方式来实现基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。

Claims (15)

1、一种数据共享的方法,其特征在于,包括:
接收到查询数据请求,根据条件控制逻辑判断所述数据查询请求是否访问线程缓存;
所述判断结果为访问所述线程缓存时,向所述线程缓存发送查询请求;
接收所述线程缓存返回的查询结果数据,向所述查询数据请求的发送方返回所述查询结果数据;
所述判断结果为不访问线程缓存时,向数据访问控制器发送查询数据请求,并接收所述数据访问控制器在数据库中查询得到的查询结果数据,向所述查询数据请求的发送方返回所述查询结果数据。
2、如权利要求1所述数据共享的方法,其特征在于,所述接收到查询数据请求之前还包括:
将缓存与线程进行绑定形成所述线程缓存。
3、如权利要求2所述数据共享的方法,其特征在于,所述形成所述线程缓存后使用所述线程的线程变量标识所述缓存的生命周期,使所述缓存与所述线程的生命周期一致。
4、如权利要求1所述数据共享的方法,其特征在于,所述判断是否访问线程缓存具体包括:
根据条件控制逻辑判断所述查询数据请求是否访问线程缓存。
5、如权利要求1所述数据共享的方法,其特征在于,所述接收数据访问控制器在数据库中查询得到的查询结果数据之后,还包括:
判断所述查询结果数据是否录入线程缓存;
所述判断结果为录入线程缓存,将所述查询结果数据录入线程缓存。
6、如权利要求1所述数据共享的方法,其特征在于,所述接收所述线程缓存返回的查询结果数据后还包括:
判断查询结果数据是否有效;
所述判断结果为有效,向所述查询数据请求的发送方返回所述查询结果数据;
所述判断结果为无效,向数据访问控制器发送查询数据请求。
7、如权利要求1所述数据共享的方法,其特征在于,所述向所述查询数据请求的发送方返回所述查询结果数据后还包括:
接收到结束请求,销毁线程缓存中的对象及缓存自身并清理线程变量。
8、一种数据共享的装置,其特征在于,包括:
第一接收模块,用于接收查询数据请求;
第一判断模块,用于当所述第一接收模块接收到查询数据请求时,判断是否访问线程缓存;
第一发送模块,用于当所述第一判断模块判断访问线程缓存时,向所述线程缓存发送查询请求;
第二接收模块,用于接收所述线程缓存返回的查询结果数据;
第二发送模块,用于当所述第二接收模块接收到查询结果数据时,向所述查询数据请求的发送方返回所述查询结果数据。
第三发送模块,用于当所述第一判断模块判断不需要访问线程缓存时,向数据访问控制器发送查询请求;
第三接收模块,用于接收所述数据访问控制器返回的查询结果数据;
第四发送模块,用于当所述第三接收模块接收到查询结果数据时,向所述线程缓存发送查询请求。
9、如权利要求8所述数据共享的装置,其特征在于,还包括:
第二判断模块,用于判断所述第二接收模块接收的查询结果数据是否有效。
10、如权利要求8所述数据共享的装置,其特征在于,还包括:
录入判断模块,用于判断所述第三接收模块接收到的查询结果数据是否录入线程缓存。
11、如权利要求8所述数据共享的装置,其特征在于,还包括:
销毁模块,用于接收到结束请求后销毁线程缓存中的对象及缓存自身并清理线程变量。
12、如权利要求8至11中任一项所述数据共享的装置,其特征在于,所述装置为条件控制器。
13、一种数据共享的系统,其特征在于,包括:条件控制器,线程缓存;
所述条件控制器,用于接收到查询数据请求,判断是否需要访问所述线程缓存;所述判断结果为需要访问线程缓存时,向所述线程缓存发送查询请求;接收所述线程缓存返回的查询结果数据,向所述查询数据请求的发送方返回所述查询结果数据;所述判断结果为不需要访问线程缓存时,条件控制器向数据访问控制器发送查询数据请求,所述数据访问控制器根据查询数据请求在数据库中搜索相对应的数据,并将查询结果数据返回条件控制器。条件控制器向所述查询数据请求的发送方返回所述查询结果数据;
所述线程缓存,用于接收所述查询请求,并为所述条件控制器提供查询结果数据。
14、如权利要求13所述数据共享的系统,其特征在于,
还包括:数据访问控制器和数据库;所述条件控制器,进一步用于判断结果为不需要访问线程缓存时,所述条件控制器向所述数据访问控制器发送查询数据请求;
所述数据访问控制器,用于接收到所述条件控制器发送的数据查询请求后,在所述数据库中查询数据并将查询结果数据发送到所述条件控制器;
所述数据库,用于为所述数据访问控制器提供查询数据。
15、如权利要求13所述数据共享的系统,其特征在于,所述条件控制器包括:
第一接收模块,用于接收查询数据请求;
第一判断模块,用于当所述第一接收模块接收到查询数据请求时,判断是否访问线程缓存;
第一发送模块,用于当所述第一判断模块判断访问线程缓存时,向所述线程缓存发送查询请求;
第二接收模块,用于接收所述线程缓存返回的查询结果数据;
第二发送模块,用于当所述第二接收模块接收到查询结果数据时,向所述查询数据请求的发送方返回所述查询结果数据。
CN200810099505A 2008-05-09 2008-05-09 一种数据共享的方法、系统和装置 Active CN100589079C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200810099505A CN100589079C (zh) 2008-05-09 2008-05-09 一种数据共享的方法、系统和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200810099505A CN100589079C (zh) 2008-05-09 2008-05-09 一种数据共享的方法、系统和装置

Publications (2)

Publication Number Publication Date
CN101271410A CN101271410A (zh) 2008-09-24
CN100589079C true CN100589079C (zh) 2010-02-10

Family

ID=40005399

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200810099505A Active CN100589079C (zh) 2008-05-09 2008-05-09 一种数据共享的方法、系统和装置

Country Status (1)

Country Link
CN (1) CN100589079C (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101815094A (zh) * 2010-03-18 2010-08-25 中兴通讯股份有限公司 一种实现数据共享访问的方法、装置及系统
CN102999522B (zh) * 2011-09-15 2016-09-14 阿里巴巴集团控股有限公司 一种数据存储方法和装置
CN102880557B (zh) * 2012-09-13 2015-06-10 浙江金大科技有限公司 一种异构数据源的多级分布式高速缓存的查找方法
CN103164347A (zh) * 2013-02-18 2013-06-19 中国农业银行股份有限公司 数据缓存的方法和装置
CN103716375A (zh) * 2013-12-05 2014-04-09 北京用友政务软件有限公司 基于分布式缓存的多级财政数据交互方法及系统
CN104391876A (zh) * 2014-10-30 2015-03-04 北京思特奇信息技术股份有限公司 一种静态数据存储及查询方法及系统
CN105635208A (zh) * 2014-10-30 2016-06-01 阿里巴巴集团控股有限公司 一种业务处理方法和装置
CN109062647B (zh) * 2018-07-20 2021-11-09 武汉斗鱼网络科技有限公司 活动窗口的数据共享方法、装置、设备及存储介质
CN112130909B (zh) * 2019-06-24 2023-03-24 杭州海康威视系统技术有限公司 系统和功能执行的方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998030959A1 (en) * 1997-01-09 1998-07-16 Openframe Corporation Ltd. Data sharing method and computer architecture
CN1612252A (zh) * 2003-10-31 2005-05-04 浙江中控技术股份有限公司 实时数据在线压缩与解压缩方法
CN101089829A (zh) * 2007-08-01 2007-12-19 杭州华三通信技术有限公司 一种共享缓存系统及实现方法
US7318127B2 (en) * 2005-02-11 2008-01-08 International Business Machines Corporation Method, apparatus, and computer program product for sharing data in a cache among threads in an SMT processor

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998030959A1 (en) * 1997-01-09 1998-07-16 Openframe Corporation Ltd. Data sharing method and computer architecture
CN1612252A (zh) * 2003-10-31 2005-05-04 浙江中控技术股份有限公司 实时数据在线压缩与解压缩方法
US7318127B2 (en) * 2005-02-11 2008-01-08 International Business Machines Corporation Method, apparatus, and computer program product for sharing data in a cache among threads in an SMT processor
CN101089829A (zh) * 2007-08-01 2007-12-19 杭州华三通信技术有限公司 一种共享缓存系统及实现方法

Also Published As

Publication number Publication date
CN101271410A (zh) 2008-09-24

Similar Documents

Publication Publication Date Title
CN100589079C (zh) 一种数据共享的方法、系统和装置
US11349940B2 (en) Server side data cache system
CN101034990B (zh) 权限管理方法及装置
CN100480948C (zh) 移动终端、资源访问控制系统以及资源访问控制方法
CN101523393B (zh) 本地存储基于web的数据库数据
US20150052223A1 (en) System and method for determining effective policy profiles in a client-server architecture
CN103957239B (zh) Dns缓存信息处理方法、设备及系统
US20050108394A1 (en) Grid-based computing to search a network
CN102970284B (zh) 用户信息处理方法和服务器
CN101236569B (zh) 一种基于ContextFS上下文文件系统的高效动态路径解析方法
US20070136306A1 (en) Distributed method for synchronizing and updating bookmarks on multiple computer devices
EP2002343A2 (en) Multi-cache cooperation for response output caching
KR101634403B1 (ko) 공유 디스크 데이터베이스 시스템에서 락 통신들을 감소시키기 위한 접근 방법들
CN1531303A (zh) 协议无关的客户端高速缓存系统和方法
US20110246475A1 (en) System and method for locating and retrieving private information on a network
CN106202261A (zh) 一种数据访问请求的分布式处理方法及引擎
CN106372266A (zh) 一种基于切面和配置文件的云操作系统缓存及访问方法
CN105488208A (zh) 数据查找方法与装置
CN104767653A (zh) 一种网络接口监控的方法和装置
CN103136205A (zh) Web图片服务系统及方法
US8352442B2 (en) Determination of an updated data source from disparate data sources
CN110109931B (zh) 一种用于防止rac实例间数据访问发生冲突的方法及系统
CN1858732B (zh) 一种数字家庭网络中的文件搜索系统及方法
CN109254981A (zh) 一种分布式缓存系统的数据管理方法和装置
CN105610881A (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
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20201216

Address after: 276800 No. 71 Taiyuan Road, Rizhao Economic Development Zone, Shandong Province

Patentee after: Chuangze intelligent robot Group Co.,Ltd.

Address before: 510640 2414-2416 of the main building 371, five mountain road, Tianhe District, Guangzhou, Guangdong.

Patentee before: GUANGDONG GAOHANG INTELLECTUAL PROPERTY OPERATION Co.,Ltd.

Effective date of registration: 20201216

Address after: 510640 2414-2416 of the main building 371, five mountain road, Tianhe District, Guangzhou, Guangdong.

Patentee after: GUANGDONG GAOHANG INTELLECTUAL PROPERTY OPERATION Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.

TR01 Transfer of patent right