CN100495396C - 数据库访问的实现方法 - Google Patents
数据库访问的实现方法 Download PDFInfo
- Publication number
- CN100495396C CN100495396C CNB2006100581984A CN200610058198A CN100495396C CN 100495396 C CN100495396 C CN 100495396C CN B2006100581984 A CNB2006100581984 A CN B2006100581984A CN 200610058198 A CN200610058198 A CN 200610058198A CN 100495396 C CN100495396 C CN 100495396C
- Authority
- CN
- China
- Prior art keywords
- data
- database
- hard disc
- memory mirror
- visit process
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据库访问的实现方法,包括:将数据库中待访问的数据从硬盘镜像到内存中;数据库访问进程通过内存镜像数据进行对所述数据的访问操作;根据内存镜像数据的变化进行硬盘数据的同步。本发明通过为内存镜像数据设置写同步区,支持对数据的双向访问,避免了可能的数据写操作冲突,实现了对内存镜像数据的灵活访问。
Description
技术领域
本发明涉及计算机数据库系统,尤其涉及一种数据库访问的实现方法及应用该方法的SCP(Service Control Point,业务控制点)服务器。
背景技术
电信运营商提供的中小型增值业务系统中,包括为用户提供的记帐卡业务。在开通记帐卡业务后,用户在电信运营商网络内的任何一部话机上拨接入码,输入记帐卡号、密码,通过权限认证后,就可以拨打电话,通话费用实时从记帐卡扣除。
在运营商的网络侧,对记帐卡业务,在SCP上存放记帐卡号、密码、话费余额、有效期等业务数据。当SSP(Service Switch Point,业务交换点)将用户输入的记帐卡号、密码等信息提交到SCP中,由SCP对卡号的有效性进行检查,在SCP验证卡号对应的密码正确、话费尚有余额且尚未超过有效期时,认为该用户通过权限认证,指示SSP播放语音,提示用户可以拨打电话。
记帐卡的业务数据的查询和修改都在SCP的数据库服务器中实现。SCP服务器通常采用PC(Personal Computer,个人计算机)服务器,由于PC服务器的处理能力问题,当记帐卡的业务数据增加到一定程度时,对数据库的访问需要耗费相当长的时间,使用户因等待而感到不适,严重时甚至会造成系统不可用。
现有技术中通常采用以下几种方法来提高大容量数据库的访问速度:
其一是选择更优的数据库系统;这种方法需要更换与高性能的数据库系统相适应的数据库服务器,成本很高;
其二是使用可以预先进行编译和优化的视图和存储过程来提高数据库的检索效率;这种方法在PC服务器上受限于其处理能力,难以取得明显的效果,仍旧需要与高性能的服务器同时使用才能提高访问效率;
其三是在进行数据库的表设计时避免使用image(图像)、text(文本)等数据量大的字段,而将这些数据以文件的形式存放在文件服务器上,在数据库中只放置对相关文件的访问路径,由文件服务器来承担这些文件的输入输出服务;使用这种方法需要配置专门的文件服务器,成本较高。
可见,现有技术中都需要添加或更换硬件来提高数据库的访问速度。
发明内容
本发明要解决的是现有技术中提高数据库的访问速度需要改良硬件造成成本过高的问题。
本发明所述数据库访问的实现方法包括以下步骤:
将数据库中待访问的数据从硬盘镜像到内存中,所述待访问的数据包括至少一个表;
数据库访问进程通过内存镜像数据进行对所述数据的访问操作,所述数据库访问进程包括内存数据访问进程和硬盘数据访问进程,所述访问操作包括:
为内存镜像数据在内存中设置写同步区,具体为为需要被硬盘数据访问进程修改的表中字段设置写同步字段;
当所述内存数据访问进程访问所述内存镜像数据时,由内存数据访问进程直接对内存镜像数据进行读写操作,根据内存镜像数据的变化进行硬盘数据的同步;
当所述硬盘数据访问进程对所述内存镜像数据进行写操作时,执行以下步骤:硬盘数据访问进程将对内存镜像数据的变更指示写入写同步区,具体为硬盘数据访问进程将对表中数据的变更指示写入该数据所在表项的写同步字段;内存数据访问进程根据写同步区中的变更指示进行内存镜像数据的写操作,具体为内存数据访问进程当写同步字段中写入变更指示后,根据变更指示进行其所在表项对应数据的写操作,之后清除该变更指示,根据内存镜像数据的变化进行硬盘数据的同步;
当所述硬盘数据访问进程进行数据库的读操作时,其通过硬盘数据进行对数据库的读操作。
优选地,所述数据库为记帐卡业务数据库;所述表中包括记帐卡卡号字段,每个表中各表项的记帐卡卡号具有相同的特征值。
优选地,所述方法在将待访问的数据从硬盘镜像到内存中之后还包括:以记帐卡卡号的哈希值作为索引组织每个表的内存镜像数据。
优选地,所述方法在对记帐卡数据库的数据进行访问操作前还包括:根据记帐卡卡号的特征值确定一个表作为执行访问操作的对象。
优选地,所述记帐卡卡号根据伪随机算法生成,具有平均分布的特征值。
优选地,所述表还包括密码字段和余额字段,分别用来存储记帐卡的密码和余额。
本发明将被频繁访问数据由硬盘镜像至内存中,通过内存而不是硬盘完成这些数据的访问,同时将数据变化实时同步到硬盘中,在现有的硬件条件下极大地提高了访问速度;
进一步地,本发明通过为内存镜像数据设置写同步区,硬盘数据访问进程只能通过内存数据访问进程对内存镜像数据进行修改,避免了可能的数据写操作冲突,实现了对内存镜像数据的灵活访问。
附图说明
图1为本发明所述数据库访问实现方法的流程图;
图2为本发明所述数据库访问实现方法应用示例的流程图。
具体实施方式
对数据库进行访问的客户端,如记帐卡用户而言,对操作时的延时更为敏感,需要尽快得到系统的回复,而对系统何时更新数据库则并不关心。DBMS(DataBase Manage System,数据库管理系统)在内存中开设数据缓冲区,用来存放当前被访问的数据,当数据库访问进程要访问的数据不在缓冲区中时,DBMS需要将其从硬盘中调入缓冲区。也就是说,如果客户端访问的数据在内存中,就能很快得到结果,而如果不在内存中,就会需要较长时间。
因此,可以在内存中保留时延敏感的进程所访问数据的镜像,这些进程通过内存镜像数据完成对数据库访问操作,这样客户端可以在很短的时间内得到访问结果;同时,将这些进程对内存镜像数据的修改实时同步到硬盘中,以保持数据的完整性。
如果同时还有对时延不敏感的进程也需要访问相同的数据,既可以同样访问内存镜像数据,也可以访问硬盘数据以便更好地保证时延敏感进程的响应时间。而由不同的进程分别对内存镜像数据和对硬盘数据进行访问操作可能造成访问冲突,因而可以只对镜像到内存中的数据进行修改,再同步修改的结果。
本文中将通过内存镜像数据进行数据库访问的进程称之为内存数据访问进程,将通过硬盘来访问镜像到内存中的数据的进程称为硬盘数据访问进程。
本发明所述数据库访问实现方法的流程如图1所示。在步骤S110,将内存数据访问进程所访问的数据镜像到内存中。镜像到内存中的数据可以是数据库中的所有数据,也可以是部分数据。
如果有硬盘数据访问进程需要同时访问镜像的数据,执行步骤S120,在内存中为内存镜像数据设置写同步区。写同步区为内存中一段由内存数据访问进程和硬盘数据访问进程共同使用的地址空间,用来避免可能的数据写操作冲突。
当内存数据访问进程访问数据时,执行步骤S130,直接对内存镜像数据进行读写操作,转步骤S170。
当硬盘数据访问进程对镜像数据进行写操作时,不能直接修改硬盘中的数据,而是执行步骤S140,将对内存镜像数据的变更指示写入写同步区。变更指示的实现可以由用户根据具体应用情况确定,例如,可以按照类似于可执行语句的方式将能够定位要变更的数据的信息、如何变更写入写同步区,采用这种方法的写同步区只需要占用相当少的地址空间就可以为大量的数据实现单向的写操作;再如,还可以为需要同时由硬盘数据访问进程和内存数据访问进程进行写操作的每个数据设置一个专用的写同步区,则硬盘数据访问进程只需在该专用的写同步区中写入如何变更的信息即可,这种方法需要较大的地址空间但可以提高写操作的效率。
在步骤S150,内存数据访问进程按照写同步区的变更指示进行内存镜像数据的写操作。在写同步区写入了变更指示后,内存数据访问进程按照变更指示对相应的内存镜像数据做对应的修改,转步骤S170。
在步骤S160,当硬盘数据访问进程进行读操作时,执行步骤S160,通过硬盘数据直接进行读操作。
在步骤S170,在内存镜像数据发生变化时,将内存镜像数据的变化同步到硬盘上。
对不包括硬盘数据访问进程的应用情况,步骤S140、S150和S160可以省略。如果镜像到内存中的是数据库的一部分,对未进行镜像部分的访问与现有技术中的实现方法相同,此处不再赘述。
以下以电信增值业务系统中的对记帐卡业务数据库的访问为例,来说明本发明的具体应用。在记帐卡业务系统中,与用户直接相关的数据库访问操作都以内存数据访问进程进行,以确保响应时间,其他与数据库的访问操作以硬盘数据访问进程进行。
记帐卡业务数据库访问实现方法的流程如图2所示。在步骤S201,按照伪随机算法生成记帐卡卡号,选择伪随机算法的条件是使得随机生成的卡号具有平均分布的特征值。考虑到访问记帐卡业务数据库的便利性,最好选择卡号或卡号的一部分作为特征值,例如,以卡号的末位作为特征值,可以将记帐卡业务数据库拆分为10个表,分别对应于记帐卡卡号末位的0到9。
在步骤S202,根据特征值将记帐卡业务数据库分成至少两个表。这样,在访问数据库时,可以以特征值为索引访问不同的表,从而提高数据查询的速度。
在步骤S203,将各个表或各个表中需要被内存数据访问进程访问的部分镜像到内存中,其中包括记帐卡卡号字段,以及密码字段和余额字段。
在步骤S204,以记帐卡卡号的哈希值为索引组织每个表的内存镜像数据。以表中某个字段的哈希值为索引来实现对表项的快速查询在现有技术中已有多种实现方法,本发明中不再赘述。
仍以卡号末位作为特征值的情况为例,在内存中建立10个哈希表来存放记帐卡业务数据库的10个表的数据,将10个表的数据镜像到内存中,以卡号对表中的数据定址。
在步骤S205,为内存镜像数据中需要被硬盘数据访问进程修改的表中字段设置写同步字段。每个写同步字段对应于同一个表中一个需要被硬盘数据访问进程修改的字段。
在步骤S206,在访问记帐卡业务数据库时,无论通过内存数据访问进程还是通过硬盘数据访问进程,都先根据记帐卡卡号的特征值为索引确定一个表作为对象来进行访问操作。
对内存数据访问进程,执行步骤S207,以记帐卡卡号的哈希值为索引对表中的数据进行读写操作,转步骤S211。
对硬盘数据访问进程的写操作,执行步骤S208,硬盘数据访问进程以记帐卡卡号为索引查找到表中的数据,将对表中数据的变更指示写入该数据所在表项的写同步字段。由于每个表项的写同步字段都有与其对应的表中字段,硬盘数据访问进程只需将变更指示写入该写同步字段即可。
在步骤S209,内存数据访问进程按照变更指示及写入变更指示的同步字段,修改该表项中对应的数据字段,并在数据字段修改完成后清除该变更指示;之后转步骤S211。
对硬盘数据访问进程的读操作,执行步骤S210,以记帐卡卡号为索引对硬盘上的各个表进行读操作。
在步骤S211,对内存镜像数据中发生的变化,将其同步到硬盘上对应的表中。
这样,用户对记帐卡业务数据库的访问操作都通过内存镜像的表来进行,这些访问操作包括记帐卡业务系统对用户进行权限认证和余额查询,以及用户直接进行的访问。当用户修改密码或者通话完毕查询余额时,由于内存镜像数据由内存数据访问进程直接更新,因此既使用户可以无延迟地进行通话,又可以实时感觉到话费余额或密码的变化。
在本发明中,将记帐卡数据按照特征值分成多个表,在对数据库查询和更新时,可以直接定位到具体的小表上,从而提高大容量数据库的访问速度;在内存中建立数据镜像,使低配置PC Server访问大容量数据库时的延迟对用户透明,降低系统建设成本;对内存镜像数据和硬盘数据进行同步,可以保证内存数据与硬盘数据的一致,而且同步可以在后台进行,大大提高对低成本PC Server的利用效率;通过对表中字段规定由内存到硬盘的同步方向,可以避免内存数据与硬盘数据的操作冲突;对硬件配置要求低,使普通的PCServer可以胜任通常情况下小型机完成的工作。
应用本发明后,对相同配置的PC Server上的1000万张记帐卡数据进行查询,可以将查询时间由秒级提高到毫秒级。
以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的权利要求保护范围之内。
Claims (6)
1.一种数据库访问的实现方法,其特征在于,包括以下步骤:
将数据库中待访问的数据从硬盘镜像到内存中,所述待访问的数据包括至少一个表;
数据库访问进程通过内存镜像数据进行对所述数据的访问操作,所述数据库访问进程包括内存数据访问进程和硬盘数据访问进程,所述访问操作包括:
为内存镜像数据在内存中设置写同步区,具体为为需要被硬盘数据访问进程修改的表中字段设置写同步字段;
当所述内存数据访问进程访问所述内存镜像数据时,由内存数据访问进程直接对内存镜像数据进行读写操作,根据内存镜像数据的变化进行硬盘数据的同步;
当所述硬盘数据访问进程对所述内存镜像数据进行写操作时,执行以下步骤:硬盘数据访问进程将对内存镜像数据的变更指示写入写同步区,具体为硬盘数据访问进程将对表中数据的变更指示写入该数据所在表项的写同步字段;内存数据访问进程根据写同步区中的变更指示进行内存镜像数据的写操作,具体为内存数据访问进程当写同步字段中写入变更指示后,根据变更指示进行其所在表项对应数据的写操作,之后清除该变更指示,根据内存镜像数据的变化进行硬盘数据的同步;
当所述硬盘数据访问进程进行数据库的读操作时,其通过硬盘数据进行对数据库的读操作。
2.如权利要求1所述数据库访问的实现方法,其特征在于:所述数据库为记帐卡业务数据库;所述表中包括记帐卡卡号字段,每个表中各表项的记帐卡卡号具有相同的特征值。
3.如权利要求2所述数据库访问的实现方法,其特征在于,所述方法在将待访问的数据从硬盘镜像到内存中之后还包括:以记帐卡卡号的哈希值作为索引组织每个表的内存镜像数据。
4.如权利要求2所述数据库访问的实现方法,其特征在于,所述方法在对记帐卡数据库的数据进行访问操作前还包括:根据记帐卡卡号的特征值确定一个表作为执行访问操作的对象。
5.如权利要求2所述数据库访问的实现方法,其特征在于:所述记帐卡卡号根据伪随机算法生成,具有平均分布的特征值。
6.如权利要求2所述数据库访问的实现方法,其特征在于:所述表还包括密码字段和余额字段,分别用来存储记帐卡的密码和余额。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100581984A CN100495396C (zh) | 2006-03-10 | 2006-03-10 | 数据库访问的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100581984A CN100495396C (zh) | 2006-03-10 | 2006-03-10 | 数据库访问的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1851711A CN1851711A (zh) | 2006-10-25 |
CN100495396C true CN100495396C (zh) | 2009-06-03 |
Family
ID=37133190
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006100581984A Expired - Fee Related CN100495396C (zh) | 2006-03-10 | 2006-03-10 | 数据库访问的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100495396C (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101847162B (zh) * | 2010-05-25 | 2013-03-27 | 中国电力科学研究院 | 基于文件和数据库交换的电力系统仿真中心数据处理方法 |
CN102945251A (zh) * | 2012-10-12 | 2013-02-27 | 浪潮电子信息产业股份有限公司 | 一种利用内存数据库技术优化磁盘数据库性能的方法 |
CN102981829B (zh) * | 2012-11-01 | 2015-10-21 | 宁波电业局 | 一种基于停电管理系统的图形数据展现方法及装置 |
CN105825371A (zh) | 2015-01-07 | 2016-08-03 | 阿里巴巴集团控股有限公司 | 业务处理方法和装置 |
-
2006
- 2006-03-10 CN CNB2006100581984A patent/CN100495396C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1851711A (zh) | 2006-10-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108874971B (zh) | 一种应用于海量标签化实体数据存储的工具和方法 | |
CN100334583C (zh) | 利用智能卡实现移动个人化计算环境的方法和系统 | |
CN100478956C (zh) | 生成和获取报表的方法及相应的系统 | |
CN101477516B (zh) | 一种电子数据处理方法和系统 | |
CN102982130A (zh) | 一种nosql与rdbms的数据库同步方法和系统 | |
CN109542907A (zh) | 数据库缓存构建方法、装置、计算机设备以及存储介质 | |
CN104750740A (zh) | 数据更新的方法及装置 | |
CN106934048A (zh) | 数据在线迁移方法、代理节点 | |
CN100495396C (zh) | 数据库访问的实现方法 | |
CN109271449A (zh) | 一种基于文件的分布式存储查询系统及查询方法 | |
CN109358874B (zh) | 业务规则更新方法、装置、计算机设备和存储介质 | |
CN108319608A (zh) | 访问日志存储查询的方法、装置及系统 | |
CN101576854A (zh) | 文件访问的方法、装置及系统 | |
CN108269131A (zh) | 一种基于ascii码的用户信息签到方法及装置 | |
WO2022009162A1 (en) | Archiving accelerator-only database tables | |
KR100365261B1 (ko) | 웹 드라이브 시스템 | |
KR20120082176A (ko) | 데이터베이스 관리 시스템의 데이터 처리 방법 및 시스템 | |
CN109558082B (zh) | 分布式文件系统 | |
CN104394518A (zh) | 一种短信发送方法及短信平台 | |
CN111026755A (zh) | 基于全量序号发生器的交易序号获取方法及装置 | |
CN114185934B (zh) | 一种基于天盾数据库列存储的索引及查询方法及系统 | |
CN102567544A (zh) | 数据库查询方法及装置 | |
CN100454844C (zh) | 一种机房软件环境多点还原增量同步的方法 | |
CN102722543A (zh) | 一种用于文件储存的方法 | |
JP3769775B2 (ja) | 分散リンク情報維持方法 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090603 Termination date: 20160310 |