CN101714167A - 一种访问单文件数据库的方法及装置 - Google Patents

一种访问单文件数据库的方法及装置 Download PDF

Info

Publication number
CN101714167A
CN101714167A CN200910237053A CN200910237053A CN101714167A CN 101714167 A CN101714167 A CN 101714167A CN 200910237053 A CN200910237053 A CN 200910237053A CN 200910237053 A CN200910237053 A CN 200910237053A CN 101714167 A CN101714167 A CN 101714167A
Authority
CN
China
Prior art keywords
data
tables
database
virtual file
corresponding virtual
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.)
Granted
Application number
CN200910237053A
Other languages
English (en)
Other versions
CN101714167B (zh
Inventor
陈曦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Highway Telecommunication Technology Co.,Ltd.
Original Assignee
Beijing Gaoxinda Network Science & Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Gaoxinda Network Science & Technology Co Ltd filed Critical Beijing Gaoxinda Network Science & Technology Co Ltd
Priority to CN 200910237053 priority Critical patent/CN101714167B/zh
Publication of CN101714167A publication Critical patent/CN101714167A/zh
Application granted granted Critical
Publication of CN101714167B publication Critical patent/CN101714167B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种访问单文件数据库的方法及装置,属于数据存储技术领域,以解决在现有的单数据库存储技术中存在当多个用户同时访问数据库或数据库存储量较大时,读写操作容易阻塞或出错、存储的数据容易损坏的问题。本发明包括根据业务关系将单文件数据库中的数据表分别建立对应的虚拟文件,将数据表和对应的虚拟文件建立映射关系,并将所述映射关系存储于日志文件中;根据用户请求访问的数据表在日志文件中的映射关系,将与所述用户请求访问的数据表对应的虚拟文件提供给用户访问。本发实现了当多个用户同时访问数据库或数据库存储量较大时,读写操作不易出现阻塞或出错,存储的数据也不易被损坏。

Description

一种访问单文件数据库的方法及装置
技术领域
本发明涉及一种访问单文件数据库的方法及装置,属于数据存储技术领域。
背景技术
单文件数据库是一种轻量级、跨平台的关系型数据库。所谓单文件是指数据库中所有的信息(比如表、视图、触发器等)都包含在一个文件内,并且这个文件也可以被复制到其它目录或其它机器上使用,具有体积小、查询速度快等特点。
数据库是一个共享资源,可为多个应用程序所共享。这些程序可串行运行,但在许多情况下,由于应用程序涉及的数据量可能很大,常常会涉及输入和输出的交换。为了有效地利用数据库资源,可能多个程序或一个程序的多个进程同时运行。在单文件数据库环境中,由于只使用单一文件存储数据,多个用户同时访问数据库,或数据库中的数据量较大时,会存取不正确的数据,或破坏数据库数据的一致性,导致数据库文件中的数据遭到严重破坏或数据丢失。图1是某一次对数据库的操作时间较长时将会导致其它应用无法正常使用,或是导致数据无法正常写入数据库中,影响业务的正常流程。
因此,在现有的单数据库存储技术中存在当多个用户同时访问数据库或数据库存储量较大时,读写操作容易阻塞或出错、存储的数据容易损坏的问题。
发明内容
本发明提供了一种访问单文件数据库的方法及装置,以解决在现有的单数据库存储技术中存在当多个用户同时访问数据库或数据库存储量较大时,读写操作容易阻塞或出错、存储的数据容易损坏的问题。
一种访问单文件数据库的方法,包括:
根据业务关系将单文件数据库中的数据表分别建立对应的虚拟文件,将数据表和对应的虚拟文件建立映射关系,并将所述映射关系存储于日志文件中;
根据用户请求访问的数据表在日志文件中的映射关系,将与所述用户请求访问的数据表对应的虚拟文件提供给用户访问。
一种访问单文件数据库的装置,包括:
虚拟文件建立单元,用于根据业务关系将单文件数据库中的数据表分别建立对应的虚拟文件,将数据表和对应的虚拟文件建立映射关系,并将所述映射关系存储于日志文件中;
虚拟文件访问单元,用于根据用户请求访问的数据表在日志文件中的映射关系,将与所述用户请求访问的数据表对应的虚拟文件提供给用户访问。
本发明通过将不同业务的数据表建立在不同的虚拟文件当中,并将表与虚拟文件建立映射关系存储于日志文件当中,实现了当多个用户同时访问数据库或数据库存储量较大时,读写操作不易出现阻塞或出错,存储的数据也不易被损坏。
附图说明
图1是在现有技术中数据库因操作时间较长导致出错的流程示意图;
图2是本发明的具体实施方式提供的一种访问单文件数据库的方法的流程示意图;
图3是本发明的具体实施方式提供的建立数据表与虚拟文件映射关系的流程示意图;
图4是本发明的具体实施方式提供的多用户操作数据库的流程示意图;
图5是本发明的具体实施方式提供的一种访问单文件数据库的装置的结构示意图。
具体实施方式
本发明的具体实施方式提供了一种访问单文件数据库的方法,该方法包括根据业务关系将单文件数据库中的数据表分别建立对应的虚拟文件,将数据表和对应的虚拟文件建立映射关系,并将映射关系存储于日志文件中;以及根据用户请求访问的数据表在日志文件中的映射关系,将与用户请求访问的数据表对应的虚拟文件提供给用户访问。
进一步地,相应的根据用户请求访问的数据表在日志文件中的映射关系包括对于每个访问请求都分别查找请求访问的数据表在日志文件中的映射关系。
另外,该方法还包括若多个用户同时请求访问同一个数据表相应的虚拟文件,则使用预定算法对多个用户进行优先级排序;以及若多个用户同时对同一个数据表相应的虚拟文件并行存取,则对同一个数据表对应的虚拟文件实行预定的封锁机制。
为了更清楚的说明本发明的具体实施方式提供的一种访问单文件数据库的方法,可以应到已有的多种单文件数据库中,现以其在SQL单文件数据库中的应用,并结合说明书附图对该方法进行详细说明,如图2所示,该方法具体可以包括:
步骤21,根据业务关系将单文件数据库中的数据表分别建立对应的虚拟文件,将数据表和对应的虚拟文件建立映射关系,并将映射关系存储于日志文件中。
对数据库的操作可分为创建数据库和操作数据库。本具体实施方式在创建数据库时,数据库中的所有信息被保存在一个文件内,这些信息由若干个数据表组成并且需要明确各表之间的业务关系。如图3所示,在用户访问数据库之前,可以先根据业务关系的不同,将不同的数据表划分成若干个数据表群,并为每个数据表群建立对应的虚拟文件,这些数据表群与虚拟文件的对应关系都记录在日志文件中。
步骤22,根据用户请求访问的数据表在日志文件中的映射关系,将与用户请求访问的数据表对应的虚拟文件提供给用户访问。
用户对数据库的操作可能会出现多用户同时操作不同的数据表、多用户同时操作同一个数据表、多用户中既有同时操作不同的数据表的也有同时操作同一个数据表等复杂的情况,这些情况都容易导致数据库出现操作错误。
对于多用户同时操作的数据表不在同一个虚拟文件中的情况,本具体实施方式可以使用户通过日志文件中数据表和虚拟文件对应关系分别直接操作对应的虚拟文件。在每次使用数据库时都遵循日志文件中的数据表和虚拟文件发热对应关系,通过数据表名找到其对应的虚拟文件,以便操作对应的虚拟文件。
对于多用户同时操作同一个虚拟文件中的数据库的情况,可以使用最长等待时间优先算法排列各用户间的执行优先顺序,即当某用户需要操作较多数据时将DDL操作分成多块执行,以满足其他用户操作在短时间内可访问同一虚拟文件上的表数据。
另外,用户对数据库的操作还可能出现不同用户同时操作一个虚拟文件中的数据表,并且既有读操作也有写操作的并行读写操作的情况,在本具体实施方式中,可以采用数据封锁机制来解决并发操作中的数据一致性和完整性问题。封锁是防止存取同一资源的用户之间破坏性的干扰的机制,该干扰是指不正确地修改数据或不正确地更改数据结构。在本具体实施方式中使用两种封锁:排它(专用)封锁和共享封锁。排它封锁禁止相关资源的共享,如果一个事务以排它方式封锁一个资源,仅仅该事务可更改该资源,直至释放排它封锁;共享封锁允许相关资源可以共享,几个用户可同时读同一数据,几个事务可在同一资源上获取共享封锁,共享封锁比排它封锁具有更高的数据并行性。
本具体实施方式利用事务和封锁机制提供数据并发存取和数据完整性。在一个事务内由语句获取的全部封锁在事务期间被保持,防止其它并行事务的破坏性干扰,一个事务的SQL语句所作的修改在它提交之后所启动的事务中才是可见的,在一个事务中由语句所获取的全部封锁在该事务提交或回滚时被释放。
本具体实施方式在两个不同级上提供读一致性:语句级读一致性和事务级一致性。通过实施语句级读一致性,保证单个查询所返回的数据与该查询开始时刻相一致。所以一个查询从不会看到在查询执行过程中提交的其它事务所作的任何修改。为了实现语句级读一致性,在查询进入执行阶段时,在注视SCN的时候为止所提交的数据是有效的,而在语句执行开始之后其它事务提交的任何修改,查询将是看不到的。另外,本具体实施方式还可以通过实施事务级读一致性,以保证在同一事务内所有查询的数据的一致性。
对于数据库的并行读写操作,本具体实施方式可以选择使用不同封锁类型来控制数据的并行存取,防止用户之间的破坏性干扰。可以通过为一个事务自动地封锁其中的一个资源以防止其它事务对同一个资源的排它封锁。在某种事件出现或事务不再需要该资源时自动地释放,可以将相应的封锁类型分为以下三种:
数据封锁:数据封锁保护表数据,在多个用户并行存取数据时保证数据的完整性。数据封锁防止相冲突的DML和DDL操作的破坏性干扰。DML操作可在两个级获取数据封锁,即指定行封锁和整个表封锁,在防止冲突的DDL操作时也需表封锁。当行要被修改时,事务在该行获取排它数据封锁。表封锁可以有下列方式:共享封锁、排它封锁。
DDL封锁(日志控制封锁):DDL封锁保护模式对象(如数据表)的定义,DDL操作将影响对象,一个DDL语句隐式地提交一个事务。当任何DDL事务需要时自动获取日志控制封锁,用户不能显式地请求DDL封锁。在DDL操作期间,被修改或引用的模式对象被封锁。
内部封锁:保护内部数据库和内存结构,这些结构对用户是不可见的。
本具体实施方式提供的多用户操作数据库的流程可以参考图4,首先根据业务关系在日志文件中查找数据表对应的虚拟文件,若已经有用户在操作该虚拟文件,则进入等待,若没有用户在操作该虚拟文件,则执行对该虚拟文件的操作,通过本具体实施方式提供的方法,解决了多用户操作单文件数据库时由并行读写操作产生的容易破坏数据的问题,并使一个用户在操作数据库时不受其他用户的限制,实现了多用户同时高速操作单文件数据库。
本发明的具体实施方式还提供了一种访问单文件数据库的装置,如图5所示,具体可以包括:
虚拟文件建立单元51,用于根据业务关系将单文件数据库中的数据表分别建立对应的虚拟文件,将数据表和对应的虚拟文件建立映射关系,并将映射关系存储于日志文件中;
虚拟文件访问单元52,用于根据用户请求访问的数据表在日志文件中的映射关系,将与用户请求访问的数据表对应的虚拟文件提供给用户访问。
进一步地,在虚拟文件访问单元中,根据用户请求访问的数据表在日志文件中的映射关系包括对于每个访问请求都分别查找请求访问的数据表在日志文件中的映射关系。
另外,该装置还可以包括:
优先排序单元53,用于若多个用户同时请求访问同一个数据表相应的虚拟文件,则使用预定算法对多个用户进行优先级排序;
虚拟文件封锁单元54,用于若多个用户同时对同一个数据表相应的虚拟文件并行存取,则对同一个数据表相应的虚拟文件施行预定的封锁机制。
本具体实施方式可以通过虚拟文件建立单元51根据业务关系将单文件数据库中的数据表分别建立对应的虚拟文件,将数据表和对应的虚拟文件建立映射关系,并将映射关系存储于日志文件中;以及通过虚拟文件访问单元52根据用户请求访问的数据表在日志文件中的映射关系,将与用户请求访问的数据表对应的虚拟文件提供给用户访问。另外,还可以通过优先排序单元53使用预定算法对多个用户进行优先级排序;以及通过虚拟文件封锁单元54对同一个数据表相应的虚拟文件施行预定的封锁机制。
上述终端中包含的各单元的处理功能的具体实施方式在之前的方法实施方式中已经描述,在此不再重复描述。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。

Claims (8)

1.一种访问单文件数据库的方法,其特征在于,包括:
根据业务关系将单文件数据库中的数据表分别建立对应的虚拟文件,将数据表和对应的虚拟文件建立映射关系,并将所述映射关系存储于日志文件中;
根据用户请求访问的数据表在日志文件中的映射关系,将与所述用户请求访问的数据表对应的虚拟文件提供给用户访问。
2.根据权利要求1所述的方法,其特征在于,所述根据用户请求访问的数据表在日志文件中的映射关系包括对于每个访问请求都分别查找请求访问的数据表在日志文件中的映射关系。
3.根据权利要求1所述的方法,其特征在于,该方法还包括:
若多个用户同时请求访问同一个数据表相应的虚拟文件,则使用预定算法对多个用户进行优先级排序。
4.根据权利要求1-3任意一项所述的方法,其特征在于,该方法还包括:
若多个用户同时对同一个数据表相应的虚拟文件并行存取,则对所述同一个数据表对应的虚拟文件实行预定的封锁机制。
5.一种访问单文件数据库的装置,其特征在于,包括:
虚拟文件建立单元,用于根据业务关系将单文件数据库中的数据表分别建立对应的虚拟文件,将数据表和对应的虚拟文件建立映射关系,并将所述映射关系存储于日志文件中;
虚拟文件访问单元,用于根据用户请求访问的数据表在日志文件中的映射关系,将与所述用户请求访问的数据表对应的虚拟文件提供给用户访问。
6.根据权利要求5所述的装置,其特征在于,在虚拟文件访问单元中,所述根据用户请求访问的数据表在日志文件中的映射关系包括对于每个访问请求都分别查找请求访问的数据表在日志文件中的映射关系。
7.根据权利要求5所述的装置,其特征在于,该装置还包括:
优先排序单元,用于若多个用户同时请求访问同一个数据表相应的虚拟文件,则使用预定算法对多个用户进行优先级排序。
8.根据权利要求5-7任意一项所述的装置,其特征在于,该装置还包括:
虚拟文件封锁单元,用于若多个用户同时对同一个数据表相应的虚拟文件并行存取,则对所述同一个数据表相应的虚拟文件施行预定的封锁机制。
CN 200910237053 2009-11-03 2009-11-03 一种访问单文件数据库的方法及装置 Active CN101714167B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200910237053 CN101714167B (zh) 2009-11-03 2009-11-03 一种访问单文件数据库的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200910237053 CN101714167B (zh) 2009-11-03 2009-11-03 一种访问单文件数据库的方法及装置

Publications (2)

Publication Number Publication Date
CN101714167A true CN101714167A (zh) 2010-05-26
CN101714167B CN101714167B (zh) 2013-03-06

Family

ID=42417813

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200910237053 Active CN101714167B (zh) 2009-11-03 2009-11-03 一种访问单文件数据库的方法及装置

Country Status (1)

Country Link
CN (1) CN101714167B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101937474A (zh) * 2010-10-14 2011-01-05 广州从兴电子开发有限公司 海量数据查询方法及设备
CN103761328A (zh) * 2014-01-29 2014-04-30 上海网达软件股份有限公司 基于单数据库和单文件的进程内虚拟文件系统
CN104679881A (zh) * 2015-03-13 2015-06-03 华为技术有限公司 一种并发控制方法及装置
WO2016197870A1 (zh) * 2015-06-11 2016-12-15 阿里巴巴集团控股有限公司 一种处理关系型数据库中ddl语句的方法与设备
CN106844758A (zh) * 2017-02-17 2017-06-13 安图实验仪器(郑州)有限公司 数据集代码生成方法
CN107133304A (zh) * 2017-04-28 2017-09-05 努比亚技术有限公司 一种数据操作方法、装置及计算机可读存储介质
CN111125053A (zh) * 2019-10-31 2020-05-08 苏州浪潮智能科技有限公司 一种优化数据库写入速率的方法和设备
WO2020238737A1 (zh) * 2019-05-30 2020-12-03 阿里巴巴集团控股有限公司 数据库任务的处理方法、装置、电子设备及可读介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003029937A2 (en) * 2001-10-01 2003-04-10 Schlumberger Systemes Access to data stored in an embedded database
JP3959725B2 (ja) * 2005-03-18 2007-08-15 ソニー株式会社 再生装置および再生方法、プログラムおよびプログラム格納媒体、データ配信システム、データ構造、送信装置および送信方法、受信装置および受信方法、記録媒体、並びに、記録媒体の製造方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE521433C2 (sv) * 1998-07-22 2003-11-04 Ericsson Telefon Ab L M En metod för hantering av risken för en total låsning mellan samtidiga transaktioner i en databas
CN101315628B (zh) * 2007-06-01 2011-01-05 华为技术有限公司 内存数据库系统及实现内存数据库的方法和装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003029937A2 (en) * 2001-10-01 2003-04-10 Schlumberger Systemes Access to data stored in an embedded database
JP3959725B2 (ja) * 2005-03-18 2007-08-15 ソニー株式会社 再生装置および再生方法、プログラムおよびプログラム格納媒体、データ配信システム、データ構造、送信装置および送信方法、受信装置および受信方法、記録媒体、並びに、記録媒体の製造方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101937474A (zh) * 2010-10-14 2011-01-05 广州从兴电子开发有限公司 海量数据查询方法及设备
CN103761328A (zh) * 2014-01-29 2014-04-30 上海网达软件股份有限公司 基于单数据库和单文件的进程内虚拟文件系统
CN104679881A (zh) * 2015-03-13 2015-06-03 华为技术有限公司 一种并发控制方法及装置
WO2016197870A1 (zh) * 2015-06-11 2016-12-15 阿里巴巴集团控股有限公司 一种处理关系型数据库中ddl语句的方法与设备
CN106844758A (zh) * 2017-02-17 2017-06-13 安图实验仪器(郑州)有限公司 数据集代码生成方法
CN107133304A (zh) * 2017-04-28 2017-09-05 努比亚技术有限公司 一种数据操作方法、装置及计算机可读存储介质
WO2020238737A1 (zh) * 2019-05-30 2020-12-03 阿里巴巴集团控股有限公司 数据库任务的处理方法、装置、电子设备及可读介质
CN111125053A (zh) * 2019-10-31 2020-05-08 苏州浪潮智能科技有限公司 一种优化数据库写入速率的方法和设备

Also Published As

Publication number Publication date
CN101714167B (zh) 2013-03-06

Similar Documents

Publication Publication Date Title
CN101714167B (zh) 一种访问单文件数据库的方法及装置
RU2373571C2 (ru) Системы и способы осуществляемого посредством доступа на уровне мелких структурных единиц управления данными, хранящимися в реляционных базах данных
US9672235B2 (en) Method and system for dynamically partitioning very large database indices on write-once tables
US10754854B2 (en) Consistent query of local indexes
US9576038B1 (en) Consistent query of local indexes
US7146365B2 (en) Method, system, and program for optimizing database query execution
EP2406736A2 (en) Composite hash and list partitioning of database tables
US11314719B2 (en) Method for implementing change data capture in database management system
US8005836B2 (en) Method and system for performing logical partial declustering
US10509916B2 (en) Access control lists for high-performance naming service
US20140181042A1 (en) Information processor, distributed database system, and backup method
CN113535746B (zh) 一种非关系型数据通过随机序列读写后控制一致性的方法
US20070174360A1 (en) Storage system embedding database
US7756813B2 (en) Electronic data structure for controlling access to data objects using locks
CN112257097A (zh) 一种基于分布式数据库的分区权限管理方法
CN112115115B (zh) 基于数据仓库的文件移动方法、设备和存储介质
CN110413617B (zh) 一种根据数据量的大小动态调节哈希表组的方法
CN114817402A (zh) 分布式数据库于多region部署场景下的SQL执行优化方法
KR102214697B1 (ko) 데이터베이스 관리 시스템에서 데이터 저장을 위한 공간 관리를 제공하는 컴퓨터 프로그램
US10698877B2 (en) High-performance naming service using an optimistic-concurrency-control in-memory database
US9442948B2 (en) Resource-specific control blocks for database cache
Gupta et al. Pragamana: performance comparison and programming alpha-miner algorithm in relational database query language and NoSQL column-oriented using apache phoenix
Jin et al. Materialized views for eventually consistent record stores
US6438536B1 (en) Method and system for dynamically generating code to enhance the performance of a relational database manager that provides access to a relational database
JP4137366B2 (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
TR01 Transfer of patent right

Effective date of registration: 20180211

Address after: Room 5, room 5999, Shen Chang building, No. 51, Zhichun Road, Haidian District, Beijing

Patentee after: Wang Pei

Address before: 100044 Beijing city Haidian District Xizhimen Street No. 168 Tengda building 3105-3109A

Patentee before: Beijing Jiuhe Chuangsheng Network Technology Co., Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20190322

Address after: 100083 Beijing Haidian District Xueqing Road 8 (Science and Technology Wealth Center) B Block 5 Floor B508

Patentee after: Beijing Highway Telecommunication Technology Co.,Ltd.

Address before: Room 5999, 5th floor, Shenchang Building, 51 Zhichun Road, Haidian District, Beijing, 100190

Patentee before: Wang Pei

TR01 Transfer of patent right