CN102243660A - 一种数据访问方法及设备 - Google Patents
一种数据访问方法及设备 Download PDFInfo
- Publication number
- CN102243660A CN102243660A CN2011102008076A CN201110200807A CN102243660A CN 102243660 A CN102243660 A CN 102243660A CN 2011102008076 A CN2011102008076 A CN 2011102008076A CN 201110200807 A CN201110200807 A CN 201110200807A CN 102243660 A CN102243660 A CN 102243660A
- Authority
- CN
- China
- Prior art keywords
- node
- value
- identification
- corresponding relation
- key
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据访问方法及设备,主要内容为:通过独立存储方式,预先存储节点之间的层级关系以及节点与元数据之间的对应关系,以便于当用户进行访问时,可利用预先存储的层级关系,确定被访问的节点与其上级节点之间的层级关系,进而快速定位出用户实际希望访问的节点,并返回该节点的元数据,使用户根据所述元数据进行访问。由于在本发明提出的数据访问方案中,并没有在元数据中额外增加表示节点之间层级关系的内容,而是独立存储节点之间的层级关系,因此,在进行数据访问时,可根据独立存储的层级关系快速查找出被访问的节点,有效提高数据访问效率。
Description
技术领域
本发明涉及数据库技术,尤其涉及一种数据访问方法及设备。
背景技术
随着云存储技术的发展,对于云存储的数据访问接口标准也被逐步制定并完善起来,目前常用的对象存储***(Object-Based Storage System)就是在云存储的数据管理接口标准的基础上,设计的基于云存储的原型***。
对象存储***内部采用扁平存储结构,即在对象存储***中,将待存储的数据节点以并列方式存储,数据节点之间不具有上下层级。例如,若需要在对象存储***中存储100个数据节点,则将每个数据节点的内容依次存储至对象存储***的存储空间中。这种扁平的数据存储方式的效率较高,每当有新的数据节点需要存储时,可直接将该数据节点的内容存储至相应的存储空间中。
但是,在对上述对象存储***中存储的数据进行访问时,需要通过遍历存储空间内的所有内容才能查找出被访问的数据对象的内容,导致对象存储***的访问效率低,并且在进行访问时,遍历的查找过程也会增大***的资源开销。
除了上述扁平存储结构,业界也存在将数据节点以上下层级(即父子节点)的关系来管理存储结构,但这种上下层级的管理方式是通过关系数据库记录节点的元数据(描述该数据对象的数据),并在数据对象的元数据中增加指向其上一层级(即父节点)的字段,在进行数据访问时,由于需要查询存储的元数据才能确定数据节点之间的层级关系,导致数据访问的效率仍然不高。
发明内容
本发明实施例提供一种数据访问方法及设备,用以解决现有技术中存在的数据访问效率低的问题。
一种数据访问方法,所述方法包括:
根据接收到的访问路径中包括的节点名,将所述节点名中所表示的根节点的节点标识作为当前标识;
循环执行以下操作,直至当前标识是叶子节点的节点标识或已遍历所有节点名:
根据父节点的节点标识与该父节点下一层级各子节点的节点标识之间的对应关系,确定当前标识对应的下一层级的各子节点的节点标识;
从确定的子节点的节点标识中,查找出访问路径中包含的节点名所表示节点的节点标识,并利用查找出的节点标识更新当前标识;
结束循环操作后,根据节点标识与该节点的元数据之间的对应关系,确定最终得到的当前标识对应的元数据,并返回。
一种数据访问设备,所述设备包括:
接收模块,用于接收包括节点名的访问路径;
根处理模块,用于将所述节点名中所表示的根节点的节点标识作为当前标识;
循环模块,用于循环执行以下操作,直至当前标识是叶子节点的节点标识或已遍历所有节点名:
根据父节点的节点标识与该父节点下一层级各子节点的节点标识之间的对应关系,确定当前标识对应的下一层级的各子节点的节点标识,从确定的子节点的节点标识中,查找出访问路径中包含的节点名所表示节点的节点标识,并利用查找出的节点标识更新当前标识;
元数据确定模块,用于结束循环操作后,根据节点标识与该节点的元数据之间的对应关系,确定最终得到的当前标识对应的元数据;
返回模块,用于返回确定的所述元数据。
本发明有益效果如下:
本发明实施例通过独立存储方式,预先存储节点之间的层级关系以及节点与元数据之间的对应关系,以便于当用户进行访问时,可利用预先存储的层级关系,确定被访问的节点与其上级节点之间的层级关系,进而快速定位出用户实际希望访问的节点,并返回该节点的元数据,使用户根据所述元数据进行访问。由于在本发明提出的数据访问方案中,并没有在元数据中额外增加表示节点之间层级关系的内容,而是独立存储节点之间的层级关系,因此,在进行数据访问时,可根据独立存储的层级关系快速查找出被访问的节点,有效提高数据访问效率。
附图说明
图1为本发明实施例一中数据访问的方法步骤示意图;
图2为节点树状结构图;
图3为本发明实施例三中数据访问的方法步骤示意图;
图4为本发明实施例四中数据访问设备的结构示意图。
具体实施方式
为了实现本发明目的,本发明提出一种在对象存储***中的新的数据访问方案,通过独立存储方式,预先存储对象存储***中节点之间的层级关系以及节点与元数据之间的对应关系,当用户对对象存储***进行访问时,可根据访问路径中的节点名,利用预先存储的层级关系,确定这些节点名所表示的节点之间的层级关系,进而将最低层级节点作为用户实际希望访问的节点,并对该节点的元数据进行访问,在本发明提出的数据访问方案中,并没有在元数据中增加表示节点之间层级关系的内容,而是独立存储节点之间的层级关系,因此,在进行数据访问时,可根据独立存储的层级关系快速查找出被访问的节点,有效提高数据访问效率。
需要说明的是,本发明各实施例中涉及的节点可以有两种类型,一种是数据对象类型,另一种是容器对象类型。
所述数据对象类型的节点的内容是数据信息,如“日志信息”等,外界用户可根据自身的访问权限查看、读取、修改该数据对象类型的节点的内容。
所述容器对象类型的节点的内容是目录信息,用于表示该节点作为父节点或子节点时与其他节点的层级关系,容器对象类型的节点的内容是由对象存储***本地管理,外界用户可根据访问权限查看该容器对象类型的节点的内容,但不得对该内容进行修改。
本发明各实施例中涉及的元数据中携带的内容是对应节点的参数信息,用于说明该节点。
例如:某一节点的元数据结构为:{“a”,DIR,0x755,time、path},其中,“a”表示该节点的节点名为a;DIR表示该节点的类型是容器对象类型;0x755表示该节点所支持的访问权限;time表示该节点在对象存储***的创建时间;path表示该节点的内容在对象存储***中的存储路径。上述元数据结构以及所包含的参数信息是实现本发明实施例方案的一种可行的情况,本发明实施例并不限于其他元数据的结构以及元数据中包含的用于说明节点的参数信息。
本发明各实施例中涉及的节点标识为数据库生成的全局唯一标识,节点名为可使访问用户识别的名称。
下面结合说明书附图对本发明实施例进行详细说明。
实施例一:
如图1所示,为本发明实施例一中数据访问的方法步骤示意图,所述方法包括:
步骤101:接收来自访问用户的访问请求,所述访问请求中携带访问路径,且所述访问路径中包括至少一个节点名。
在本实施例一的方案中,当有访问用户希望对诸如对象存储***等数据库中的内容进行访问时,通过数据库提供的访问接口向数据库发送携带了访问路径的访问请求。
所述访问路径中的节点名包括访问用户实际所希望访问节点的节点名,以及从该节点所在的根节点至该节点路径上所经过的各节点的节点名。访问路径中包括多个节点名时,各节点名可按照层级高低的关系顺序排列,也可以无序排列。
步骤102:从访问路径的节点名中确定标识根节点的节点名,并根据预先建立的节点名与节点标识之间的对应关系,确定根节点的节点标识,并将该节点标识作为当前标识。
所述当前标识可看作是一个标识的变量,可根据需要随时利用新的节点标识更新当前标识。
步骤103:判断所述当前标识是否是叶子节点的节点标识,或当前已对访问路径中所有节点名进行过操作,若上述任一条件满足,则执行步骤107;否则,执行步骤104。
在本步骤的方案中,当前标识是叶子节点的节点标识时,表示当前已无法再进行下层的查找,该叶子节点已是访问用户实际所要访问的节点;当前已对访问路径中所有节点名进行过操作时,不论当前标识是否是叶子节点的节点标识,当前标识对应的节点已是访问用户实际所要访问的节点。在上述任一条件满足时,表示当前已查找到访问用户实际所要访问的节点,可进行后续的访问操作。
步骤104:根据父节点的节点标识与该父节点下一层级各子节点的节点标识之间的对应关系,确定当前标识对应的下一层级的各子节点的节点标识。
若步骤103的所有条件均不满足时,表示访问用户实际所要访问的节点还没有查找到,需要继续查找,因此,将当前标识对应的节点作为父节点,确定该父节点下一层级各子节点的节点标识。
本实施例中的步骤103~步骤106采用循环操作的方式来逐级查找访问用户实际所要访问的节点。
步骤105:从确定的子节点的节点标识中,查找出访问路径中包含的节点名所表示节点的节点标识。
在实际的操作中,一个父节点下可能有多个子节点,通过这多个子节点不一定都能最终查找到访问用户实际所要访问的节点,因此,本步骤中参考访问路径中的节点名,将从步骤104确定的多个子节点中,查找出访问路径中包含的节点名所表示的节点,也就是说,根据本步骤查找出的节点可继续查找到访问用户实际所要访问的节点。
步骤106:利用查找出的节点标识更新当前标识,并跳转至步骤103。
通过步骤102~步骤106的方案,将从根节点起,逐级向下层节点进行查找,每当查找过程指向下一层级的节点时,就将当前标识根据为当前查找到的节点标识,并继续向下一层级进行节点查找。
步骤107:根据节点标识与该节点的元数据之间的对应关系,确定最终得到的当前标识对应的元数据,并向访问用户返回该元数据。
上述步骤103可能在第一次执行时就跳转至步骤107,也可能循环执行过多次后才跳转至步骤107,若在第一次执行时就跳转至步骤107,则本步骤中所述最终得到的当前标识是根节点的节点标识;若在循环执行过多次后才跳转至步骤107,则本步骤中所述最终得到的当前标识是最后一次循环时更新的当前标识。
访问用户接收到返回的元数据后,可根据所述元数据对节点进行访问。
本发明实施例一的方案也是在对象存储***内部采用扁平存储结构,但独立存储的父节点的节点标识与该父节点下一层级各子节点的节点标识之间的第一对应关系、节点标识与该节点的元数据之间的第二对应关系,与现有的对象存储***相比,在查找节点时无需遍历数据库中的所有内容,而是通过上述两个对应关系来查找到访问用户实际所需要访问的节点,可提高访问效率;另外,本发明实施例一的方案与现有的关系数据库中记录的上下层级关系相比,由于本发明实施例一的方案没有在节点的元数据中添加层级关系,而是独立的存储该层级关系,在查找节点时的效率较高。
实施例二:
本发明实施例二是在实施例一的基础上,详细说明如何在诸如对象存储***等数据库中,独立存储父节点的节点标识与该父节点下一层级各子节点的节点标识之间的第一对应关系、节点标识与该节点的元数据之间的第二对应关系的方案。
在初始化数据库,可以使用键-值对(Key-Value)的建库方式,为数据库中存储的内容生成两个数据库文件,分别如下:
1、目录关系文件,其中记录了父节点的节点标识与该父节点下一层级各子节点的节点标识之间的第一对应关系。
所述目录关系文件中记录的第一对应关系表示的是节点之间的层级关系,所述层级关系可具体描述为以下三个Key-Value形式:
第一Key-Value:节点标识与该节点作为父节点时的层级标识(dir-handle)之间的对应关系。
所述层级标识可表示对应节点的下一层级子节点在节点树状结构中的层级数。
第二Key-Value:第一Key-Value中所述父节点下一层级的一个子节点名与所述层级标识共同与该子节点标识的对应关系,和,根节点的节点名与该根节点标识的对应关系。
所述第二Key-Value包含两方面内容,其中:根节点的节点名与该根节点标识的对应关系应用于针对根节点的查找过程;父节点下一层级的一个子节点名与所述层级标识共同与该子节点标识的对应关系应用于对非根节点的查找过程。这两方面内容结合在一起,涵盖了对所有节点的查找过程。
第三Key-Value:节点标识与该节点作为父节点时下一层级的子节点数量的对应关系。
在实际的访问过程中,第三Key-Value并不一定被使用,这是因为,即使在访问过程中不能确定下一层级的子节点数量,也可以针对已确定的子节点进行查找。
以图2所示的节点树状结构图为例,假设根节点的节点名为“a”,a节点作为父节点,其下一层级的子节点名为“b”和“c”;b节点作为父节点,其下一层级的子节点名为“d”;c节点为叶子节点。则如表1所示,为图2所示的节点树状结构存储在目录关系文件中的三个Key-Value列表的结构:
表1
对表1的描述为:在向目录关系文件中记录图2所示的节点树状结构的Key-Value时:
第一步:根据第二Key-Value中根节点的节点名与该根节点标识的对应关系,在表1中记录根节点的节点名(a)与根节点的节点标识(ID1)的对应关系,其中,Key值为a,Value值为ID1。
第二步:根据第一Key-Value中的对应关系,在表1中记录根节点a的节点标识(ID1)与层级标识(2)的对应关系,其中,Key值为ID1+$,Value值为2。
为区分第一Key-Value和第三Key-Value中的Key值,在第一Key-Value中的Key值用ID1+$表示,在第三Key-Value中的Key值用ID1+表示。本实施例也不限于其他方式来区分第一Key-Value和第三Key-Value中的Key值。
第三步:根据第三Key-Value中的对应关系,在表1中记录根节点a的节点标识(ID1)与下一层级的子节点数量(2)的对应关系,其中,Key值为ID1+,Value值为2。
第四步:根据第二Key-Value中父节点下一层级的一个子节点名与所述层级标识共同与该子节点标识的对应关系,在表1中记录一个子节点名(b)与层级标识(2)共同与子节点标识(ID2)的对应关系,其中,Key值为b+2,Value值为ID2。
第五步:根据第二Key-Value中父节点下一层级的一个子节点名与所述层级标识共同与该子节点标识的对应关系,在表1中记录一个子节点名(c)与层级标识(2)共同与子节点标识(ID3)的对应关系,其中,Key值为c+2,Value值为ID3。
第六步:根据第一Key-Value中的对应关系,在表1中记录节点b的节点标识(ID2)与层级标识(3)的对应关系,其中,Key值为ID2+$,Value值为3。
第七步:根据第三Key-Value中的对应关系,在表1中记录节点b的节点标识(ID2)与下一层级的子节点数量(1)的对应关系,其中,Key值为ID2+,Value值为1。
第八步:根据第二Key-Value中父节点下一层级的一个子节点名与所述层级标识共同与该子节点标识的对应关系,在表1中记录一个子节点名(d)与层级标识(3)共同与子节点标识(ID4)的对应关系,其中,Key值为d+3,Value值为ID4。
按照上述八步的描述,将图2所示的节点树状结构中,各节点之间的层级关系以表1所示Key-Value列表的形式表示出,将该表1记录在目录关系文件中,完成对图2所示的节点树状结构的层级关系的存储。
2、元数据文件,其中记录了节点标识与该节点的元数据之间的第二对应关系,所述第二对应关系也可看作是第四Key-Value。
仍以图2所示的节点树状结构为例,假设4个节点的元数据分别为{“a”,DIR,0x755,time_1,path_1}、{“b”,DIR,0x755,time_2,path_2}、{“c”,FILE(数据对象类型),0x644,time_3,path_3}、{“d”,FILE,0x644,time_4,path_4},4个节点的节点标识分别为ID1~ID4,则如表2所示,为图2所示的节点树状结构存储在元数据文件中的Key-Value列表的结构,其中,Key值为节点标识,Value值为该节点的元数据。
Key | Value |
ID1 | {“a”,DIR,0x755,time_1,path_1} |
ID2 | {“b”,DIR,0x755,time_2,path_2} |
ID3 | {“c”,FILE,0x644,time_3,path_3} |
ID4 | {“d”,FILE,0x644,time_4,path_4} |
表2
通过在目录关系文件和元数据文件中分别记录上述表1和表2后,完成了对图2所示的树状节点的预处理,将实施例二的方式推广至数据库中所有的树状结构后,可完成对数据库中所有节点的预处理。
实施例三:
本发明实施例三以图2所示的树状结构为例,来详细说明如何利用表1和表2中记录的内容实现数据访问。
如图3所示,为本发明实施例三中数据访问的步骤示意图,所述方法包括以下步骤:
步骤301:接收访问请求,所述访问请求中访问路径包含的节点名为:a-b-d。
步骤302:读取目录关系文件中的表1,查找Key值为根节点名a的Key-Value,并从中提取出Value值的内容ID1作为当前标识。
步骤303:继续从所述表1中查找Key值为当前标识ID1+$的Key-Value,并从中提取出Value值2作为a节点的dir-handle。
步骤304:继续从所述表1中查找Key值为<dir-handle+a节点下一层级子节点名>的Key-Value,此时,从表1中可以找到两个满足Key值要求的Key-Value,其Value值分别为ID2和ID3。
步骤305:由于访问路径中包含节点名b但不包含节点名c,因此,确定步骤304的结果为ID2。
步骤306:利用所述ID2更新当前标识,继续从所述表1中查找Key值为当前标识ID2+$的Key-Value,并从中提取出Value值3作为b节点的dir-handle。
步骤307:继续从所述表1中查找Key值为<dir-handle+b节点下一层级子节点名>的Key-Value,并从中提取出Value值ID4。
步骤308:利用所述ID4更新当前标识,由于ID4是叶子节点的节点标识,因此,完成节点查找过程。
步骤309:读取元数据文件中的表2,查找Key为ID4的Key-Value,并从中提取出Value值为{“d”,FILE,0x644,time_4,path_4}。
步骤310:访问用户从{“d”,FILE,0x644,time_4,path_4}中提出d节点在对象存储***中的存储路径path_4,并根据path_4对d节点的内容进行访问。
较优地,由于元数据中还记录了节点的访问权限,则访问用户根据path_4获取d节点的内容后,需要在满足访问权限的情况下,对d节点的内容进行操作。
实施例四:
本发明实施例四还提供一种与实施例一至实施例三属于同一发明构思下的数据访问设备的结构示意图,如图4所示,所述设备包括接收模块11、根处理模块12、循环模块13、元数据确定模块14和返回模块15,其中:接收模块11用于接收来自访问用户的包括节点名的访问路径;根处理模块12用于将所述节点名中所表示的根节点的节点标识作为当前标识;循环模块13用于循环执行以下操作,直至当前标识是叶子节点的节点标识或已遍历所有节点名:
根据父节点的节点标识与该父节点下一层级各子节点的节点标识之间的对应关系,确定当前标识对应的下一层级的各子节点的节点标识,从确定的子节点的节点标识中,查找出访问路径中包含的节点名所表示节点的节点标识,并利用查找出的节点标识更新当前标识;
元数据确定模块14用于结束循环操作后,根据节点标识与该节点的元数据之间的对应关系,确定最终得到的当前标识对应的元数据;返回模块15用于向访问用户返回确定的所述元数据。
所述设备还包括第一预处理模块16和第二预处理模块17,其中:第一预处理模块16用于生成目录关系文件,所述目录关系文件中记录了所述父节点的节点标识与该父节点下一层级各子节点的节点标识之间的第一对应关系;第二预处理模块17用于生成元数据文件,所述元数据文件中记录了所述节点标识与该节点的元数据之间的第二对应关系。
所述第一对应关系包括:
第一键-值对和第二键-值对,其中:
所述第一键-值对包括节点标识与该节点作为父节点时的层级标识之间的对应关系;
所述第二键-值对包括第一键-值对中所述父节点下一层级的一个子节点名与所述层级标识共同与该子节点标识的对应关系,和,根节点的节点名与该根节点标识的对应关系。
所述第一对应关系还包括:
第三键-值对,所述第三键-值对包括节点标识与该节点作为父节点时下一层级的子节点数量的对应关系。
所述根处理模块12具体用于确定所述节点名中表示根节点的节点名,根据所述第二键-值对,确定根节点的节点标识并作为当前标识;
所述循环模块13具体用于循环执行以下操作,直至当前标识是叶子节点的节点标识或已遍历所有节点名:
根据所述第一键-值对,确定当前标识对应的层级标识,根据所述第二键-值对,确定层级标识与访问路径中一个节点名共同对应的节点标识,并利用该节点标识更新当前标识。
本实施例中各模块具有实现实施例一至实施例三各步骤的功能,此次不再赘述。
本实施例四中的数据访问设备可应用在数据库(可为对象存储***)中,所述数据库包括以下几个部分:
***存储层,主要为各类存储设备,可分为分布式文件存储***、磁盘/磁阵等存储介质等。
***接口层,可向访问用户提供对数据库中存储的节点内容进行访问的接口,如应用程序编程(API)接口和状态传输(REST)接口等。
数据访问设备,主要保存元数据,并按照实施例四的方式生成目录关系文件、元数据文件,并响应用户的访问请求,确定用户实际所要访问节点的元数据。
***服务层,主要是对***存储层进行封装提供,并使用Key-Value类型数据库,存储数据访问设备生成的目录关系文件、元数据文件。
接口适配层,对***存储层中各类存储设备的接口进行封装,为***服务层提供通用的接口。
通过本发明实施例提供的方法和设备,在扁平结构的对象存储***中,增加表示节点树状结构的Key-Value列表,将同一树状结构中的所有节点都关联起来,并将同一父节点下的子节点排列在一起,在进行数据访问时,可通过对Key-Value列表的遍历,快速定位出访问用户所希望查找节点的元数据,有效提高了定位的效率,保证了数据库响应用户访问的及时性;同时,本发明中通过目录关系文件和元数据文件独立存储节点的层级信息,相较于在元数据中额外存储父子节点关系的方案,减少了对数据库中存储的元数据的修改,便于实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种数据访问方法,其特征在于,所述方法包括:
根据接收到的访问路径中包括的节点名,将所述节点名中所表示的根节点的节点标识作为当前标识;
循环执行以下操作,直至当前标识是叶子节点的节点标识或已遍历所有节点名:
根据父节点的节点标识与该父节点下一层级各子节点的节点标识之间的对应关系,确定当前标识对应的下一层级的各子节点的节点标识;
从确定的子节点的节点标识中,查找出访问路径中包含的节点名所表示节点的节点标识,并利用查找出的节点标识更新当前标识;
结束循环操作后,根据节点标识与该节点的元数据之间的对应关系,确定最终得到的当前标识对应的元数据,并返回。
2.如权利要求1所述的方法,其特征在于,在接收访问路径之前,所述方法还包括:
生成目录关系文件,所述目录关系文件中记录了所述父节点的节点标识与该父节点下一层级各子节点的节点标识之间的第一对应关系,以及,生成元数据文件,所述元数据文件中记录了所述节点标识与该节点的元数据之间的第二对应关系。
3.如权利要求2所述的方法,其特征在于,所述第一对应关系包括:
第一键-值对和第二键-值对,其中:
所述第一键-值对包括节点标识与该节点作为父节点时的层级标识之间的对应关系;
所述第二键-值对包括第一键-值对中所述父节点下一层级的一个子节点名与所述层级标识共同与该子节点标识的对应关系,和,根节点的节点名与该根节点标识的对应关系。
4.如权利要求3所述的方法,其特征在于,所述第一对应关系还包括:
第三键-值对,所述第三键-值对包括节点标识与该节点作为父节点时下一层级的子节点数量的对应关系。
5.如权利要求3或4所述的方法,其特征在于,将所述节点名中所表示的根节点的节点标识作为当前标识,具体包括:
确定所述节点名中表示根节点的节点名,根据所述第二键-值对,确定根节点的节点标识并作为当前标识;
循环执行的操作具体包括:
根据所述第一键-值对,确定当前标识对应的层级标识;
根据所述第二键-值对,确定层级标识与访问路径中一个节点名共同对应的节点标识,并利用该节点标识更新当前标识。
6.一种数据访问设备,其特征在于,所述设备包括:
接收模块,用于接收包括节点名的访问路径;
根处理模块,用于将所述节点名中所表示的根节点的节点标识作为当前标识;
循环模块,用于循环执行以下操作,直至当前标识是叶子节点的节点标识或已遍历所有节点名:
根据父节点的节点标识与该父节点下一层级各子节点的节点标识之间的对应关系,确定当前标识对应的下一层级的各子节点的节点标识,从确定的子节点的节点标识中,查找出访问路径中包含的节点名所表示节点的节点标识,并利用查找出的节点标识更新当前标识;
元数据确定模块,用于结束循环操作后,根据节点标识与该节点的元数据之间的对应关系,确定最终得到的当前标识对应的元数据;
返回模块,用于返回确定的所述元数据。
7.如权利要求6所述的设备,其特征在于,所述设备还包括:
第一预处理模块,用于生成目录关系文件,所述目录关系文件中记录了所述父节点的节点标识与该父节点下一层级各子节点的节点标识之间的第一对应关系;
第二预处理模块,用于生成元数据文件,所述元数据文件中记录了所述节点标识与该节点的元数据之间的第二对应关系。
8.如权利要求7所述的设备,其特征在于,所述第一对应关系包括:
第一键-值对和第二键-值对,其中:
所述第一键-值对包括节点标识与该节点作为父节点时的层级标识之间的对应关系;
所述第二键-值对包括第一键-值对中所述父节点下一层级的一个子节点名与所述层级标识共同与该子节点标识的对应关系,和,根节点的节点名与该根节点标识的对应关系。
9.如权利要求8所述的设备,其特征在于,所述第一对应关系还包括:
第三键-值对,所述第三键-值对包括节点标识与该节点作为父节点时下一层级的子节点数量的对应关系。
10.如权利要求8或9所述的设备,其特征在于,
所述根处理模块,具体用于确定所述节点名中表示根节点的节点名,根据所述第二键-值对,确定根节点的节点标识并作为当前标识;
所述循环模块,具体用于循环执行以下操作,直至当前标识是叶子节点的节点标识或已遍历所有节点名:
根据所述第一键-值对,确定当前标识对应的层级标识,根据所述第二键-值对,确定层级标识与访问路径中一个节点名共同对应的节点标识,并利用该节点标识更新当前标识。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110200807.6A CN102243660B (zh) | 2011-07-18 | 2011-07-18 | 一种数据访问方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110200807.6A CN102243660B (zh) | 2011-07-18 | 2011-07-18 | 一种数据访问方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102243660A true CN102243660A (zh) | 2011-11-16 |
CN102243660B CN102243660B (zh) | 2017-07-07 |
Family
ID=44961715
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110200807.6A Active CN102243660B (zh) | 2011-07-18 | 2011-07-18 | 一种数据访问方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102243660B (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102833331A (zh) * | 2012-08-21 | 2012-12-19 | 北京邦诺存储科技有限公司 | 云存储***及其元数据写入方法、元数据读取方法 |
CN103024053A (zh) * | 2012-12-18 | 2013-04-03 | 华为技术有限公司 | 云存储方法、资源调度***、云存储节点及*** |
CN103064986A (zh) * | 2013-01-30 | 2013-04-24 | 深圳联友科技有限公司 | 结构数据搜索的方法及装置 |
CN103092916A (zh) * | 2012-12-14 | 2013-05-08 | 华为技术有限公司 | 修改数据结构的方法和装置 |
WO2013097115A1 (zh) * | 2011-12-28 | 2013-07-04 | 华为技术有限公司 | 文件目录存储方法、检索方法和设备 |
CN103258041A (zh) * | 2013-05-23 | 2013-08-21 | 广东电网公司电力科学研究院 | 基于通用数据访问接口的tc57视图构建方法和*** |
CN103678465A (zh) * | 2012-09-18 | 2014-03-26 | 国际商业机器公司 | 基于上下文来在数据库中导航的***和方法 |
WO2015196771A1 (zh) * | 2014-06-26 | 2015-12-30 | 中兴通讯股份有限公司 | 一种数据库操作处理方法及装置 |
CN105843809A (zh) * | 2015-01-13 | 2016-08-10 | 腾讯科技(深圳)有限公司 | 数据处理方法和装置 |
CN107766355A (zh) * | 2016-08-17 | 2018-03-06 | 腾讯科技(深圳)有限公司 | 层级数据管理方法、层级数据管理***及即时通信*** |
WO2018232871A1 (zh) * | 2017-06-23 | 2018-12-27 | 深圳市盛路物联通讯技术有限公司 | 一种节点信息管理方法及装置 |
CN109729407A (zh) * | 2018-12-10 | 2019-05-07 | 视联动力信息技术股份有限公司 | 一种目录显示方法及装置 |
CN110569657A (zh) * | 2019-09-10 | 2019-12-13 | 北京字节跳动网络技术有限公司 | 一种数据访问方法、装置、设备及存储介质 |
CN112783443A (zh) * | 2021-01-18 | 2021-05-11 | 北京聚云科技有限公司 | 数据读取方法、装置及电子设备 |
CN112887116A (zh) * | 2019-11-29 | 2021-06-01 | 伊姆西Ip控股有限责任公司 | 管理分布式应用***中的应用节点的方法、设备和产品 |
CN113392068A (zh) * | 2021-06-28 | 2021-09-14 | 上海商汤科技开发有限公司 | 数据处理方法、装置和*** |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100383788C (zh) * | 2005-09-07 | 2008-04-23 | 华为技术有限公司 | 一种对***资源进行管理的实现方法 |
JP4445509B2 (ja) * | 2007-03-20 | 2010-04-07 | 株式会社東芝 | 構造化文書検索システム及びプログラム |
-
2011
- 2011-07-18 CN CN201110200807.6A patent/CN102243660B/zh active Active
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013097115A1 (zh) * | 2011-12-28 | 2013-07-04 | 华为技术有限公司 | 文件目录存储方法、检索方法和设备 |
CN102833331A (zh) * | 2012-08-21 | 2012-12-19 | 北京邦诺存储科技有限公司 | 云存储***及其元数据写入方法、元数据读取方法 |
CN102833331B (zh) * | 2012-08-21 | 2015-06-10 | 北京邦诺存储科技有限公司 | 云存储***及其元数据写入方法、元数据读取方法 |
CN103678465A (zh) * | 2012-09-18 | 2014-03-26 | 国际商业机器公司 | 基于上下文来在数据库中导航的***和方法 |
CN103678465B (zh) * | 2012-09-18 | 2017-03-01 | 国际商业机器公司 | 基于上下文来在数据库中导航的***和方法 |
CN103092916A (zh) * | 2012-12-14 | 2013-05-08 | 华为技术有限公司 | 修改数据结构的方法和装置 |
CN103092916B (zh) * | 2012-12-14 | 2016-11-02 | 华为技术有限公司 | 修改数据结构的方法和装置 |
CN103024053B (zh) * | 2012-12-18 | 2015-11-25 | 华为技术有限公司 | 云存储方法、资源调度***、云存储节点及*** |
CN103024053A (zh) * | 2012-12-18 | 2013-04-03 | 华为技术有限公司 | 云存储方法、资源调度***、云存储节点及*** |
CN103064986A (zh) * | 2013-01-30 | 2013-04-24 | 深圳联友科技有限公司 | 结构数据搜索的方法及装置 |
CN103258041A (zh) * | 2013-05-23 | 2013-08-21 | 广东电网公司电力科学研究院 | 基于通用数据访问接口的tc57视图构建方法和*** |
CN103258041B (zh) * | 2013-05-23 | 2015-07-22 | 广东电网有限责任公司电力科学研究院 | 基于通用数据访问接口的tc57视图构建方法和*** |
WO2015196771A1 (zh) * | 2014-06-26 | 2015-12-30 | 中兴通讯股份有限公司 | 一种数据库操作处理方法及装置 |
CN105279169A (zh) * | 2014-06-26 | 2016-01-27 | 中兴通讯股份有限公司 | 一种数据库操作处理方法及装置 |
CN105843809A (zh) * | 2015-01-13 | 2016-08-10 | 腾讯科技(深圳)有限公司 | 数据处理方法和装置 |
CN105843809B (zh) * | 2015-01-13 | 2020-04-28 | 腾讯科技(深圳)有限公司 | 数据处理方法和装置 |
CN107766355A (zh) * | 2016-08-17 | 2018-03-06 | 腾讯科技(深圳)有限公司 | 层级数据管理方法、层级数据管理***及即时通信*** |
CN107766355B (zh) * | 2016-08-17 | 2021-07-16 | 腾讯科技(深圳)有限公司 | 层级数据管理方法、层级数据管理***及即时通信*** |
WO2018232871A1 (zh) * | 2017-06-23 | 2018-12-27 | 深圳市盛路物联通讯技术有限公司 | 一种节点信息管理方法及装置 |
CN109729407A (zh) * | 2018-12-10 | 2019-05-07 | 视联动力信息技术股份有限公司 | 一种目录显示方法及装置 |
CN110569657A (zh) * | 2019-09-10 | 2019-12-13 | 北京字节跳动网络技术有限公司 | 一种数据访问方法、装置、设备及存储介质 |
CN112887116A (zh) * | 2019-11-29 | 2021-06-01 | 伊姆西Ip控股有限责任公司 | 管理分布式应用***中的应用节点的方法、设备和产品 |
CN112783443A (zh) * | 2021-01-18 | 2021-05-11 | 北京聚云科技有限公司 | 数据读取方法、装置及电子设备 |
CN113392068A (zh) * | 2021-06-28 | 2021-09-14 | 上海商汤科技开发有限公司 | 数据处理方法、装置和*** |
Also Published As
Publication number | Publication date |
---|---|
CN102243660B (zh) | 2017-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102243660A (zh) | 一种数据访问方法及设备 | |
CN107247808B (zh) | 一种分布式NewSQL数据库***及图片数据查询方法 | |
US10496627B2 (en) | Consistent ring namespaces facilitating data storage and organization in network infrastructures | |
US11468103B2 (en) | Relational modeler and renderer for non-relational data | |
US10984020B2 (en) | System and method for supporting large queries in a multidimensional database environment | |
CN101315628B (zh) | 内存数据库***及实现内存数据库的方法和装置 | |
CN106294190B (zh) | 一种存储空间管理方法及装置 | |
CN100468402C (zh) | 一种数据存储及查询方法 | |
CN102937964B (zh) | 基于分布式***的智能数据服务方法 | |
CN103229173A (zh) | 元数据管理方法及*** | |
CN106471501B (zh) | 数据查询的方法、数据对象的存储方法和数据*** | |
CN103577440A (zh) | 一种非关系型数据库中的数据处理方法和装置 | |
CN103106286A (zh) | 元数据的管理方法和装置 | |
CN105989015B (zh) | 一种数据库扩容方法和装置以及访问数据库的方法和装置 | |
US8880553B2 (en) | Redistribute native XML index key shipping | |
CN103246549A (zh) | 一种数据转存的方法及*** | |
CN103942301B (zh) | 一种面向多数据类型访问应用的分布式文件*** | |
US9767107B1 (en) | Parallel file system with metadata distributed across partitioned key-value store | |
US9734171B2 (en) | Intelligent redistribution of data in a database | |
CN110008030A (zh) | 一种元数据访问的方法、***及设备 | |
WO2024021808A1 (zh) | 数据查询请求的处理方法、装置、设备及存储介质 | |
CN111414422B (zh) | 一种数据分布方法、装置、设备和存储介质 | |
CN102724301A (zh) | 云数据库***以及云数据读写处理方法、设备 | |
CN112417225A (zh) | 一种多源异构数据的联合查询方法与*** | |
CN110109866A (zh) | 一种文件***目录的管理方法及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |