CN101127041A - 一种业务规则基础数据的缓冲方法 - Google Patents

一种业务规则基础数据的缓冲方法 Download PDF

Info

Publication number
CN101127041A
CN101127041A CNA2007100453463A CN200710045346A CN101127041A CN 101127041 A CN101127041 A CN 101127041A CN A2007100453463 A CNA2007100453463 A CN A2007100453463A CN 200710045346 A CN200710045346 A CN 200710045346A CN 101127041 A CN101127041 A CN 101127041A
Authority
CN
China
Prior art keywords
business rule
basic data
timestamp
data
rule basic
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.)
Pending
Application number
CNA2007100453463A
Other languages
English (en)
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.)
JIDONG GROUP HOLDING CO Ltd
Original Assignee
JIDONG GROUP HOLDING 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 JIDONG GROUP HOLDING CO Ltd filed Critical JIDONG GROUP HOLDING CO Ltd
Priority to CNA2007100453463A priority Critical patent/CN101127041A/zh
Publication of CN101127041A publication Critical patent/CN101127041A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

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

Abstract

本发明涉及一种业务规则基础数据缓冲方法,是一种用来解决业务系统在大并发访问请求的情况下,降低数据库压力,提高系统响应速度的方法。本发明利用业务规则基础数据的不易变动的特性和系统主存的高速存取能力,及时有效地将业务规则数据缓存到系统主存中,从而达到提高系统响应速度的目的。

Description

一种业务规则基础数据的缓冲方法
技术领域
本发明涉及一种业务规则基础数据的缓冲方法,是一种用来解决业务系统在大并发访问请求的情况下,降低数据库压力,提高系统响应速度的方法。可以应用于各种高并发量的计费系统、域名服务、负载均衡控制服务等,属于数据通讯技术领域。
背景技术
在计费系统中,发起计费请求经常碰到对数据库的查询操作,主要涉及到那些预先设定好的各种各样的计费规则,而每次都向数据库服务器发起查询请求显然是一种低效的方法。
发明内容
本发明的目的是提供一种降低对数据库服务器的访问强度,提高系统的响应效率的业务规则基础数据的缓冲方法。
为实现以上目的,本发明的技术方案是提供一种业务规则基础数据的缓冲方法,其特征在于,采用C,C++或者C#语言编程实现,运行于基于X86架构的PC服务器,其方法为:
第一步.对以下因素进行了假设:
a.业务规则基础数据都存放在系统的数据库服务器中;
b.业务规则基础数据会变动,但是变动较少,少则几天都不发生变动,多则几分钟才变动1次;
c.并不要求业务规则基础数据的变动要求即时生效,也就是说可以允许有几十秒甚至1分钟的延时;
d.缓存中的业务规则基础数据不需要被修改;
e.业务规则基础数据数据量并不非常大,计算机主存足够能够容纳2倍的业务规则基础数据;
第二步.在数据库中创建一个“业务规则基础数据时间戳表”,用来记录每个表的最后更新时间;
第三步.为每个需要被缓冲的业务规则基础数据表创建一个触发器,该触发器在表发生变化时,自动更新“业务规则基础数据时间戳表”中对应表名的时间戳信息;
第四步.在内存中为每个表建立一个时间戳,并初始化为-1,再为每个需要缓冲的“业务规则基础数据表”建立一个双缓冲结构;
第五步.系统进行初始化,并将业务规则基础数据加载进入系统缓冲中,并记录当前的数据更新时间戳;
第六步.系统启动监视线程,监视每个被加载进来的业务规则基础数据的时间戳;
第七步.从数据库读取某个业务规则基础数据表的时间戳,并与内存中的时间戳进行对比,判断是否被改变,如果未改变,则一直等待,否则执行下一步;
第八步.判断旧缓冲的引用计数是否为0,如果不为0,需要等待,直到引用计数为0;
第九步.释放旧缓冲占用的空间;
第十步.为旧缓冲分配新的缓冲空间,并从数据库加载新的数据;
第十一步.进行缓冲切换,将旧缓冲变成当前缓冲,当前缓冲变成旧缓冲。
本发明主要涉及到如何有效及时发现数据库中对业务规则的改动,如何有效地缓存到计算机系统主存中,并提供缓存数据的并行高速访问方法。
本发明通过有效及时地对预先设定并且不经常变动的数据缓存到系统内存中,并在内存中提供高速访问请求,利用业务规则基础数据的不易变动的特性和系统主存的高速存取能力,及时有效地将业务规则数据缓存到系统主存中,从而达到提高系统响应速度的目的,
本发明的优点是降低对数据库服务器的访问强度,提高系统的响应效率。
附图说明
图1为本发明的实现方法的示意图;
图2为本发明的实现方法中的缓冲切换操作步骤流程图;
图3为本发明的缓冲区访问的操作步骤流程图。
具体实施方式
以下结合附图和实施例对本发明作进一步说明。
实施例
如图1所示,为本发明的实现方法的示意图,一种业务规则基础数据的缓冲方法,其特征在于,采用C,C++或者C#语言编程实现,运行于基于X86架构的PC服务器,其方法为:
首先对以下因素进行了假设:
a.业务规则基础数据都存放在系统的数据库服务器中;
b.业务规则基础数据会变动,但是变动较少,少则几天都不发生变动,多则几分钟才变动1次;
c.并不要求业务规则基础数据的变动要求即时生效,也就是说可以允许有几十秒甚至1分钟的延时;
d.缓存中的业务规则基础数据不需要被修改;
e.业务规则基础数据数据量并不非常大,计算机主存足够能够容纳2倍的业务规则基础数据;
数据库系统中存放的每个业务规则基础数据表都被添加一个触发器,一旦发现业务规则基础数据表发生变化,将该表的最后更新时间登记到“业务规则基础数据时间戳表”中,该表结构为:表名+最后更新时间。
启动的后台监视线程按允许的时间间隔扫描“业务规则基础数据时间戳表”,因为“业务规则基础数据时间戳表”相对于业务规则基础数据表很小,所以对数据库系统产生的压力很小,几乎可以忽略,后台监视线程将缓存在内存中的“业务规则基础数据时间戳表”与从数据库系统最新获得的“业务规则基础数据时间戳表”进行对比,发现哪些业务规则基础数据表在一个扫描周期之间被更改过,并产生“缓冲更新任务列表”,根据产生的任务列表,从数据库中将数据提取到内存中。
具体实施方式:
1)首先为每个业务规则基础数据表创建一个触发器,该触发器监视每个表的更新情况,并将更新情况写入“业务规则基础数据时间戳表”,该表的结构如下:
数据库中“业务规则基础数据时间戳表”
名称(name) 类型(type) 含义(Description)
物理表名 字符串 物理表名称
时间戳 日期时间型 物理表的最后更新时间
2)在实际实施过程中,数据库中的业务规则基础数据表(简称“物理表”)与内存中想要缓冲的数据表(简称“内存表”)并非一一对应,有时候数据库中的多个物理表可能对应内存中的一个缓冲表,如多个“物理表”自然连接对应一个“内存表”,或者反过来,一个“物理表”被拆分成多个“内存表”。那么需要将本方法进行变通,建立一个存放在内存中的“内存表”和“物理表”的“对照关系表”。并将“对照关系表”唯一地映射为“内存表”,其数据结构如下:
对照关系表
名称(name) 类型(type) 含义(Description)
内存表名称 字符串 与对照关系表一一对应的内存表名称
物理表名列表 字符串数组 所包含的物理表的表名列表
同时建立一个内存中的“业务规则基础数据时间戳表”,其数据结构如下:
内存“业务规则基础数据时间戳表”
名称(name) 类型(type) 含义(Description)
物理表名 字符串 与数据库物理表对应的表名称
时间戳 日期时间型 当前缓冲使用的数据的更新时间戳
3)为每个“内存表”建立一个双缓冲结构的缓冲区。两个缓冲结构都有相同的数据结构,都用来存放对应“物理表”组合中的数据;
4)系统执行初始化,将“物理表”加载进来存入缓存,变成“内存表”;并设置第一个缓冲区为“当前缓冲区”;
5)系统启动监视线程,采用轮询方法对数据库中的“业务规则基础数据时间戳表”进行监视;
6)每次轮询,与内存中的“业务规则基础数据时间戳表”进行对照,产生时间戳已经被改变的“物理表名”列表;
7)根据产生的“物理表名”列表,在“对照关系表”中判断哪些“内存表”已经被更新,判断的规则如下,只要一个或一个以上“物理表”在“物理表名”列表中存在,并在“对照关系表”中的“物理表名列表”中存在,就认为“内存表”需要进行更新;
8)判断当前缓冲区的引用计数是否为0,如果不为0,需要等待,直到引用计数为0;
9)释放当前“内存表”的旧缓冲区,从数据库中提取新的数据到“内存表”中存入旧缓冲区,并进行缓存切换,旧缓冲区变成当前缓冲区,当前缓冲区变成旧缓冲区;
10)执行步骤6,进行下一次循环。
如图2所示,为本发明的实现方法中的缓冲切换操作步骤流程图,考虑到并发访问的问题,本方法对每个“业务规则基础数据表”采用了二缓冲区轮换的方法。不至于因为缓冲区刷新,导致读操作等待,以便提高缓冲区的访问性能。另外也不至于此时将原缓存中的数据进行淘汰,正巧有其他线程正在访问该缓存,而会产生不可预测的错误。
如图3所示,为本发明的缓冲区访问的操作步骤流程图,其方法为:
1)获取指定“业务规则基础数据表”的当前缓冲区,并通过增加引用计数的方式对缓冲区进行锁定;
2)只读访问当前缓冲区;
3)释放对缓冲的引用计数。
该方法已经在申请人研制的流媒体分发、计费系统中进行了实施,取得了比较好的效果,实现了发明的目的。

Claims (1)

1.一种业务规则基础数据的缓冲方法,其特征在于,采用C,C++或者C#语言编程实现,运行于基于X86架构的PC服务器,其方法为:第一步.对以下因素进行了假设:
a.业务规则基础数据都存放在系统的数据库服务器中;
b.业务规则基础数据会变动,但是变动较少,少则几天都不发生变动,多则几分钟才变动1次;
c.并不要求业务规则基础数据的变动要求即时生效,也就是说可以允许有几十秒甚至1分钟的延时;
d.缓存中的业务规则基础数据不需要被修改;
e.业务规则基础数据数据量并不非常大,计算机主存足够能够容纳2倍的业务规则基础数据;
第二步.在数据库中创建一个“业务规则基础数据时间戳表”,该表结构为:表名+最后更新时间,用来记录每个表的最后更新时间;
第三步.为每个需要被缓冲的业务规则基础数据表创建一个触发器,该触发器在表发生变化时,自动更新“业务规则基础数据时间戳表”中对应表名的时间戳信息;
第四步.在内存中为每个表建立一个时间戳,并初始化为-1,再为每个需要缓冲的“业务规则基础数据表”建立一个双缓冲结构;
第五步.系统进行初始化,并将业务规则基础数据加载进入系统缓冲中,并记录当前的数据更新时间戳;
第六步.系统启动监视线程,监视每个被加载进来的业务规则基础数据的时间戳;
第七步.从数据库读取某个业务规则基础数据表的时间戳,并与内存中的时间戳进行对比,判断是否被改变,如果未改变,则一直等待,否则执行下一步;
第八步.判断旧缓冲的引用计数是否为0,如果不为0,需要等待,直到引用计数为0;
第九步.释放旧缓冲占用的空间;
第十步.为旧缓冲分配新的缓冲空间,并从数据库加载新的数据;
第十一步.进行缓冲切换,将旧缓冲变成当前缓冲,当前缓冲变成旧缓冲。
CNA2007100453463A 2007-08-28 2007-08-28 一种业务规则基础数据的缓冲方法 Pending CN101127041A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNA2007100453463A CN101127041A (zh) 2007-08-28 2007-08-28 一种业务规则基础数据的缓冲方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNA2007100453463A CN101127041A (zh) 2007-08-28 2007-08-28 一种业务规则基础数据的缓冲方法

Publications (1)

Publication Number Publication Date
CN101127041A true CN101127041A (zh) 2008-02-20

Family

ID=39095073

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2007100453463A Pending CN101127041A (zh) 2007-08-28 2007-08-28 一种业务规则基础数据的缓冲方法

Country Status (1)

Country Link
CN (1) CN101127041A (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011012003A1 (zh) * 2009-07-28 2011-02-03 大连新中连软件集团有限公司 基于业务组件化的应用软件进行业务控制的方法和系统
CN102741843A (zh) * 2011-03-22 2012-10-17 青岛海信传媒网络技术有限公司 从数据库中读取数据的方法及装置
CN102929943A (zh) * 2012-09-28 2013-02-13 五八有限公司 数据输出方法及装置
CN103024210A (zh) * 2012-11-19 2013-04-03 北京思特奇信息技术股份有限公司 一种呼叫中心服务器中接续缓存方法及装置
CN103607458A (zh) * 2013-11-22 2014-02-26 厦门雅迅网络股份有限公司 一种手持终端同步基础数据的方法
CN103870483A (zh) * 2012-12-13 2014-06-18 厦门雅迅网络股份有限公司 一种动态调整内存空间批量存储数据的方法
CN105630812A (zh) * 2014-10-30 2016-06-01 阿里巴巴集团控股有限公司 集群应用缓存刷新方法及装置

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011012003A1 (zh) * 2009-07-28 2011-02-03 大连新中连软件集团有限公司 基于业务组件化的应用软件进行业务控制的方法和系统
CN102741843A (zh) * 2011-03-22 2012-10-17 青岛海信传媒网络技术有限公司 从数据库中读取数据的方法及装置
CN102741843B (zh) * 2011-03-22 2014-03-26 青岛海信传媒网络技术有限公司 从数据库中读取数据的方法及装置
CN102929943A (zh) * 2012-09-28 2013-02-13 五八有限公司 数据输出方法及装置
CN102929943B (zh) * 2012-09-28 2016-03-30 五八有限公司 数据输出方法及装置
CN103024210A (zh) * 2012-11-19 2013-04-03 北京思特奇信息技术股份有限公司 一种呼叫中心服务器中接续缓存方法及装置
CN103024210B (zh) * 2012-11-19 2015-09-09 北京思特奇信息技术股份有限公司 一种呼叫中心服务器中接续缓存方法及装置
CN103870483A (zh) * 2012-12-13 2014-06-18 厦门雅迅网络股份有限公司 一种动态调整内存空间批量存储数据的方法
CN103870483B (zh) * 2012-12-13 2018-04-20 厦门雅迅网络股份有限公司 一种动态调整内存空间批量存储数据的方法
CN103607458A (zh) * 2013-11-22 2014-02-26 厦门雅迅网络股份有限公司 一种手持终端同步基础数据的方法
CN103607458B (zh) * 2013-11-22 2018-07-10 厦门雅迅网络股份有限公司 一种手持终端同步基础数据的方法
CN105630812A (zh) * 2014-10-30 2016-06-01 阿里巴巴集团控股有限公司 集群应用缓存刷新方法及装置

Similar Documents

Publication Publication Date Title
CN101127041A (zh) 一种业务规则基础数据的缓冲方法
US11899937B2 (en) Memory allocation buffer for reduction of heap fragmentation
CN102331986B (zh) 一种数据库缓存管理方法及一种数据库服务器
CN101510209B (zh) 实现实时检索的方法、系统和服务器
CN102855239B (zh) 一种分布式地理文件系统
CN103379159B (zh) 一种分布式Web站点数据同步的方法
CN104965850B (zh) 一种基于开源技术的数据库高可用实现方法
CN102117338B (zh) 一种数据库缓存的方法
US20160019254A1 (en) Tiered data storage architecture
CN101930472A (zh) 一种支持分布式数据库基于并行查询的方法
CN1520562A (zh) 用于中央同步服务器的缓存机构的系统和方法
CN104202424B (zh) 一种使用软件架构扩展缓存的方法
CN104113587A (zh) 一种分布式文件系统客户端元数据缓存优化方法
CN102937964B (zh) 基于分布式系统的智能数据服务方法
CN103200278A (zh) 源站文件更新发布方法及缓存文件更新方法
US10838933B2 (en) Periodic performance optimization through heatmap based management of an in-memory area
CN103399894A (zh) 一种基于共享存储池的分布式事务处理方法
CN102420814A (zh) 一种数据访问方法、装置及服务器
CN104317944A (zh) 一种基于公式的时间戳动态调整并发控制方法
CN111127252A (zh) 一种水资源管理决策支持系统的数据管理方法
CN101232514A (zh) 网络附加存储节点的元数据同步方法及网络附加存储节点
CN108363772A (zh) 一种基于缓存的签到数据存储方法及装置
CN104281673A (zh) 一种数据库的缓存构建系统及对应的构建方法
Wang et al. Apache IoTDB: A time series database for IoT applications
CN104021137A (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
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication