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 |