CN102004728B - 数据库游标位置保存及复位方法 - Google Patents
数据库游标位置保存及复位方法 Download PDFInfo
- Publication number
- CN102004728B CN102004728B CN 200910171575 CN200910171575A CN102004728B CN 102004728 B CN102004728 B CN 102004728B CN 200910171575 CN200910171575 CN 200910171575 CN 200910171575 A CN200910171575 A CN 200910171575A CN 102004728 B CN102004728 B CN 102004728B
- Authority
- CN
- China
- Prior art keywords
- database
- layer
- location information
- cursor
- space
- 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
公开了一种数据库游标位置保存及复位方法。该方法包括:用户层向数据库层请求保存当前游标位置(步骤S1010),数据库层将当前游标位置的游标位置信息存储到由用户层分配的空间中(步骤S1050),用户层对存储有所述游标位置信息的空间进行维护(步骤S1060),用户层向数据库层请求复位游标位置,并向数据库层输入游标位置信息(步骤S1070),数据库层根据游标位置信息复位游标位置,并将复位的游标位置所在的记录通知给所述用户层(步骤S1080)。
Description
技术领域
本发明涉及数据库游标,特别涉及数数库游标位置保存及复位方法。
背景技术
数据库技术是先进信息技术的重要组成部分,是现代计算机信息系统和计算机应用系统的基础和核心。而在数据库中,游标提供了一种对从表中检索出的数据进行灵活操作的手段,它能实现从包括多条数据记录的结果中每次提取一条记录的机制。通常情况下,数据库游标用于从表中检索记录,以实现用户层对数据的获取,但在诸如翻页处理以及掉电位置保留等某些特定用户应用中,游标所在位置的数据将需要被修改和更新,于是简单迅速地定位游标的位置成为了数据库系统开发中值得研究的领域之一。
现有的大多数数据库系统提供了通过记录号进行游标定位的方法,例如在Microsoft引进的数据库接口标准ODBC(Open DataBase Connectivity,开放数据库互连)中,在SELECT查询语句被成功执行后,用SQLSetPos函数将游标定位到指定的记录号所在的记录。
另外,当中断数据库的操作处理,例如将数据库关闭掉后,进行其他作业,而经过一段时间后,重新返回数据库进行操作时,常常需要通过快速准确地复位游标的位置,而无需重新进行检索,以此提高效率。现有的作法是先将当前游标所在记录的记录号保存下来,在下次返回时,利用该记录号通过定位函数将游标定位到该记录。
但上述的游标位置保存及复位方法,在游标保存和下一次的游标复位期间若发生某些记录的删除、插入以及更新操作,则表中记录的记录号会相应地发生更改,这样就无法保证下一次根据记录号通过定位函数复位的游标能够准确地指向上一次所保存的记录。
发明内容
鉴于上述根据记录号保存及复位游标位置的现有技术存在的问题,本发明的目的在于提供一种数据库游标位置保存及复位的方法,即使在保存与复位之间的期间发生数据库记录的删除、插入或更新,也能够将游标准确地复位到上一次保存时的位置,即使游标重新指向上一次保存游标位置时游标所指向的记录。
为了实现上述目的,根据本发明的数据库游标位置保存及复位方法,包括:第一步骤,用户层向数据库层请求保存当前游标位置,第二步骤,所述数据库层将当前游标位置的游标位置信息存储到由所述用户层分配的空间中;第三步骤,所述用户层对存储有所述游标位置信息的所述空间进行保存及维护;第四步骤,所述用户层向所述数据库层请求复位所述游标位置,并向所述数据库层输入所述游标位置信息;第五步骤,所述数据库层根据所述游标位置信息复位游标位置,并将复位的游标位置所在的记录通知给所述用户层。
而且,在上述的数据库游标位置保存及复位方法中,所述游标位置信息包含所述游标位置信息的长度、迭代器类型、游标移动方向以及包含table id及related key的关键值。
而且,在上述的数据库游标位置保存及复位方法中,所述第三步骤包括:第六步骤,所述数据库层计算出存储所述游标位置信息所需要的空间大小,并通知给所述用户层;第七步骤,所述用户层根据分配所述大小的空间,并将所述空间的地址通知给所述数据库层。
而且,在上述的数据库游标位置保存及复位方法中,在第六步骤和第七步骤之间还包括:所述用户层判断所述空间大小是否小于预定值,如果小于所述预定值,则决定分配所述空间,否则,决定放弃分配所述空间。
而且,在上述的数据库游标位置保存及复位方法中,所述第五步包括:根据所述游标位置信息,检查所述迭代器类型是否匹配;如果所述迭代器类型匹配,则查找与所述关键值匹配的记录;如果查找到与所述关键值匹配的记录,则将该记录返回给所述用户层;如果查找不到与所述关键值匹配的记录,则将沿所述游标移动方向距离所述关键值最近的记录返回给所述用户层。
根据本发明的数据库游标位置保存及复位方法,因为利用能够准确表达游标所在位置的信息,即游标位置信息,对游标进行保存及复位,所以即使在游标位置信息的维护期间发生记录的删除、插入或更新,当用户层需要复位游标位置时,数据层也可以根据用户层保存的游标位置信息,准确地将游标定位到关键值所对应的记录或沿游标移动方向距离关键值最近的记录。
附图说明
通过下面结合附图进行的描述,本发明的上述和其他目的和特点将会变得更加清楚,其中:
图1是表示根据本发明实施例的数据库游标位置保存及复位方法的时序图;
图2是具体本发明实施例的数据库游标位置复位方法的流程图;
图3是表示本发明的游标位置保存及复位方法的应用例的B树图;
图4是表示本发明的游标位置保存及复位方法的应用例的B树图;
图5是表示本发明的游标位置保存及复位方法的应用例的B树图。
主要符号说明:S1010-S1090及S2010-S204为步骤。
具体实施方式
以下,参照附图来详细说明本发明的实施例。
(实施例)
图1是表示根据本发明实施例的数据库游标位置保存及复位方法的时序图。
如图1中所示,本发明的数据库游标位置的保存及复位是通过用户层及数据库层的交互过程来实现的。具体如下。
首先,在步骤S1010,用户层向数据库层请求保存当前游标位置。
接着,在步骤S1020,由数据库层计算出存储当前游标位置所需要的空间大小,并通知用户层。
接着,在步骤S1030,用户层根据数据库层所通知的空间大小,分配存储当前游标位置信息所需要的空间。
接着,在步骤S1040,用户层再次向数据库发出请求,要求保存当前游标位置信息,并将分配好的空间的地址通知给数据库层。
接着,在步骤S1050,数据库层将当前游标位置信息存储到用户层分配的空间中。这里,游标位置信息包含游标位置信息的长度、迭代器类型、游标的移动方向以及关键值等,而且关键值比如可以是table id及related key等,能够准确表达游标位置。
接着,在步骤S1060,由用户层对存储有当前游标位置信息的空间进行保存、维护。例如,用户层可以将该游标位置信息保存在内存中或外部存储介质中。
至此为数据库游标位置的保存过程。当保存了数据库游标位置的用户需要重新复位该游标位置时,则执行以下S1070至S1090的步骤。
首先,在步骤S1070,用户层向数据库请求复位游标位置,并向数据库层输入在步骤S1060保存、维护过的游标位置信息。
接着,在步骤S1080,数据库层根据该游标位置信息以及当前记录情况复位游标位置,并将复位的游标位置所在的记录通知给用户层。
接着,在步骤S1090,用户层获得复位的游标位置所在的记录。
图2是具体说明步骤S1080中的处理的流程图。
如图2所示,数据库层首先根据在步骤S1070中从用户层输入的游标位置信息,检查迭代器类型是否匹配(步骤S2010),如果迭代器类型匹配(步骤S2010:“是”),则根据关键值查找匹配记录(步骤S2020),在匹配记录不存在的情况下(步骤S2030:“否”),根据游标移动方向查找距离关键值最近的下一条记录(步骤S2040)。
图3、图4及图5是表示本发明的游标位置保存及复位方法的应用例的B树图。
假设如图3所示,当游标位置停留在关键值13时,用户层要求保存当前游标位置,则首先由用户层通知数据库层;数据库层根据当前的迭代器类型、关键值以及游标移动方向等信息计算需要的存储空间大小,通知给用户层;用户层完成内存空间的分配后,将所分配的空间的地址通知给数据库层;由数据库层将游标位置信息存储到用户分配的内存空间;接着,由用户层维护该游标位置信息。
接着,假设在游标位置信息的维护期间,数据库层发生了记录的删除,且所删除记录即为关键值13的记录。
当用户层需要复位游标位置时,用户层将游标位置信息输出到数据库层;接着数据库层根据从用户层输入的游标位置信息,检查迭代器类型是否匹配;假设这里迭代器类型匹配,所以接着根据关键值查找对应于关键值的匹配记录;因为关键值13的记录已经被删除,所以数据库层找不到匹配记录,只能根据移动方向查找距离关键值最近的下一条记录。
如图4所示,如果游标位置信息中所保存的游标移动方向为向后,即之前在保存游标位置信息时,游标移动方向为向后,则数据库层将移动游标位置到被删除记录对应的关键值的下一个关键值所对应的记录,即关键值15所对应的记录。
而如果游标位置信息中所保存的游标移动方向为向前,则数据库层将移动游标位置到被删除记录对应的关键值的上一个关键值所对应的记录,即关键值10所对应的记录,如图5所示。
如上所述,根据本发明,用户层要求保存当前游标位置时,用户层从数据库层得到当前的迭代器类型、关键值以及游标移动方向等游标位置信息进行保存及维护,用于下一次复位游标位置。鉴于数据库系统能够通过游标位置信息准确表达游标位置,因此本发明突破了传统数据库根据记录号定位游标位置的方法,即使在维护期间,发生记录的删除、插入或更新,当用户层需要复位游标位置时,数据层也能够根据用户层保存的游标位置信息,准确地将游标定位到关键值所对应的记录或沿游标移动方向距离关键值最近的记录。
另外,本发明还可以对上述实施例进行变形而实施,例如,在步骤S1030,用户层可以根据数据库层所通知的保存游标位置信息所需空间的大小,并根据实际情况考虑是否分配空间,只有当决定分配空间时,才真正进行空间分配及后续S1040以后的步骤。比如只有当所需空间大小不超过预定值时,才进行空间分配。通过这样的操作,能够增加处理的灵活性。
产业上的可利用性
本发明的数据库游标的保存及定位方法适用于各种数据库的操作。
Claims (3)
1.数据库游标位置保存及复位方法,包括:
第一步骤,用户层向数据库层请求保存当前游标位置,
第二步骤,所述数据库层将当前游标位置的游标位置信息存储到由所述用户层分配的空间中,其中,所述游标位置信息包含所述游标位置信息的长度、迭代器类型、游标移动方向以及包含table id及related key的关键值;
第三步骤,所述用户层对存储有所述游标位置信息的所述空间进行保存及维护;
第四步骤,所述用户层向所述数据库层请求复位所述游标位置,并向所述数据库层输入所述游标位置信息;
第五步骤,所述数据库层根据所述游标位置信息,检查所述迭代器类型是否匹配,如果所述迭代器类型匹配,则查找与所述关键值匹配的记录,如果查找到与所述关键值匹配的记录,则将该记录返回给所述用户层,如果查找不到与所述关键值匹配的记录,则将沿所述游标移动方向距离所述关键值最近的记录返回给所述用户层。
2.如权利要求1所述的数据库游标位置保存及复位方法,其中,在所述第二步骤之前包括:
第六步骤,所述数据库层计算出存储所述游标位置信息所需要的空间大小,并通知给所述用户层;
第七步骤,所述用户层根据所述数据库层所通知的空间大小,分配存储所述游标位置信息的空间,并将所述空间的地址通知给所述数据库层。
3.如权利要求2所述的数据库游标位置保存及复位方法,其中,在第六步骤和第七步骤之间还包括:
所述用户层判断所述空间大小是否小于预定值,如果小于所述预定值,则决定分配所述空间,否则,决定放弃分配所述空间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910171575 CN102004728B (zh) | 2009-09-01 | 2009-09-01 | 数据库游标位置保存及复位方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910171575 CN102004728B (zh) | 2009-09-01 | 2009-09-01 | 数据库游标位置保存及复位方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102004728A CN102004728A (zh) | 2011-04-06 |
CN102004728B true CN102004728B (zh) | 2013-03-27 |
Family
ID=43812099
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200910171575 Expired - Fee Related CN102004728B (zh) | 2009-09-01 | 2009-09-01 | 数据库游标位置保存及复位方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102004728B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107872506B (zh) * | 2017-08-09 | 2021-04-02 | 成都萌想科技有限责任公司 | 一种基于实时消息的广播方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1556483A (zh) * | 2003-12-31 | 2004-12-22 | ����ͨѶ�ɷ�����˾ | 一种在数据库里快速定位数据页中记录的方法 |
CN101110088A (zh) * | 2007-04-17 | 2008-01-23 | 南京中兴软创科技有限责任公司 | 基于缓存技术的数据库访问接口方法 |
CN101436927A (zh) * | 2006-12-27 | 2009-05-20 | 国际商业机器公司 | 用于文件传输管理的系统和方法 |
-
2009
- 2009-09-01 CN CN 200910171575 patent/CN102004728B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1556483A (zh) * | 2003-12-31 | 2004-12-22 | ����ͨѶ�ɷ�����˾ | 一种在数据库里快速定位数据页中记录的方法 |
CN101436927A (zh) * | 2006-12-27 | 2009-05-20 | 国际商业机器公司 | 用于文件传输管理的系统和方法 |
CN101110088A (zh) * | 2007-04-17 | 2008-01-23 | 南京中兴软创科技有限责任公司 | 基于缓存技术的数据库访问接口方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102004728A (zh) | 2011-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Huang et al. | X-Engine: An optimized storage engine for large-scale E-commerce transaction processing | |
CN103902623B (zh) | 用于在存储系统上存取文件的方法和系统 | |
CN107273522B (zh) | 面向多应用的数据存储系统和数据调用方法 | |
US9858303B2 (en) | In-memory latch-free index structure | |
US9672241B2 (en) | Representing an outlier value in a non-nullable column as null in metadata | |
CN101866358B (zh) | 一种多维区间查询方法及系统 | |
KR102564170B1 (ko) | 데이터 객체 저장 방법, 장치, 및 이를 이용한 컴퓨터 프로그램이 저장되는 컴퓨터 판독가능한 저장 매체 | |
US20100257181A1 (en) | Dynamic Hash Table for Efficient Data Access In A Relational Database System | |
JP4403068B2 (ja) | データウェアハウジングのための高性能な変更の捕捉 | |
US10706034B2 (en) | Query access optimizations for tiered index architecture | |
US20160350302A1 (en) | Dynamically splitting a range of a node in a distributed hash table | |
CN104731886B (zh) | 一种海量小文件的处理方法及系统 | |
CN101566986A (zh) | 联机事务处理中的数据处理方法和装置 | |
CN104424219B (zh) | 一种数据文件的管理方法及装置 | |
JP4837759B2 (ja) | データベース処理方法、データベース処理システム及びデータベースサーバ | |
CN110109910A (zh) | 数据处理方法及系统、电子设备和计算机可读存储介质 | |
CN101963982A (zh) | 基于位置敏感哈希的删冗存储系统元数据管理方法 | |
KR100620125B1 (ko) | 공간 데이터 웨어하우스에서 부분 색인 전송을 이용한 색인재구성 시스템 및 방법 | |
WO2012169102A1 (ja) | データベース性能予測装置及びデータベース予測方法 | |
CN109800218A (zh) | 分布式存储系统、存储节点设备和数据去重方法 | |
US20110289112A1 (en) | Database system, database management method, database structure, and storage medium | |
US10810174B2 (en) | Database management system, database server, and database management method | |
CN107247624A (zh) | 一种面向Key‑Value系统的协同优化方法及系统 | |
CN107704475A (zh) | 多层分布式非结构化数据存储方法、查询方法及装置 | |
US20070118574A1 (en) | Reorganizing data with update activity |
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 |
Granted publication date: 20130327 Termination date: 20150901 |
|
EXPY | Termination of patent right or utility model |