CN101127041A - 一种业务规则基础数据的缓冲方法 - Google Patents
一种业务规则基础数据的缓冲方法 Download PDFInfo
- 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
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;
第九步.释放旧缓冲占用的空间;
第十步.为旧缓冲分配新的缓冲空间,并从数据库加载新的数据;
第十一步.进行缓冲切换,将旧缓冲变成当前缓冲,当前缓冲变成旧缓冲。
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)
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 | 阿里巴巴集团控股有限公司 | 集群应用缓存刷新方法及装置 |
-
2007
- 2007-08-28 CN CNA2007100453463A patent/CN101127041A/zh active Pending
Cited By (12)
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) | 一种业务规则基础数据的缓冲方法 | |
CN101510209B (zh) | 实现实时检索的方法、系统和服务器 | |
CN104965850B (zh) | 一种基于开源技术的数据库高可用实现方法 | |
CN102117338B (zh) | 一种数据库缓存的方法 | |
CN101930472A (zh) | 一种支持分布式数据库基于并行查询的方法 | |
CN102904887A (zh) | 一种Web客户端与服务器的数据同步方法和系统 | |
WO2007137133A2 (en) | Database partitioning by virtual partitions | |
CN102937964B (zh) | 基于分布式系统的智能数据服务方法 | |
CN104113587A (zh) | 一种分布式文件系统客户端元数据缓存优化方法 | |
US10838933B2 (en) | Periodic performance optimization through heatmap based management of an in-memory area | |
CN104050276A (zh) | 一种分布式数据库的缓存处理方法及系统 | |
CN103310000A (zh) | 元数据管理方法 | |
CN103200278A (zh) | 源站文件更新发布方法及缓存文件更新方法 | |
CN103399894A (zh) | 一种基于共享存储池的分布式事务处理方法 | |
CN106648917B (zh) | 一种差异更新缓存数据的方法及系统 | |
CN111127252A (zh) | 一种水资源管理决策支持系统的数据管理方法 | |
CN104202424A (zh) | 一种使用软件架构扩展缓存的方法 | |
CN103838781A (zh) | 数据库访问方法及系统 | |
CN114490744B (zh) | 一种数据缓存方法、存储介质、电子装置 | |
CN103365987A (zh) | 一种基于共享磁盘架构的集群数据库系统及数据处理方法 | |
CN114201446B (zh) | 实现hdfs远端存储挂载的方法及系统 | |
Choi et al. | Workload-optimized sensor data store for industrial IoT gateways | |
Olmsted et al. | High volume web service resource consumption | |
CN109635042B (zh) | Oltp与olap一体化的汽车金融大数据系统 | |
CN113407631B (zh) | 基于kafka与哈希共享内存的分布式数据中心 |
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 |