CN101082928B - 一种数据库访问的方法及数据库映射系统 - Google Patents
一种数据库访问的方法及数据库映射系统 Download PDFInfo
- Publication number
- CN101082928B CN101082928B CN2007100761623A CN200710076162A CN101082928B CN 101082928 B CN101082928 B CN 101082928B CN 2007100761623 A CN2007100761623 A CN 2007100761623A CN 200710076162 A CN200710076162 A CN 200710076162A CN 101082928 B CN101082928 B CN 101082928B
- Authority
- CN
- China
- Prior art keywords
- record
- database
- internal memory
- shared drive
- server end
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明适用于数据库技术领域,提供了一种数据库访问的方法及数据库映射系统,所述方法包括下述步骤:根据服务器端数据库中的每条记录的关键字段值计算所述记录的内存映射地址;将所述服务器端数据库中的每条记录映射至客户端共享内存的所述内存映射地址中;客户端通过直接访问所述共享内存来访问所述服务器端数据库。在本发明实施例中,通过将服务器端数据库中的各条记录映射至客户端共享内存,从而可以通过直接访问共享内存来访问数据库,而不受网络速率的限制,可以达到百万级别的数据库访问速率,以满足用户对数据库访问的实时性的需求。
Description
技术领域
本发明属于数据库技术领域,尤其涉及一种数据库访问的方法及数据库映射系统。
背景技术
数据库是指长期储存在计算机内的、有组织的、可共享的数据的集合,广泛应用于计算机、网络通信等领域为各种用户提供数据共享。目前,实现数据库访问的方法主要有两种:
方法之一:客户端直接编辑标准的SQL语句(数据库访问语句),并将编辑后的SQL语句通过网络传输至服务器端的数据库系统,服务器端的数据库系统对接收到的SQL语句进行解释、编译、执行,并将最终的执行结果传输至客户端。其中,服务器端和客户端的数据传输协议可采用多种方式,如传输控制协议/网际互联协议(Transmission Control Protocol/Internet Protocol,TCP/IP)、用户数据报协议(User Datagram Protocol,UDP)、管道、七号信令等。
在上述数据库访问方法中,客户端用户通过网络访问服务器端的数据库,使客户端用户访问数据库的速率受到网络速率的限制,而只能达到十万级别的数据库访问速率,无法满足用户对数据库访问的实时性的需求。
方法之二:客户端通过中间件来访问服务器端的数据库。中间件技术可以为客户端用户提供一些可以调用的固定接口,中间件根据客户端用户提供的关键字如表名、字段名等动态组装成标准的SQL语句,并将组装的SQL语句通过网络传输至服务器端。
上述方法将客户端用户在访问数据库时,重新生成标准的SQL语句的操作交给中间件完成,简化了客户端用户的数据库访问操作,但是通过网络传输数据同样会使数据库的访问速率受到网络速率的限制,而只能达到十万级别的数据库访问速率,同样无法满足用户对数据库访问的实时性的需求。
发明内容
本发明实施例的目的在于提供一种数据库访问的方法,旨在解决现有技术中,在访问数据库时,需要通过网络在服务器端和客户端传输数据,从而使数据库访问速率受到网络速率的限制,无法达到用户对数据库访问的实时性的需求的问题。
本发明实施例是这样实现的,一种数据库访问的方法,所述方法包括下述步骤:
根据服务器端数据库中的每条记录的关键字段值按照预先配置的哈希函数计算所述记录的内存映射地址,所述哈希函数为:内存映射地址=记录中关键字段值MOD地址素数;
为所述服务器端数据库中的每条记录添加映射时间戳;
判断所述客户端共享内存是否已满,如果所述客户端共享内存已满,则淘汰所述客户端共享内存中的所述映射时间戳最早的记录;
将所述服务器端数据库中的每条记录映射至客户端共享内存的所述内存映射地址中;
客户端通过直接访问所述共享内存来访问所述服务器端数据库。
本发明实施例的另一目的在于提供一种数据库映射系统,所述系统包括:
内存映射地址计算模块,用于根据服务器端数据库中的每条记录的关键字段值按照预先配置的哈希函数计算所述记录的内存映射地址,所述哈希函数为:内存映射地址=记录中关键字段值MOD地址素数;
映射时间戳添加模块,用于为所述服务器端数据库中的每条记录添加映射时间戳;
内存空间判断模块,用于判断所述客户端共享内存是否已满;以及
记录淘汰模块,用于在所述客户端共享内存已满时,淘汰所述客户端共享内存中的所述映射时间戳最早的记录;以及
数据库映射模块,用于将所述服务器端数据库中的每条记录映射至客户端共享内存的所述内存映射地址中。
在本发明实施例中,通过将服务器端数据库中的各条记录映射至客户端共享内存中,从而使客户端用户不需要通过网络访问服务器端的数据库,直接通过访问客户端共享内存来访问数据库,使数据库访问不受网络速率的限制,可以达到百万级别的数据库访问速率,满足用户对数据库访问的实时性的需求。
附图说明
图1是本发明实施例提供的数据库访问的方法的实现流程图;
图2是本发明实施例提供的数据库访问的方法的另一实现流程图;
图3是本发明实施例提供的采用数据库访问方法查找记录的实现流程图;
图4是本发明实施例提供的数据库映射系统的结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本发明实施例中,通过将服务器端的数据库表映射到客户端的共享内存中,从而使客户端用户达到百万级别的数据库访问速率,以满足客户端用户对数据库访问的实时性的需求。
图1示出了本发明实施例提供的数据库访问的方法的实现流程,详述如下:
在步骤S101中,为服务器端数据库中的每条记录添加映射时间戳,以便当客户端共享内存的可用存储空间有限,不能将服务器端数据库中的所有记录都映射至该共享内存时,可以根据每条记录映射至共享内存的时间值淘汰部分映射至共享内存的记录。其中映射时间戳是数据库中的每条记录映射至共享内存时的时间值。添加了映射时间戳之后的各单条记录的结构如下表所示:
时间戳1 | 数据库记录1 |
时间戳2 | 数据库记录2 |
... | ... |
时间戳N | 数据库记录N |
在步骤S102中,判断客户端共享内存的空间是否已满,如果客户端共享内存的空间已满,则执行步骤S103,否则执行步骤S104。
在步骤S103中,淘汰映射至客户端共享内存中的映射时间戳较早的记录。
在步骤S104中,根据服务器端数据库中每条记录的关键字段值按照预先配置的哈希函数(Hash函数)计算该记录对应的内存映射地址。其中哈希函数的通式是:内存映射地址=记录中关键字段值MOD地址素数,其中地址素数是为了得到更好的哈希函数,用户经过多次试验总结并配置的值(如5、7等)。例如当数据库中存在关键字段值分别为8,10,14,15,18,23,20,34的记录时,如果地址素数配置为5,经上述哈希函数计算后,则具有上述关键字段值的记录的内存映射地址分别为:3,0,4,0,3,3,0,4;如果地址素数配置为7,经上述哈希函数计算后,则具有上述关键字段值的记录的内存映射地址分别为:1,3,0,1,4,2,6,6。如上所述,具有不同的关键字段值的各个记录,经哈希函数计算后,可能得到相同的内存映射地址,即一个内存映射地址可能对应复数个记录。
在步骤S105中,将服务器端数据库中的各记录映射至客户端共享内存的相应内存映射地址中。经映射后,数据库在内存存储区的存储结构如下表所示:
在本发明实施例中,对于具有相同内存映射地址的各记录,在映射至共享内存中时,采用数组对具有相同内存映射地址的所有记录进行管理,该数组的长度可以预先设定,在本发明实施例中,以100为例进行说明。当具有相同内存映射地址的记录多于100条时,前100条记录将映射到根据各记录的关键字段值计算出来的共享内存中对应的内存映射地址中,对于100条以后的具有相同内存映射地址的记录在被映射到共享内存中时,采用线性探测的方法逐个探测下一个内存映射地址是否空闲,如果空闲,则将该记录映射到该空闲的内存映射地址中。其中地址线性探测的个数由用户预先设定。
在步骤S106中,客户端直接通过访问该共享内存来访问数据库。客户端用户可以直接访问上述客户端共享内存来访问映射至该共享内存中的数据库,从而可以达到百万级别的数据库访问速率,而不受网络速率的影响,满足了用户对数据库访问的实时性的需求。
图2示出了本发明第二实施例提供的数据库访问的方法的实现流程,其与第一实施例的不同之处在于,对该方法步骤的执行顺序进行了调整。
在步骤S201中,根据服务器端数据库中每条记录的关键字段值按照预先配置的哈希函数计算该记录对应的内存映射地址;
在步骤S202中,为服务器端数据库中的每条记录添加映射时间戳;
在步骤S203中,判断客户端共享内存的空间是否已满,如果客户端共享内存的空间已满,则执行步骤S204,否则执行步骤S205;
在步骤S204中,淘汰映射至客户端共享内存中的映射时间戳较早的记录;
在步骤S205中,将服务器端数据库中的各记录映射至客户端共享内存的相应内存映射地址中,
在步骤S206中,直接通过访问该共享内存来访问数据库。
图3示出了本发明实施例提供的采用数据库访问方法查找记录的流程。
在步骤S301中,接收输入的记录的关键字段值。当采用上述数据库访问方法将服务器端数据库中的所有记录映射至客户端共享内存中后,接收客户端用户输入的记录的关键字段值。
在步骤S302中,根据该关键字段值采用上述配置的哈希函数计算该记录对应的内存映射地址。
在步骤S303中,判断计算出来的内存映射地址中是否存在与该记录的关键字段值相同的记录,如果不存在,则执行步骤S304,如果存在,则执行步骤S307。
在步骤S304中,判断探测的地址数是否超过预先设定的值。由于在将服务器端数据库中的各条记录映射至客户端共享内存时,对于具有不同的字段关键值的复数个记录经哈希函数计算,可能得到相同的内存映射地址,在配置时已经限定了同一个内存映射地址对应的记录的条数,对于多于限定值的具有相同内存映射地址的记录,采用地址线性探测的方式,将该多于限定值的记录填充到下一个内存映射地址。而在进行地址线性探测时,用户也预先配置了地址线性探测的地址数,所以在此步骤中,需要判断当前探测的地址的个数是否超出预先配置的地址数,如果没有超出,则执行步骤S305,如果超出,则执行步骤S306。
在步骤S305中,将探测地址增加1后,重新执行步骤S303。
在步骤S306中,停止地址探测并返回未查到该记录对应的内存映射地址以及未查找到该记录的结果。
在步骤S307中,返回查找到的记录的内存映射地址,向客户端用户返回查找到的记录。
图4示出了本发明实施例提供的数据库映射系统的结构,为了便于说明,仅示出与本发明实施例相关的部分。
内存映射地址计算模块31根据数据库中各记录的关键字段值采用预先配置的哈希函数计算该记录映射到共享内存中的内存映射地址。数据库映射模块32将数据库中的各条记录映射到由内存映射地址计算模块31计算得出的客户端共享内存的内存映射地址中,服务器端的数据库映射至客户端共享内存中后,各记录在客户端共享内存存储区的存储结构如上所述,在此不再赘述。
在将服务器端数据库中的各个记录映射至客户端共享内存的过程中,当客户端共享内存的可用空间有限,无法将服务器端数据库中的每个记录都映射至客户端共享内存时,本发明实施例提供的数据库映射系统通过映射时间戳添加模块33为服务器端数据库中的每个记录添加相应的映射时间戳,用以标识该记录映射至客户端共享内存时的时间。其中添加了映射时间戳之后的各记录的结构如上所述,在此不再赘述。内存空间判断模块34在将服务器端数据库中的各条记录映射至客户端共享内存前,判断该共享内存是否已满。当该共享内存的可用空间有限,无法将数据库中的所有记录都映射至该共享内存时,即该共享内存已满,则通过记录淘汰模块35淘汰映射时间戳较早的记录,以使数据库中的其它记录能够映射至该共享内存,客户端用户可以直接通过访问客户端的共享内存来访问数据库,从而可以达到百万级别的数据库访问速率,而不受网络速率的限制,满足了客户端用户对数据库访问的实时性的需求。
综上所述,在本发明实施例中,通过将服务器端数据库中的每条记录映射至客户端共享内存中,当客户端需要访问服务器端的数据库时,可以直接访问映射至客户端共享内存中数据库,使数据库访问不受网络速率的限制,从而可以达到百万级别的数据库访问速率,满足了客户端用户对数据库访问的实时性的需求。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (4)
1.一种数据库访问的方法,其特征在于,所述方法包括下述步骤:
根据服务器端数据库中的每条记录的关键字段值按照预先配置的哈希函数计算所述记录的内存映射地址,所述哈希函数为:内存映射地址=记录中关键字段值MOD地址素数;
为所述服务器端数据库中的每条记录添加映射时间戳;
判断所述客户端共享内存是否已满,如果所述客户端共享内存已满,则淘汰所述客户端共享内存中的所述映射时间戳最早的记录;
将所述服务器端数据库中的每条记录映射至客户端共享内存的所述内存映射地址中;
客户端通过直接访问所述共享内存来访问所述服务器端数据库。
2.如权利要求1所述的数据库访问的方法,其特征在于,当根据服务器端数据库中的每条记录的关键字段值计算所述记录的内存映射地址时,如果有复数个记录的内存映射地址相同,则在将所述记录映射至客户端共享内存的所述内存映射地址中时,采用数组对所述具有相同内存映射地址的复数个记录进行管理。
3.一种数据库映射系统,其特征在于,所述系统包括:
内存映射地址计算模块,用于根据服务器端数据库中的每条记录的关键字段值按照预先配置的哈希函数计算所述记录的内存映射地址,所述哈希函数为:内存映射地址=记录中关键字段值MOD地址素数;
映射时间戳添加模块,用于为所述服务器端数据库中的每条记录添加映射时间戳;
内存空间判断模块,用于判断所述客户端共享内存是否已满;以及
记录淘汰模块,用于在所述客户端共享内存已满时,淘汰所述客户端共享内存中的所述映射时间戳最早的记录;以及
数据库映射模块,用于将所述服务器端数据库中的每条记录映射至客户端共享内存的所述内存映射地址中。
4.如权利要求3所述的数据库映射系统,其特征在于,当有复数个记录的内存映射地址相同,则在将所述记录映射至客户端共享内存的所述内存映射地址中时,采用数组对所述具有相同内存映射地址的复数个记录进行管理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007100761623A CN101082928B (zh) | 2007-06-25 | 2007-06-25 | 一种数据库访问的方法及数据库映射系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007100761623A CN101082928B (zh) | 2007-06-25 | 2007-06-25 | 一种数据库访问的方法及数据库映射系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101082928A CN101082928A (zh) | 2007-12-05 |
CN101082928B true CN101082928B (zh) | 2010-11-24 |
Family
ID=38912501
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007100761623A Active CN101082928B (zh) | 2007-06-25 | 2007-06-25 | 一种数据库访问的方法及数据库映射系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101082928B (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102098446B (zh) * | 2009-12-09 | 2015-05-27 | 新奥特(北京)视频技术有限公司 | 一种用于字幕播出系统的实时数据存储方法和装置 |
CN102156700A (zh) * | 2010-02-12 | 2011-08-17 | 华为技术有限公司 | 数据库的访问方法、装置及系统 |
CN101872356B (zh) * | 2010-05-31 | 2013-08-07 | 中兴通讯股份有限公司 | 一种内存数据库处理性能的方法与系统 |
CN101986649B (zh) * | 2010-11-29 | 2014-01-15 | 深圳天源迪科信息技术股份有限公司 | 应用于电信行业计费系统的共享数据中心 |
CN102420814A (zh) * | 2011-11-21 | 2012-04-18 | 航天科工深圳(集团)有限公司 | 一种数据访问方法、装置及服务器 |
CN102609466B (zh) * | 2012-01-13 | 2014-12-24 | 从兴技术有限公司 | 一种共享内存的控制方法及系统 |
CN102722405B (zh) * | 2012-06-06 | 2015-05-13 | 新浪网技术(中国)有限公司 | 高并发、多线程应用中的计数方法及系统 |
CN103533402B (zh) * | 2013-10-23 | 2015-08-19 | 腾讯科技(深圳)有限公司 | 视频通道管理方法和相关设备及通信系统 |
CN103631869B (zh) * | 2013-11-05 | 2018-04-17 | 北京奇虎科技有限公司 | 一种缓解服务端数据库访问压力的方法和装置 |
CN103605788A (zh) * | 2013-12-03 | 2014-02-26 | 上海浦东物流云计算有限公司 | 数据处理方法及系统、客户端及存储引擎 |
CN105721388A (zh) * | 2014-11-30 | 2016-06-29 | 中国科学院沈阳自动化研究所 | 不稳定网络环境下的mes客户端数据缓存方法及系统 |
CN105515819B (zh) * | 2015-07-14 | 2019-05-14 | 国家电网公司 | 一种基于iec61850的通信组件与应用组件的数据接口方法及系统 |
CN106708825B (zh) * | 2015-07-29 | 2019-09-27 | 腾讯科技(深圳)有限公司 | 一种数据文件处理方法及系统 |
CN106131556A (zh) * | 2016-07-19 | 2016-11-16 | 成都之达科技有限公司 | 车载设备影像信号传输方法 |
CN108073521B (zh) * | 2016-11-11 | 2021-10-08 | 深圳市创梦天地科技有限公司 | 一种数据去重的方法和系统 |
CN106790115B (zh) * | 2016-12-27 | 2019-11-05 | 北京天融信网络安全技术有限公司 | Nginx上游代理服务系统及实现方法 |
CN110019362B (zh) * | 2017-11-08 | 2021-08-13 | 中移(苏州)软件技术有限公司 | 一种访问数据库的方法及装置 |
CN108647300B (zh) * | 2018-05-09 | 2020-12-15 | 携程旅游信息技术(上海)有限公司 | 数据库访问中间系统、方法、设备及存储介质 |
CN109308293B (zh) * | 2018-12-07 | 2021-09-24 | 广东中鹏热能科技有限公司 | 大并发数据库的分库分表方法 |
CN110677455B (zh) * | 2019-08-20 | 2020-11-03 | 北京航空航天大学 | 基于分布式哈希的动态均衡账户映射方法 |
CN113127717A (zh) * | 2021-03-30 | 2021-07-16 | 国家电网有限公司 | 一种密钥检索方法和系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5524202A (en) * | 1991-03-01 | 1996-06-04 | Fuji Xerox Co., Ltd. | Method for forming graphic database and system utilizing the method |
CN1740978A (zh) * | 2004-08-23 | 2006-03-01 | 华为技术有限公司 | 实现共享内存数据库的方法及内存数据库系统 |
-
2007
- 2007-06-25 CN CN2007100761623A patent/CN101082928B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5524202A (en) * | 1991-03-01 | 1996-06-04 | Fuji Xerox Co., Ltd. | Method for forming graphic database and system utilizing the method |
CN1740978A (zh) * | 2004-08-23 | 2006-03-01 | 华为技术有限公司 | 实现共享内存数据库的方法及内存数据库系统 |
Also Published As
Publication number | Publication date |
---|---|
CN101082928A (zh) | 2007-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101082928B (zh) | 一种数据库访问的方法及数据库映射系统 | |
US9672272B2 (en) | Method, apparatus, and computer-readable medium for efficiently performing operations on distinct data values | |
CN103577440B (zh) | 一种非关系型数据库中的数据处理方法和装置 | |
US7809769B2 (en) | Database partitioning by virtual partitions | |
CN111352902A (zh) | 日志处理方法、装置、终端设备及存储介质 | |
KR20190020105A (ko) | 스트리밍 데이터의 분배 처리 방법 및 디바이스 | |
US11868328B2 (en) | Multi-record index structure for key-value stores | |
CN111159219B (zh) | 一种数据管理方法、装置、服务器及存储介质 | |
CN105447030A (zh) | 一种索引处理方法与设备 | |
CN101271410A (zh) | 一种数据共享的方法、系统和装置 | |
CN111459948B (zh) | 一种基于中心化块链式账本的交易完整性验证方法 | |
US11496562B1 (en) | Method and system for accessing digital object in human-cyber-physical environment | |
CN111723245B (zh) | 数据存储系统中建立不同类型存储对象关联关系的方法 | |
CN107301249A (zh) | 一种文件访问信息记录方法、系统及分布式集群系统 | |
CN109901991A (zh) | 一种分析异常调用的方法、装置和电子设备 | |
CN100487697C (zh) | 一种应用改进的哈希方法进行查找的方法 | |
CN109271438A (zh) | 一种数据库访问方法及其系统 | |
CN101383738A (zh) | 一种互联网交互事件的监测方法及系统 | |
CN101430706B (zh) | 对象关系映射中复杂对象的子对象验权方法、系统及设备 | |
CN116860390A (zh) | 一种基于数据虚拟化的数据分组方法、装置、设备及介质 | |
CN111858619A (zh) | 一种数据自流转的方法、装置和电子设备 | |
CN116126791A (zh) | 一种流量文件构建索引和检索的方法、设备及介质 | |
CN113761102B (zh) | 数据处理方法、装置、服务器、系统和存储介质 | |
CN112182106B (zh) | 保险业务数据的处理方法、系统、装置及存储介质 | |
CN115510072A (zh) | 一种基于多租户SaaS应用平台的主数据引擎 |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230914 Address after: 518057 Tencent Building, No. 1 High-tech Zone, Nanshan District, Shenzhen City, Guangdong Province, 35 floors Patentee after: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. Patentee after: TENCENT CLOUD COMPUTING (BEIJING) Co.,Ltd. Address before: 2, 518044, East 403 room, SEG science and Technology Park, Zhenxing Road, Shenzhen, Guangdong, Futian District Patentee before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. |