CN110502535B - 数据访问方法、装置、设备和存储介质 - Google Patents
数据访问方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN110502535B CN110502535B CN201910804319.2A CN201910804319A CN110502535B CN 110502535 B CN110502535 B CN 110502535B CN 201910804319 A CN201910804319 A CN 201910804319A CN 110502535 B CN110502535 B CN 110502535B
- Authority
- CN
- China
- Prior art keywords
- dictionary
- cache
- node
- chain
- copy
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实施例公开了一种数据访问方法、装置、设备和存储介质。该方法包括:获取到数据访问请求时,准备全局缓存字典链;根据所述数据访问请求和所述全局缓存字典链确定缓存字典节点副本;根据所述缓存字典节点副本对目标数据进行访问。本发明实施例的技术方案,通过字典节点副本的使用,解决了数据库访问瓶颈的问题,可提高数据访问效率,降低了数据字典的维护难度,可减少数据库缓存的占用空间。
Description
技术领域
本发明实施例涉及计算机应用技术领域,尤其涉及一种数据访问方法、装置、设备和存储介质。
背景技术
在数据库中数据字典相当于一种用户可以用于访问记录数据库和应用元数据的目录,可以是对数据库内表信息的物理与逻辑的说明。数据库中往往根据需要生成数据字典,供不同的并发请求访问。
现有技术中,数据库中的数据字典仅有一份,当字典对象被频繁修改时,数据字典成为资源争夺的热点,每当数据字典被访问就需要引用对应内存,当数据字典需要删除时,还需要对引用该数据字典的线程进行检查,导致不能随意淘汰数据字典,数据字典成为数据库中数据访问的瓶颈,降低了数据访问速度。
发明内容
本发明提供一种数据访问方法、装置、设备和存储介质,以实现降低数据字典维护难度,数据库数据的高效访问。
第一方面,本发明实施例提供了一种数据访问方法,该方法包括:
获取到数据访问请求时,准备全局缓存字典链;
根据所述数据访问请求和所述全局缓存字典链确定缓存字典节点副本;
根据所述缓存字典节点副本对目标数据进行访问。
第二方面,本发明实施例提供了一种数据访问装置,该装置包括:
初始模块,用于获取到数据访问请求时,准备全局缓存字典链;
副本模块,用于根据所述数据访问请求和所述全局缓存字典链确定缓存字典节点副本;
访问模块,用于根据所述缓存字典节点副本对目标数据进行访问。
第三方面,本发明实施例还提供了一种设备,该设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明实施例中任一所述的数据访问方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例中任一所述的数据访问方法。
本发明实施例的技术方案,通过获取到数据访问请求时,准备全局缓存字典链,根据数据访问请求和全局缓存字典链确定缓存字典节点副本,根据缓存字典节点副本对目标数据进行访问,解决了数据库访问过程的瓶颈,可提高数据访问速度,简化数据字典的维护难度,可优化数据库存储空间。
附图说明
图1是本发明实施例一提供的数据访问方法的流程图;
图2是本发明实施例二提供的数据访问方法的流程图;
图3是本发明实施例二提供的数据访问方法中全局缓存字典链的示例图;
图4是本发明实施例二提供的数据访问方法中字典节点副本的示例图;
图5是本发明实施例三提供的数据访问装置的结构示意图;
图6是本发明实施例四提供的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构,此外,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
实施例一
图1是本发明实施例一提供的数据访问方法的流程图,本实施例可适用于访问数据库中数据的情况,该方法可以由数据访问装置来执行,该装置可以采用硬件和/或软件的方式来实现,参见图1,本发明实施例的方法包括:
步骤101、获取到数据访问请求时,准备全局缓存字典链。
其中,数据访问请求可以是请求访问数据库中存储数据的请求,具体可以是数据操纵语言的增删改查请求和数据库定义语言的操作请求,全局缓存字典链,可以是数据库全局缓存中存储的数据字典,数据字典的形式具体可以是字典链,全局缓存字典链的节点可以为各字典对象对应的数据字典,全局缓存字典链中可以存储有各字典对象的属性信息。
具体的,在获取到对数据库中数据请求访问的结构化查询语言(StructuredQuery Language,SQL)时,可以在全局缓存中对字典链进行准备,例如,可以为全局缓存字典链在全局缓存中分配好缓存空间,当获取到数据操作语言或数据库定义语言等类型的数据请求访问时,可以在全局缓存字典链中添加新的节点或者将已有节点准备好。
步骤102、根据所述数据访问请求和所述全局缓存字典链确定缓存字典节点副本。
其中,缓存字典节点副本可以是数据访问请求中待访问数据对应的数据字典的副本,每个数据访问请求可以存在对应的缓存字典节点副本,例如,系统中存在3个SQL语句的查询线程,可以在每个SQL语句的查询线程的缓存中生成对应的缓存字典节点副本,可以理解的是,即使,两个数据访问请求访问的数据相同,也可以为两个数据访问请求分别建立对应的缓存字典节点副本,缓存字典节点副本之间可以是相互独立的,即使字典对象之间存在关联,对应的缓存字典节点副本是相互独立,字典对象可以包括数据表、视图和索引等内容。
在本发明实施例中,可以根据数据访问请求在全局缓存字典链中查找对应的字典节点,可以根据查找到的字典节点在对应各数据访问请求的局部缓存中建立缓存字典节点副本。例如,可以SQL语言查询线程请求访问全局缓存字典链中字典节点A时,可以根据全局缓存中的预设的hash表对字典节点A根据编号ID或者名称Name在全局缓存字典链中进行查找,在查找到字典节点A后,可以将字典节点A存储到对应查询线程的局部缓存中以生成缓存字典节点副本。缓存字典节点副本的使用,使得全局缓存字典链的信息发生变化时可以随时删除,不必等待引用线程结束任务,解决数据访问的瓶颈问题,每个线程不必等待其他线程完成唯一数据字典的访问,可提升数据库中数据访问速度。
步骤103、根据所述缓存字典节点副本对目标数据进行访问。
其中,目标数据可以是数据访问请求待访问的数据,缓存字典节点副本中可以存储有目标数据的相关信息,可以包括目标数据所处字典对象的存储地址。
具体的,可以根据缓存字典节点副本中存储的信息对目标数据进行访问实现数据访问请求。例如,缓存字典节点副本中可以存储有目标数据存储位置以及对应数据表的列信息,可以根据存储位置及列信息对数据库硬盘或者内存中的数据进行读取,可以对读取到的数据进行增加、更改、删除和查询,还可以根据数据库定义语言对目标数据进行更改,使得数据库中的数据表结构、数据类型以及字典对象之间的关系发生更改。
本发明实施例的技术方案,通过获取到数据访问请求时,对全局缓存字典链进行准备,根据数据访问请求和全局缓存字典链确定缓存字典节点副本,根据缓存字典节点副本对目标数据进行访问,缓存字典副本的使用,解决了数据中数据字典成为数据访问瓶颈的问题,提高了数据访问速度,可降低数据字典的维护难度。
实施例二
图2是本发明实施例二提供的数据访问方法的流程图,本发明实施例的技术方案是以上述发明实施例为基础进行的具体化,参见图2,本发明实施例的提供的方法包括:
步骤201、提取数据访问请求中的待访问字典对象。
其中,数据访问请求可以是访问目标数据的请求,数据访问请求中可以包括待访问字典对象,待访问字典对象可以是数据表、视图和索引等,待访问对象可以存储有字典对象的相关属性。
具体的,可以对数据访问请求进行解析获取到存储有数据访问请求目标的待访问数据表、视图、索引等。示例性的,可以对SQL语句等数据访问请求进行解析,获取到存储数据的待访问数据表的表名。
步骤202、根据所述数据访问请求中的待访问字典对象在全局缓存字典链中查找对应的字典节点。
具体的,可以根据待访问字典对象的标识号在全局缓存字典链中查找到对应的字典节点。例如,可以在全局缓存字典链的头部开始逐个查找字典节点判断字典节点中的属性信息是否属于待访问字典对象,还可以使用哈希算法对全局缓存字典链中的字典节点进行快速查找,获取到待访问对象的属性信息。
步骤203、若全局缓存字典链中存在对应所述待访问对象的字典节点,则所述全局缓存字典链完成准备。
其中,全局缓存字典链可以由字典节点构成,每个字典节点可以存储有一个字典对象的属性信息。
在本发明实施例中,可以在全局缓存字典链中查找存储有待访问对象属性的字典节点,如果在全局缓存字典链中查找到该字典节点,可以不需要生成新的字典节点添加到全局缓存字典链中,可以将全局缓存中已有的全局缓存字典链作为准备完成的全局缓存字典链。
示例性的,图3是本发明实施例二提供的数据访问方法中全局缓存字典链的示例图,参见图3,全局缓存字典链可以以链状结构存储各字典对象的数据信息,字典节点21可以存储有字典对象属性信息,可以理解的是,全局缓存字典链中的连接可以是逻辑链接,也可以是物理链接,字典节点21之间可以存储有连接关系便于字典节点21的查找,各字典节点21中存储的待访问对象的属性信息可以相同,也可以不同,为了节约全局缓存的占用空间,全局缓存字典链中的字典节点21可以不重复,每个字典节点21可以对应不同的字典对象。
步骤204、若所述全局缓存字典链中未存在对应所述待访问字典对象的字典节点,则根据所述待访问字典对象准备全局缓存字典链。
具体的,在全局缓存字典链中未查找到待访问字典对象对应的字典节点,可以根据待访问字典对象生成字典节点并添加到全局缓存字典链中以完成全局缓存字典链的准备。例如,在获取到数据访问请求时,select*from A(表名),可以先在全局字典缓存区中查找数据表A对应的字典节点,可以通过数据表A的编号或者名字查询,如果未查找到,可以根据数据库中将系统表构建数据表A属性信息,以字节流的方式生成字典节点并加入到全局缓存字典链。
步骤205、根据所述字典节点生成对应的字典对象信息结构。
其中,字典对象信息结构可以对应待访问字典对象的数据结构,可以包括数据成员、对象、指针和链表等结构。
在本发明实施例中,可以在执行数据访问请求的线程的缓存中生成存储待访问字典对象的属性信息的相应数据结构,可以包括数据成员、对象、指针和链表等结构,其中,缓存可以是执行数据访问请求的线程对应的存储空间,可以是各线程内部的局部缓存。
步骤206、将所述字典节点中字节流形式的属性信息存储到所述字典对象信息结构以生成缓存字典节点副本。
其中,缓存字典节点副本可以是根据字典节点生成的副本,可以对应各执行数据访问请求的线程,不同线程对应的字典节点副本可以相同,当数据访问请求执行后,对应的字典节点副本可以淘汰,不需要长时间的占用缓存空间,提高了数据库系统的缓存利用率。
具体的,字典节点中信息可以为待访问字典对象的属性信息,信息在字典节点中可以是以平坦化形式存储,可以仅存储有待访问字典对象的自身属性信息,对应索引链表和约束链表等关联性结构,可以只存储对应的编号等属性,无需将关联的内容存储到字典节点中。
本发明实施例中,当需要生成缓存字典节点副本时,可以将平坦化的信息由字典节点拷贝到对应的字典对象信息结构中作为字典节点副本。例如,字典节点里面的OBJ地址,可以是字节流,存储有平坦化的信息,将字节流中的信息(指针地址,链表地址)和属性信息,全部赋给字典节点副本。可以先拷贝字节流中结构体成员地址给字典节点副本,然后将各个链表的个数,指针的内容等再赋值给字典节点副本。字典节点副本中的hdr也可以存储字典节点的附加信息,字典节点hdr中的信息可以对应拷贝到字典节点副本中。进一步的,为了确保字典节点副本的有效,可以在根据字典节点生成字典节点副本时,对字典节点进行标记,字典节点每生成一份字典节点副本,可以将字典节点的使用计数相应增大1,当需要释放字典节点对应的全局缓存空间时,可以对使用计数进行判断,当使用计数为0时,再释放字典节点的全局缓存空间。
示例性的,图4是本发明实施例二提供的数据访问方法中字典节点副本的示例图,参见图4,本发明实施例中可以根据数据访问请求的不同生成不同的缓存字典节点副本,各缓存字典节点副本可以对应一个字典节点,多个数据访问请求访问同一个待访问字典对象时,可以为每个数据访问请求的执行线程生成一个缓存字典节点副本,各缓存字典节点副本可以相互独立,一个缓存字典节点副本的淘汰不会对其他缓存字典节点副本产生影响。
步骤207、若全局缓存字典链的版本号与所述数据访问请求的会话版本号不一致时,对所述缓存字典节点副本进行有效性验证。
其中,由于用户对数据库的操作,全局缓存字典链可以发生变化,此时,缓存字典节点副本可以无效。会话版本号可以是数据访问请求的版本号,数据访问请求在初始状态时,可以与全局缓存字典链的版本号相同,当全局缓存字典链的版本号发生改变时,需要检查缓存字典节点副本的有效性。例如,两个会话并发执行。会话一执行select c1 from A(表名);会话二执行create index i1 on A(c1);两个会话同时进行。会话一select语句在访问全局缓存字典链生成缓存字典节点副本。同时,会话二create index i1在修改了系统表并提交,导致全局缓存字典链发生变化,因为会话一使用的缓存字典节点副本在修改之前生成(此副本的版本号为NO1),此后全局缓存字典链又被会话二修改,说明缓存字典节点副本的属性信息内容已经不是最新的了,因此在使用缓存字典节点副本之前必须要检查属性信息的有效性。可以重新获取最新的字典节点副本版本号,可以先通过系统表生成一份新的字典节点,进而重新生成一份字典节点副本,并获取其版本号NO2。可以将NO2和刚才缓存字典节点副本的版本号NO1对比,确保缓存字典节点副本是有效的。
在本发明实施例中,为了保障数据访问请求的准确,当全局缓存字典链的版本号与数据访问请求的会话版本号不一致时,可以表明全局缓存字典链中的某一个或多个字典节点已被删除且释放。缓存字典节点副本存储的属性信息可能已经无效,需要对缓存字典节点副本进行有效性验证,确定缓存字典节点副本是否有效。例如,可以先通过系统表生成一份新的字典节点,进而重新生成一份缓存字典节点副本,并获取其版本号NO2。可以将NO2和原有缓存字典节点副本的版本号NO1对比,若NO2与NO1相同,则确定缓存字典节点副本有效。
可以理解的是,在对缓存字典副本进行有效性验证之后,可以存在两种验证结果:缓存字典节点副本无效和缓存字典节点副本有效。当缓存字典节点副本无效时,根据该缓存字典节点副本无法实现数据访问请求,可以直接进行报错并结束数据访问请求;当缓存字典节点副本有效时,可以根据缓存字典节点副本实现数据访问请求,例如,可以继续执行步骤208。
步骤208、若所述全局缓存字典链的版本号与所述数据访问请求的会话版本号一致或所述缓存字典节点副本有效,则根据所述数据访问请求对所述缓存字典节点副本对应的目标数据进行操作。
在本发明实施例中,如果全局缓存字典链的版本号与数据访问请求的会话版本号相同,可以说明全局缓存字典链未发生改变,缓存字典节点副本可以是有效的,或者,虽然全局缓存字典链的版本号与数据访问请求的会话版本号不一致,此时全局缓存字典链可以发生改变,但是发生改变的不是当前待访问对象对应的字典节点,因此当前待访问对象对应的缓存字典节点副本可以通过有效验证,此时可以根据缓存字典节点副本存储的信息对目标数据进行访问,并实现增删改查等操作以实现数据访问请求。
步骤209、监测到数据库的字典对象的系统表发生改变时,将字典对象对应的字典节点从所述全局缓存字典链中删除且释放。
其中,系统表发生变化,可以是指待访问对象的属性信息发生变化,全局缓存字典链中的字典节点存储的属性信息已经过时,此时,可以将待访问字典对象对应的字典节点从全局缓存字典链中删除并释放,删除可以是将字典节点从全局缓存字典链中摘除并独立,在该字典节点被摘除并独立后,通过对应的缓存字典节点副本仍可以访问该字典节点,该独立的字典节点将在计数为0时被删除并释放空间,释放可以是指将全局缓存字典链中字典节点对应的缓存空间释放。具体的,当数据库中字典对象的属性信息发生改变,造成对应的系统表发生改变,全局缓存字典链中该字典对象对应的字典节点不可以用于数据访问,可以先将字典对象对应的字典节点从全局缓存字典链中删除,可以在字典节点不存在对应的缓存字典节点副本时再将字典节点对应的全局缓存释放。例如监测到数据库执行了数据库定义语言(Data Definition Language,DDL)中的CREATE、ALTER和DROP等命令被执行,可以认为数据库的系统表发生变化,可以将全局缓存字典链中的对应的字典节点删除。进一步的,为了提高全局缓存利用率,可以在有新的数据访问请求时,重新添加字典节点到全局缓存字典链。
本发明实施例的技术方案,通过提取数据访问请求中的待访问字典对象,根据全局缓存字典链中是否存在对应待访问数字典对象的字典节点准备全局缓存字典链,基于待访问字典对象在全局缓存字典链中获取到对应的字典节点,根据字典节点在缓存生成字典对象信息结构,并将字典节点中信息存储以生成缓存字典节点副本,对生成的缓存字典节点副本进行有效性验证,在缓存字典节点副本有效时,根据缓存字典节点副本访问目标数据实现数据访问请求。本发明实施例的技术方案解决了数据字典成为数据访问的瓶颈问题,实现了数据的快速访问,缓存字典节点副本互相独立,可以随时删除淘汰,降低了数据字典的维护难度,可降低数据库缓存的占用空间,提高了缓存的利用率。
进一步的,在上述发明实施例的基础上,根据所述待访问字典对象准备全局缓存字典链,包括:根据数据库系统表获取所述待访问字典对象的属性信息;将所述属性信息以字节流形式存储到字典节点,并将所述字典节点添加到所述全局缓存字典链。
其中,数据库系统表可以是存储数据对象属性的信息表,可以包括数据表的字段名、字段属性、和各数据表之间的联系等,系统表可以为B树形式。
在本发明实施例中,可以根据数据库系统表的B树获取到待访问字典对象的属性信息,可以将待访问字典对象的属性信息以字节流的形式写入到字典节点中,具体可以存储到字典节点的公共地址中,可以先将属性信息中的成员信息数据写入,可以再将链表、指针等的长度和节点信息添加进公共地址。字典节点中的属性信息以平坦化方式存储为字典节点,在生成字典节点后,可以在字典节点中添加全局缓存字典链的关联关系,实现将字典节点添加到全局缓存字典链。示例性的,字典节点具体可以为一个结构体,字典节点中可以存储有字典对象的属性信息和与全局缓存字典链的关联关系。
进一步的,在上述发明实施例的基础上,在所述将所述待访问字典对象信息作为字典节点添加到所述全局缓存字典链之时,还包括:
全局缓存字典链的缓存空间达到预设空间阈值,且监测到所述全局缓存字典链中添加新的字典节点时,删除所述全局缓存字典链中被访问时间早于其他字典节点,且被访问次数少于其他字典节点的待删除节点。
其中,预设空间阈值可以是全局缓存字典链在全局缓存中最大存储空间的临界值,当全局缓存字典链的缓存空间大于空间阈值时,全局缓存字典链中的字典节点的总数可以不再增加。
在本发明实施例中,全局缓存字典链可以是按照最早最少策略生成的缓存链,当全局缓存字典链的缓存空间达到预设空间阈值时,全局缓存字典链中的字典节点数量可以固定,当有新的字典节点添加到全局缓存字典链中时,可以从全局缓存字典链中选择出被访问时间早于其他字典节点且被访问次数少于其他字典节点的待删除节点,删除的方式可以使用新添加的字典节点替换待删除节点的方式。
进一步的,在上述发明实施例的基础上,对所述缓存字典节点副本进行有效性验证,包括:根据所述缓存字典节点副本对应的字典节点生成新的缓存字典节点副本,并将所述新的缓存字典节点副本记为验证字典副本;判断所述缓存字典节点副本与所述验证字典副本的版本号是否相同;若所述验证字典副本和所述缓存字典节点副本的版本号相同,则确定所述缓存字典节点副本有效;若所述验证字典副本和所述缓存字典节点副本的版本号不同,则确定所述缓存字典节点副本无效。
其中,版本号可以是用于验证缓存字典节点副本有效性的参数,版本号可以随着全局缓存字典链中字典节点的更改而更改,例如,字典节点每更新一次,版本号可以对应的增大1。例如,系统表中的字典对象定义更新后,字典对象的版本号+1,相应地,字典节点也随之+1。验证字典副本可以与缓存字典节点副本对应相同的字典节点,验证字典副本可以在进行有效验证时生成。
具体的,发现全局缓存字典链的版本号与当前会话的版本号不一致时,可以对缓存字典节点副本进行有效验证,可以根据缓存字典节点副本对应的字典节点生成验证字典副本,将验证字典副本与待验证的缓存字典节点副本的版本号进行对比,若版本号相同,则确定对应的字典节点未发生变化,缓存字典节点副本有效,若版本号不相同,则确定对应的字典节点发生变化,缓存字典节点副本无效,可以理解的是,数据访问请求的会话版本号可以在会话初始登录时确定,可以是全局缓存字典链的版本号。
进一步的,在上述发明实施例的基础上,将字典对象对应的字典节点从所述全局缓存字典链中删除且释放,包括:
将所述字典节点从所述全局缓存字典链中删除;判断所述字典节点的使用计数是否为0;若所述字典节点的使用计数为0,则释放所述字典节点对应的缓存空间;若所述字典节点的使用计数不为0,则等待所述字典节点的使用计数为0时释放所述字典节点对应的缓存空间。
在本发明实施例中,在全局缓存字典链中删除字典节点可以包括两部分,可以先将字典节点从全局缓存字典链中删除,可以确保删除的字典节点不会根据新的数据访问请求生成缓存字典节点副本。字典节点对应的缓存字典节点副本正在使用时,可以在字典节点中生成使用计数,每有一个缓存字典节点副本,则使用计数可以相应加1,当缓存字典节点副本在淘汰后,字典节点可以完全从全局缓存中删除,可以对使用计数进行判断,当使用计数为0时,释放字典节点对应的缓存空间。
实施例三
图5是本发明实施例三提供的数据访问装置的结构示意图,本发明实施例的数据访问装置可执行本发明任意实施例所提供的数据访问方法,具备执行方法相应的功能模块和有益效果。该装置可以由软件和/或硬件实现,具体包括:初始模块301、副本模块302和访问模块303。
其中,初始模块301,用于获取到数据访问请求时,准备全局缓存字典链。
副本模块302,用于根据所述数据访问请求和所述全局缓存字典链确定缓存字典节点副本。
访问模块303,用于根据所述缓存字典节点副本对目标数据进行访问。
本发明实施例的技术方案,通过初始模块获取到数据访问请求时,对全局缓存字典链进行准备,副本模块根据数据访问请求和全局缓存字典链确定缓存字典节点副本,访问模块根据缓存字典节点副本对目标数据进行访问,缓存字典副本的使用,解决了数据中数据字典成为数据访问瓶颈的问题,提高了数据访问速度,可降低数据字典的维护难度。
进一步的,在上述发明实施例的基础上,初始模块包括:
参数提取单元,用于提取数据访问请求中的待访问字典对象。
第一初始单元,用于若全局缓存字典链中存在对应所述待访问字典对象的字典节点,则所述全局缓存字典链完成准备。
第二初始单元,用于若所述全局缓存字典链中未存在对应所述待访问字典对象的字典节点,则根据所述待访问字典对象准备全局缓存字典链。
进一步的,在上述发明实施例的基础上第二初始单元,包括:
信息获取子单元,用于根据数据库系统表获取所述待访问字典对象的属性信息。
节点添加单元,用于将所述属性信息以字节流形式存储到字典节点,并将所述字典节点添加到所述全局缓存字典链。
进一步的,在上述发明实施例的基础上,第二初始单元,还包括:
更新子单元,用于全局缓存字典链的缓存空间达到预设空间阈值,且监测到所述全局缓存字典链中添加新的字典节点时,删除所述全局缓存字典链中被访问时间早于其他字典节点,且被访问次数少于其他字典节点的待删除节点。
进一步的,在上述发明实施例的基础上,副本模块还包括:
查找单元,用于根据所述数据访问请求中的待访问字典对象在全局缓存字典链中查找对应的字典节点。
结构生成单元,用于根据所述字典节点生成对应的字典对象信息结构。
副本生成单元,用于将所述字典节点中字节流形式的属性信息存储到所述字典对象信息结构以生成缓存字典节点副本。
进一步的,在上述发明实施例的基础上,访问模块还包括:
验证单元,用于若全局缓存字典链的版本号与所述数据访问请求的会话版本号不一致时,对所述缓存字典节点副本进行有效性验证。
访问单元,用于若所述全局缓存字典链的版本号与所述数据访问请求的会话版本号一致或所述缓存字典节点副本有效,则根据所述数据访问请求对所述缓存字典节点副本对应的目标数据进行操作。
进一步的,在上述发明实施例的基础上,验证单元包括:
版本获取子单元,用于根据所述缓存字典节点副本对应的字典节点生成新的缓存字典节点副本,并将所述新的缓存字典节点副本记为验证字典副本。
对比子单元,用于判断所述缓存字典节点副本与所述验证字典副本的版本号是否相同。
有效确定子单元,用于若所述验证字典副本和所述缓存字典节点副本的版本号相同,则确定所述缓存字典节点副本有效。
无效确定子单元,用于若所述验证字典副本和所述缓存字典节点副本的版本号不同,则确定所述缓存字典节点副本无效。
进一步的,在上述发明实施例的基础上,数据访问装置还包括:
字典链删除模块,用于监测到数据库的字典对象的系统表发生改变时,将字典对象对应的字典节点从所述全局缓存字典链中删除且释放。
进一步的,在上述发明实施例的基础上,字典链删除模块包括:
节点删除单元,用于将所述字典节点从所述全局缓存字典链中删除。
节点使用判断单元,用于判断所述字典节点的使用计数是否为0。
第一释放单元,用于若所述字典节点的使用计数为0,则释放所述字典节点对应的缓存空间。
第二释放单元,用于若所述字典节点的使用计数不为0,则等待所述字典节点的使用计数为0时释放所述字典节点对应的缓存空间。
实施例四
图6是本发明实施例四提供的一种设备的结构示意图,如图6所示,该设备包括处理器60、存储器61、输入装置62和输出装置63;设备中处理器60的数量可以是一个或多个,图6中以一个处理器60为例;设备中的处理器60、存储器61、输入装置62和输出装置63可以通过总线或其他方式连接,图6中以通过总线连接为例。
存储器61作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的数据访问方法对应的程序模块(例如,数据访问装置中的初始模块301、副本模块302和访问模块303)。处理器60通过运行存储在存储器61中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的数据访问方法。
存储器61可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器61可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器61可进一步包括相对于处理器60远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置62可用于接收输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。输出装置63可包括显示屏等显示设备。实施例五
本发明实施例五还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种数据访问方法,该方法包括:
获取到数据访问请求时,准备全局缓存字典链;
根据所述数据访问请求和所述全局缓存字典链确定缓存字典节点副本;
根据所述缓存字典节点副本对目标数据进行访问。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的数据访问方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述数据访问装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (12)
1.一种数据访问方法,其特征在于,包括:
获取到数据访问请求时,准备全局缓存字典链;
根据所述数据访问请求和所述全局缓存字典链确定缓存字典节点副本;
根据所述缓存字典节点副本对目标数据进行访问。
2.根据权利要求1所述的方法,其特征在于,所述获取到数据访问请求时,准备全局缓存字典链,包括:
提取数据访问请求中的待访问字典对象;
若全局缓存字典链中存在对应所述待访问字典对象的字典节点,则所述全局缓存字典链完成准备;
若所述全局缓存字典链中未存在对应所述待访问字典对象的字典节点,则根据所述待访问字典对象准备全局缓存字典链。
3.根据权利要求2所述的方法,其特征在于,所述根据所述待访问字典对象准备全局缓存字典链,包括:
根据数据库系统表获取所述待访问字典对象的属性信息;
将所述属性信息以字节流形式存储到字典节点,并将所述字典节点添加到所述全局缓存字典链。
4.根据权利要求3所述的方法,其特征在于,在所述将所述属性信息以字节流形式存储到字典节点,并将所述字典节点添加到所述全局缓存字典链之时,还包括:
全局缓存字典链的缓存空间达到预设空间阈值,且监测到所述全局缓存字典链中添加新的字典节点时,删除所述全局缓存字典链中被访问时间早于其他字典节点,且被访问次数少于其他字典节点的待删除节点。
5.根据权利要求1所述的方法,其特征在于,所述根据所述数据访问请求和所述全局缓存字典链确定缓存字典节点副本,包括:
根据所述数据访问请求中的待访问字典对象在全局缓存字典链中查找对应的字典节点;
根据所述字典节点生成对应的字典对象信息结构;
将所述字典节点中字节流形式的属性信息存储到所述字典对象信息结构以生成缓存字典节点副本。
6.根据权利要求1所述的方法,其特征在于,所述根据所述缓存字典节点副本对目标数据进行访问,包括:
若全局缓存字典链的版本号与所述数据访问请求的会话版本号不一致时,对所述缓存字典节点副本进行有效性验证;
若所述全局缓存字典链的版本号与所述数据访问请求的会话版本号一致或所述缓存字典节点副本有效,则根据所述数据访问请求对所述缓存字典节点副本对应的目标数据进行操作。
7.根据权利要求6所述的方法,其特征在于,所述对所述缓存字典节点副本进行有效性验证,包括:
根据所述缓存字典节点副本对应的字典节点生成新的缓存字典节点副本,并将所述新的缓存字典节点副本记为验证字典副本;
判断所述缓存字典节点副本与所述验证字典副本的版本号是否相同;
若所述验证字典副本和所述缓存字典节点副本的版本号相同,则确定所述缓存字典节点副本有效;
若所述验证字典副本和所述缓存字典节点副本的版本号不同,则确定所述缓存字典节点副本无效。
8.根据权利要求1所述的方法,其特征在于,在根据所述缓存字典节点副本对目标数据进行访问之后,还包括:
监测到数据库的字典对象的系统表发生改变时,将字典对象对应的字典节点从所述全局缓存字典链中删除且释放。
9.根据权利要求8所述的方法,其特征在于,所述将字典对象对应的字典节点从所述全局缓存字典链中删除且释放,包括:
将所述字典节点从所述全局缓存字典链中删除;
判断所述字典节点的使用计数是否为0;
若所述字典节点的使用计数为0,则释放所述字典节点对应的缓存空间;
若所述字典节点的使用计数不为0,则等待所述字典节点的使用计数为0时释放所述字典节点对应的缓存空间。
10.一种数据访问装置,其特征在于,包括:
初始模块,用于获取到数据访问请求时,准备全局缓存字典链;
副本模块,用于根据所述数据访问请求和所述全局缓存字典链确定缓存字典节点副本;
访问模块,用于根据所述缓存字典节点副本对目标数据进行访问。
11.一种设备,其特征在于,所述设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-9任一所述的数据访问方法。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-9中任一所述的数据访问方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910804319.2A CN110502535B (zh) | 2019-08-28 | 2019-08-28 | 数据访问方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910804319.2A CN110502535B (zh) | 2019-08-28 | 2019-08-28 | 数据访问方法、装置、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110502535A CN110502535A (zh) | 2019-11-26 |
CN110502535B true CN110502535B (zh) | 2022-02-22 |
Family
ID=68590175
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910804319.2A Active CN110502535B (zh) | 2019-08-28 | 2019-08-28 | 数据访问方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110502535B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1652112A (zh) * | 2005-03-02 | 2005-08-10 | 北京北方烽火科技有限公司 | 一种嵌入式环境下数据字典的实现方法 |
CN1992953A (zh) * | 2005-12-30 | 2007-07-04 | 中兴通讯股份有限公司 | 一种分布式hlr内存数据库的实现方法 |
CN102201010A (zh) * | 2011-06-23 | 2011-09-28 | 清华大学 | 无共享架构的分布式数据库系统及其实现方法 |
CN103577465A (zh) * | 2012-08-02 | 2014-02-12 | 亿赞普(北京)科技有限公司 | 系统数据处理系统及方法 |
CN103838755A (zh) * | 2012-11-23 | 2014-06-04 | 景幂机械(上海)有限公司 | 数据库的远程异构容灾系统 |
CN105005592A (zh) * | 2015-06-29 | 2015-10-28 | 用友优普信息技术有限公司 | 数据字典生成方法和数据字典生成装置 |
CN107862026A (zh) * | 2017-10-31 | 2018-03-30 | 北京小度信息科技有限公司 | 数据存储方法及装置、数据查询方法及装置、电子设备 |
CN108431810A (zh) * | 2015-10-23 | 2018-08-21 | 甲骨文国际公司 | 代理数据库 |
CN109952569A (zh) * | 2016-09-16 | 2019-06-28 | 甲骨文国际公司 | 用于基于字典的连接和聚合的技术 |
US10521117B2 (en) * | 2015-11-24 | 2019-12-31 | Sap Se | Unified table delta dictionary memory size and load time optimization |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7120869B2 (en) * | 2001-08-16 | 2006-10-10 | Sun Microsystems, Inc. | Enhanced mechanism for automatically generating a transformation document |
-
2019
- 2019-08-28 CN CN201910804319.2A patent/CN110502535B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1652112A (zh) * | 2005-03-02 | 2005-08-10 | 北京北方烽火科技有限公司 | 一种嵌入式环境下数据字典的实现方法 |
CN1992953A (zh) * | 2005-12-30 | 2007-07-04 | 中兴通讯股份有限公司 | 一种分布式hlr内存数据库的实现方法 |
CN102201010A (zh) * | 2011-06-23 | 2011-09-28 | 清华大学 | 无共享架构的分布式数据库系统及其实现方法 |
CN103577465A (zh) * | 2012-08-02 | 2014-02-12 | 亿赞普(北京)科技有限公司 | 系统数据处理系统及方法 |
CN103838755A (zh) * | 2012-11-23 | 2014-06-04 | 景幂机械(上海)有限公司 | 数据库的远程异构容灾系统 |
CN105005592A (zh) * | 2015-06-29 | 2015-10-28 | 用友优普信息技术有限公司 | 数据字典生成方法和数据字典生成装置 |
CN108431810A (zh) * | 2015-10-23 | 2018-08-21 | 甲骨文国际公司 | 代理数据库 |
US10521117B2 (en) * | 2015-11-24 | 2019-12-31 | Sap Se | Unified table delta dictionary memory size and load time optimization |
CN109952569A (zh) * | 2016-09-16 | 2019-06-28 | 甲骨文国际公司 | 用于基于字典的连接和聚合的技术 |
CN107862026A (zh) * | 2017-10-31 | 2018-03-30 | 北京小度信息科技有限公司 | 数据存储方法及装置、数据查询方法及装置、电子设备 |
Non-Patent Citations (1)
Title |
---|
一种基于分布式环境的副本自动审视技术研究;丛丽晖等;《计算机工程与应用》;20030201(第04期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110502535A (zh) | 2019-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11625501B2 (en) | Masking sensitive information in records of filtered accesses to unstructured data | |
US11080260B2 (en) | Concurrent reads and inserts into a data structure without latching or waiting by readers | |
US11334474B2 (en) | Fast change impact analysis tool for large-scale software systems | |
JP2020502626A (ja) | データベース・システムにおけるテスト・データの形成及び動作 | |
US10650032B1 (en) | Filtering pipeline optimizations for unstructured data | |
US20150331898A1 (en) | Method and apparatus for concurrent access of mixed services | |
EP2987096A1 (en) | Caching external data sources for sql processing | |
US10824345B2 (en) | Systems and methods for storing object state on hash chains | |
EP2947582A1 (en) | Computing device and method for executing database operation command | |
US10664508B1 (en) | Server-side filtering of unstructured data items at object storage services | |
US8396858B2 (en) | Adding entries to an index based on use of the index | |
CN115269631A (zh) | 数据查询方法、数据查询系统、设备及存储介质 | |
US10691757B1 (en) | Method and system for cached document search | |
CN110502535B (zh) | 数据访问方法、装置、设备和存储介质 | |
US10762139B1 (en) | Method and system for managing a document search index | |
US11500943B2 (en) | Method and system for cached early-binding document search | |
CA3089270C (en) | Systems and methods for storing object state on hash chains | |
CN110413617B (zh) | 一种根据数据量的大小动态调节哈希表组的方法 | |
JP6323887B2 (ja) | ルートノードを変更するための方法および変更装置 | |
US11366810B2 (en) | Index contention under high concurrency in a database system | |
US11210201B2 (en) | Scalable incremental analysis using caller and callee summaries | |
WO2021017655A1 (zh) | 获取索引节点号的方法、装置、计算设备和存储介质 | |
CN117828127A (zh) | 一种基于半结构化存储的树状层级集群用户管理方法 | |
CN116595056A (zh) | 一种openGauss数据库中基于结果集查询缓存的查询方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |