基于标识符技术的层次化结构数据的存储、解析方法及系统与流程

文档序号:15385444发布日期:2018-09-08 00:30阅读:354来源:国知局

本发明涉及数据存储技术领域,更具体地,涉及一种基于标识符技术的层次化结构数据的存储、解析方法及系统。



背景技术:

在二维条码、射频识别等自动识别标签的各类应用中,由于标签存储空间有限,因而在有限的标签存储空间中存储尽可能多的结构化数据变得尤其重要。

层次化结构数据是具有树状结构特点的一种结构化数据集合,如物流领域中一个集装箱内可以存放多个运输托盘,其中每个运输托盘上可存放多个运输包装箱,每个运输包装箱中又可能包装一个或者多个单件物品,这种结构特点的运输数据物资明细数据就是一种层次化结构的数据集合,这些层次化结构数据通常需要在集装箱运输标签中进行描述。

目前可对层次化结构数据进行描述的方法有电子数据交换edi(electronicdatainterchange)和可扩展标识语言xml(extensiblemarkuplanguage)等方法,由于这些方法存储额外的附加格式信息所占字节数太多,表达效率很低,适合在网络空间中存储和交换数据,并不适合在存储空间有限的二维条码、射频识别等自动识别标签中来存储层次化结构的数据。

当前在自动识别标签介质中存储数据的常用方法,主要有固定模板结构、tlv结构和标识符结构等三类。固定模板结构如gs1组织提出的globalepc编码以及用户自定义方式等方式,其中epc编码数据格式定义了64位、96位、128位等固定结构模板的数据编码格式,该编码方式不具有扩展性,不能够存储层次化的结构数据。tlv结构是标准iso/iec8825-1-2008提出的一种在智能卡中存储数据的方法,主要是采用“tag-length-value”三元组来描述基础元数据的标签id、数据长度和元数据对应数值,多个三元组直接顺序组合来存储,该方法并没有提供存储层次化结构数据的方法和机制。标识符技术存储方法是一种非常灵活的数据存储方法,它可以动态组合元数据及其数值的存储方式,主流方式分别是iso/iec15418-2009以及中国标准gb/t16986-2009规定的应用标识符和美国ansimh10.8.3规定的数据标识符,标识符方法主要是采用“id-value”结构的二元组来描述基础元数据的标识符id号及其对应的数值,id号可关联上位机信息系统定义的元数据字典中的某个元数据。该方法可通过多个二元组顺序组合来存储多个元数据及其数值,二元组之间采用特定分隔符进行分隔。但目前该方法并没有给出对于层次化结构数据的存储方法,如果需要存储结构化数据,只能够采取将层次化结构数据还原成表格记录数据进行存储,这样会大量重复存储一些相同数据和相关标识符,造成了自动识别标签中数据存储效率的降低。



技术实现要素:

本发明提供一种克服上述问题或者至少部分地解决上述问题的一种基于标识符技术的层次化结构数据的存储、解析方法及系统。

根据本发明的第一个方面,提供了一种基于标识符技术的层次化结构数据的存储方法,包括:

从层次化结构数据的根节点开始,对于每一个层级的每一个节点,采用对应的两个控制字符对当前节点以及当前节点下的所有子节点的属性数据进行打包描述,对每一个节点均采用相同的方法进行递归打包描述,直到所有的叶子节点均打包描述完毕,形成所有节点的存储结构;

对于所述存储结构中的每一个节点本身的属性数据,将所述属性数据采用标识符技术进行存储。

在上述技术方案的基础上,本发明还可以作如下改进。

进一步的,每一个节点包括至少一个属性数据,每一个属性数据包括唯一识别标识符字段和所述标识符字段对应的数值,所述对于所述存储结构中的每一个节点本身的属性数据,将所述属性数据采用标识符技术进行存储具体包括:

采用“标识符+对应数值”二元组格式的顺序表示方法对每一个节点本身的属性数据进行存储;或者,

采用变长字段记录数据表方法对每一个节点本身的属性数据进行存储;或者,

采用定长字段记录数据表方法对每一个节点本身的属性数据进行存储。

进一步的,所述采用“标识符+对应数值”二元组格式的顺序表示方法对每一个节点本身的属性数据进行存储具体包括:

当节点具有多个属性数据时,将与所述多个属性数据一一对应的多个二元组顺序连接,每相邻两个二元组之间采用第一分隔符进行分隔,其中,每一个属性数据均采用二元组格式进行表示。

进一步的,所述采用变长字段记录数据表方法对每一个节点本身的属性数据进行存储具体包括:

定义数据表变长表头,所述数据表变长表头的起始行包括多个标识符字段,每一个节点的每一个属性数据均具有对应的标识符字段,其中,每相邻两个标识符字段之间采用第一分隔符进行分隔,在最后一个标识符字段后依次加上第二分隔符和第一分隔符进行标识,表征所述数据表变长表头定义结束;

在所述数据表变长表头定义后,顺序存储数据表中的多条数据记录,每一条数据记录由多个标识符字段对应数值依次顺序连接构成,其中,每一个所述数值与数据表变长表头中定义的每一个标识符字段一一对应,每相邻两个数值之间采用第一分隔符进行分隔,每相邻两条数据记录之间采用第二分隔符进行分隔。

进一步的,所述采用定长字段记录数据表方法对每一个节点本身的属性数据进行存储具体包括:

定义数据表定长表头,所述数据表定长表头的起始行包括多个标识符字段,每一个节点的每一个属性数据均具有对应的标识符字段,其中,每相邻两个标识符字段之间采用第一分隔符进行分隔,在最后一个标识符字段后依次加上两个第二分隔符进行标识,表征所述数据表定长表头定义结束;

在所述数据表定长表头定义后,顺序存储数据表中的多条数据记录,其中,每一条数据记录直接由多个标识符字段对应数值依次顺序连接构成,其中,每一个所述数值与数据表变长表头中定义的每一个标识符字段一一对应。

根据本发明的第二个方面,提供了一种基于标识符技术的层次化结构数据的存储方法,包括:

逐行取出存储文件中的字符串,对对应的两个控制字符之间的属性数据字符串建构对应的节点,从叶节点到根节点依次进行递归构建,形成层次化数据结构;

对构建出的所述层次化数据结构的每一个节点的属性数据进行解析,最终得到层次化结构数据。

进一步的,每一个节点包括至少一个属性数据,每一个属性数据包括唯一识别标识符和与所述标识符字段对应的数值。

进一步的,当所述层次化结构数据中的每一个节点的属性数据采用二元组格式的顺序表示方法进行存储时,所述对构建出的所述层次化结构的每一个节点的属性数据进行解析具体包括:

对每一个节点的属性数据,以二元组之间的第一分隔符作为标志位进行分割,顺序分割出每一个二元组并进行解析,得到每一个二元组的标识符字段和所述标识符字段对应的数值。

进一步的,当所述层次化结构数据中的每一个节点的属性数据采用变长字段记录数据表方法进行存储或者采用定长字段记录数据表方法进行存储时,所述对构建出的所述层次化结构的每一个节点的属性数据进行解析具体包括:

数据表表头解析步骤,当识读到第一个第二分隔符时,根据所述第二分隔符之后的分隔符类型确定所述存储文件为变长字段记录数据表方法存储或者定长字段记录数据表方法存储,以及以第一个第二分隔符之前的每一个第一分隔符为标志位进行分割,解析出每一个标识符字段;

数据表数据集部分解析步骤,当所述存储文件为变长字段记录数据表方法存储时,对于数据集部分的每一个第二分隔符为标志位解析出每一条数据记录,对于每一条数据记录,以第一分隔符为标志位进行分割,解析出每相邻两个第一分隔符之间的数值,最后一个数值为第一分隔符和第二分隔符之间的字符串解析而来,将每一条数据记录的多个字段数据按照顺序与前述多个标识符字段一一对应;

当所述存储文件为定长字段记录数据表方法存储时,获取到每一个标识符字段的数据长度,则所有标识符字段的数据长度之和rl为每一条数据记录的长度;对于数据集部分,依次进行rl个字节的划分,得到多条数据记录,对于每一条数据记录,根据每一个标识符字段的数据长度,依次解析出每一个标识符字段对应的数值。

根据本发明的第三方面,提供了一种基于标识符技术的层次化结构数据的存储系统,包括:

描述模块,用于从层次化结构数据的根节点开始,对于每一个层级的每一个节点,采用对应的两个控制字符对当前节点以及当前节点以下的所有子节点的属性数据进行打包描述,对每一个节点均采用相同的方法依次进行递归打包描述,直到所有的叶子节点均打包描述完毕,形成所有节点的存储结构;

存储模块,用于对所述存储结构中的每一个节点本身的属性数据,采用标识符技术进行存储。

根据本发明的第四方面,提供了一种基于层次化结构数据的解析系统,包括:

构建模块,用于逐行取出存储文件中的字符串,对对应的两个控制字符之间的字符串建构对应的节点,从叶节点到根节点进行递归构建,形成层次化数据结构;

解析模块,用于对构建出的所述层次化数据结构的每一个节点的属性数据进行解析,最终得到层次化结构数据。

本发明提供的一种层次化结构数据的存储、解析方法及系统,通过扩展现有的标识符表示方法,在自动识别标签中实现层次化结构数据的存储,实现层次化结构数据的灵活、高效存储。

附图说明

图1为本发明一个实施例的基于标识符技术的层次化结构数据的存储方法流程图;

图2为本发明的层次化结构数据的树状结构表示方法图;

图3为本发明一个实施例的采用两个控制字符对层次化结构数据的表示方法图;

图4为本发明一个实施例采用变长字段记录数据表方法对每一个节点的属性数据的存储方法流程图;

图5为本发明一个实施例采用定长字段记录数据表方法对每一个节点的属性数据的存储方法流程图;

图6为箱内服装的层次化结构数据;

图7为本发明一个实施例的基于标识符技术的层次化结构数据的解析方法流程图;

图8为本发明一个实施例的对每一个节点的属性数据的解析方法流程图;

图9为本发明一个实施例的基于标识符技术的层次结构化数据的存储系统连接框图;

图10为图9中存储模块的内部连接框图;

图11为本发明一个实施例的基于标识符技术的层次化结构数据的解析系统连接框图;

图12为图11中解析模块的内部连接框图;

图13为本发明一个实施例的服务器实体结构示意图。

具体实施方式

下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。

参见图1,提供了本发明一个实施例的基于标识符技术的层次化结构数据的存储方法,能够灵活、有效地对层次化结构数据进行存储,该方法包括:从层次化结构数据的根节点开始,对于每一个层级的每一个节点,采用对应的两个控制字符对当前节点以及当前节点下的所有子节点的属性数据进行打包描述,对每一个节点均采用相同的方法进行递归打包描述,直到所有的叶子节点均打包描述完毕,形成所有节点的存储结构;对于所述存储结构中的每一个节点本身的属性数据,将所述属性数据采用标识符技术进行存储。

针对层次化结构数据,通常用树状结构表示,比如,存在一套有关服装仓储物流行业的元数据字典,抽取该元数据字典中部分元数据的唯一标识符,将每一个元数据的唯一识别符进行缩短编码,每一个缩短码与每一个元数据一一对应,形成映射关系。该缩短码被称为元数据的标识符,用这些标识符来表示箱内服装数据在自动识别标签中存储。

对于层次化结构数据,如图2所示,root为根节点,节点a和节点d为根节点root的子节点,节点b和节点c为节点a的子节点。在本实施例中,从根节点开始,采用两个控制字符首尾成对出现对每一个节点以及每一个节点下的所有子节点的属性数据进行打包描述,采用递归描述的方式,直到所有的叶子节点描述完毕。本实施例中引入两个ascii控制字符stx和etx对每一个节点以及该节点的所有子节点的属性数据进行打包描述,其中,控制字符stx和etx的ascii值为十六进制ox02和ox03,均为1字节,总是成对出现来控制标识符元组数据之间的层次化结构关系。

根节点root下的属性数值采用顺序存储结构直接表示,而根节点root下面孩子节点a这一支的所有数据(包括节点a所有的孩子数据),在首尾分别采用“stx”和“etx”进行打包成pa,“stx”表示包pa开始,而“etx”表示包pa结束;类似的进行嵌套,节点a的孩子节点b这一支的所有数据在包pa内部相应位置在首尾分别采用“stx”和“etx”进行打包pb;类似的,可以采用“stx”和“etx”把节点a的孩子节点c下的标识符数据都进行打包成pc。类似的,根节点root的孩子节点d也可采用“stx”和“etx”描述出包pd,如图3所示。如果还有其它孩子节点,可以在对应的层次上添加“stx”和“etx”进行打包,这样就将整个层次化结构数据进行了层次化的描述。而对于每一个节点本身的属性数据,采用标识符技术进行表示,最终形成存储文件。

本实施例通过扩展现有的标识符表示方法,在自动识别标签中实现层次化结构数据的存储,实现层次化结构数据的灵活、高效存储。

在上述实施例的基础上,本发明的一个实施例中,所述对于每一个节点本身的属性数据,采用标识符技术进行表示具体包括:采用基于标识符的顺序表示方法对每一个节点本身的属性数据进行表示;或者,采用变长字段记录数据表方法对每一个节点本身的属性数据进行表示;或者,采用定长字段记录数据表方法对每一个节点本身的属性数据进行表示。

对于采用对应的两个控制字符来对每一个节点以及节点下的所有子节点的属性数据进行打包描述后,其中,每一个节点至少包括一个属性数据,每一个属性数据包括标识符字段和该标识符字段对应的数值。对于每一个节点(不包括子节点)本身的属性数据,可以采用三种方法进行表示,分别为基于标识符的顺序表示方法、变长字段记录数据表方法以及定长字段记录数据表方法。

其中,每一个属性数据可以采用二元组格式或者数据表格式进行表示,每一个二元组由属性数据的标识符字段和该标识符字段对应的数值组成。即对于每个节点本身(不包括孩子节点)属性数据的描述,可对节点每一个属性原数据及其对应数值采用标识符技术进行描述,即采用二元组“id-value”,其中id是元数据标识符的缩短码,value是元数据对应的数值。

上述的三种方法是针对不同的应用场景,当原始数据不是数据表结构时,通常采用基于标识符的顺序表示方法;而对于数据表结构的数据时,当每一个节点的每一个属性数据的标识符字段的数据长度不同时,则采用变长字段记录数据表方法,相反的,当每一个节点的每一个属性数据的标识符字段的数据长度都是相同的,则采用定长字段记录数据表方法,提供的三种存储方法基本上能够适应很多应用场合。

在上述各实施例的基础上,本发明的一个实施例中,所述采用二元组格式的顺序表示方法对每一个节点本身的属性数据进行存储具体包括:当节点具有多个属性数据时,将与所述多个属性数据一一对应的多个二元组顺序连接,每相邻两个二元组之间采用第一分隔符进行分隔,其中,每一个属性数据均采用二元组格式进行表示。

当采用基于二元组格式的顺序表示方法对每一个节点的属性数据进行存储时,由于每一个节点的每一个属性数据采用二元组描述,每一个所述二元组由标识符字段和该标识符字段对应的数值组成,因此,当一个节点具有多个属性数据时,将表示每一个属性数据的二元组顺序连接,每相邻两个二元组之间采用第一分隔符进行分隔,在本实施例中,第一分隔符采用控制字符中的单元分隔符gs,其ascii值为十六进制ox1d,占用1字节。

在上述各实施例的基础上,本发明的另一个实施例中,所述采用变长字段记录数据表方法对每一个节点本身的属性数据进行存储具体包括:定义数据表变长表头,所述数据表变长表头的起始行包括多个标识符字段,每一个节点的每一个属性数据均具有对应的标识符字段,其中,每相邻两个标识符字段之间采用第一分隔符进行分隔,在最后一个标识符字段后依次加上第二分隔符和第一分隔符进行标识,表征所述数据表变长表头定义结束;在所述数据表变长表头定义后,顺序存储数据表中的多条数据记录,每一条数据记录由多个数值依次顺序连接构成,其中,每一个所述数值与数据表变长表头中定义的每一个标识符字段一一对应,每相邻两个数值之间采用第一分隔符进行分隔,每相邻两条数据记录之间采用第二分隔符进行分隔。

参见图4,如果节点本身属性数据或者其下一级节点属性数据的描述方式可采用变长字段记录数据表存储方式表示,即采用“数据表变长表头定义+多行数据记录构造”。

其中,变长字段的数据表变长表头定义:在起始行定义数据表的标识符字段,所述数据表表头中各个字段分别选用对应元数据的标识符来表示,称为标识符字段,在两个标识符字段之间采用单元分隔符gs进行分隔,在最后一个标识符字段后先加行分隔符rs再添加单元分隔符gs进行标识,表示变长字段数据表表头字段定义结束,其中,在本次实施例中,第一分隔符采用控制字符中的单元分隔符gs,第二分隔符采用控制字符中的行分隔符rs。

在数据集部分,多行数据记录构造:在变长字段的数据表表头定义结束之后顺序存储数据表的多条记录;每条记录由数据表表头定义的每个标识符字段对应的数值依次连接构成,并在两个标识符字段对应的数值之间采用单元分隔符gs进行分隔;两条记录之间采用行分隔符rs进行分隔。

在上述各个实施例的基础上,本发明的一个实施例中,所述采用定长字段记录数据表方法对每一个节点本身的属性数据进行存储具体包括:定义数据表定长表头,所述数据表定长表头的起始行包括多个标识符字段,每一个节点的每一个属性数据均具有对应的标识符字段,其中,每相邻两个标识符字段之间采用第一分隔符进行分隔,在最后一个标识符字段后依次加上两个第二分隔符进行标识,表征所述数据表定长表头定义结束;在所述数据表定长表头定义后,顺序存储数据表中的多条数据记录,其中,每一条数据记录直接由多个数值依次顺序连接构成,其中,每一个所述数值与数据表变长表头中定义的每一个标识符字段一一对应。

参见图5,如果节点本身属性数据或者其下一级节点属性数据是定长字段记录数据表,则该节点属性数据的描述方式可采用定长字段记录数据表存储方式表示,即采用“数据表定长表头定义+多行数据记录构造”。

其中,定长字段的数据表定长表头定义:数据表表头在起始行定义数据表标识符字段,所述数据表表头中各个字段分别选用对应元数据的标识符来表示,称为标识符字段,在两个标识符字段之间采用单元分隔符gs进行分隔,在最后一个标识符字段后直接采用两个行分隔符rs进行标识,表示定长字段数据表表头字段定义结束。

在数据集部分,多行数据记录构造:在定长数据表表头定义结束之后顺序存储数据表的多条记录,由于定长数据表中的每一个标识符字段的数据长度是相同的,因此每条记录由数据表表头定义的每个字段对应的数值直接依次连接构成即可,每条记录之间无需分隔符进行分隔。

为了深入了解本发明提供的一种层次化结构数据的存储方法,下面以一个具体的例子来进行说明。

假设有一箱服装,箱内存放2014年10月5日生产的“14款罗蒙男装西服”,具体件数为:型号为165/84有3件,型号为165/88有2件,型号为165/92有1件;箱内同时存放2014年11月5日生产的“14款女式紧身连衣裙”,具体件数为:型号为165/84有5件,型号为165/92有4件。综合箱内所有服装的数据情况如表1所示,该表1中重复数据的字段比较多,是一种层次化结构的数据。在前面所述的标识符系统中,假设表示服装类型、生产日期、服装型号和件数的标识符id分别为四字节的a001、a010、a006和a051,这些标识符id的值域可能是定长,也可能是变长。需要说明的是,表1中仅示出了标识符字段为定长的部分数据,没有示出标识符字段变长的情况,标识符字段变长的情况是存在的。采用该标识符字段对这些层次化结构数据构造成树状层次图如图6所示。

针对层次化结构数据,基于标识符二元组顺序直接存储数据的基础上,给出了存储方法的五个实施例。实施例1给出了通用层次化结构数据存储方法;实施例2、3给出了通用层次化结构数据存储方法+变长数据表存储方案;实施例4、5出了通用层次化结构数据存储方法+定长数据表存储方案。

在采用层次化结构数据存储方法前先用传统标识符方法进行表示,即采用常规标识符二元组顺序存储方法对上述表1的箱内服装信息进行描述。下面是采用标识符二元组顺序存储方式表示的表1中箱内服装数据,这是一种按照顺序逐条表示数据表1中各个标识符字段对应数值的二元组。由于每个标识符id号占用4个字节,分隔符gs占用1个字节,该方法共占用存储空间为259字节。

a00114款罗蒙男装西服gsa01020141005gsa006165/84gsa0513gs//该行所用字节51字节;

a00114款罗蒙男装西服gsa01020141005gsa006165/88gsa0512gs//该行所用字节51字节;

a00114款罗蒙男装西服gsa01020141005gsa006165/92gsa0511gs//该行所用字节51字节;

a00114款女式紧身连衣裙gsa01020141105gsa006165/84gsa0515gs//该行所用字节53字节;

a00114款女式紧身连衣裙gsa01020141105gsa006165/92gsa0514gs//该行所用字节53字节。

在这种表示方法中,服装型号“14款罗蒙男装西服”和生产日期“20141005”以及它们对应的标识符id出现了3次,服装型号“14款女式紧身连衣裙”和生产日期“20141105”以及它们对应的标识符id出现了2次,是属于重复存储信息,可以进行精简。针对这个问题,提出了实施例1的通用层次化结构数据存储方法,来精简这些重复信息。

实施例1,通用层次化结构数据存储方法,该方法主要是采用控制字符stx和etx作为首尾分隔符对节点及其子节点的所有数据进行打包,对本级节点属性数据的描述主要采用顺序存储方式表示,即多个“标识符id+对应数值”二元组顺序连接组合,二元组之间采用单元分隔符gs进行分隔。下面是采用通用层次化结构数据存储方法表示的表1中箱内服装数据,是按照基于深度搜索方式表示图2树状结构数据中各个节点的属性数据,表达方式如下所示,其中,控制字符stx和etx各占1个字节,该存储方法占用存储空间为181字节。

该存储方法较前面常规顺序存储方法而言,该方法主要是减少了两次重复的节点属性字符串“a00114款罗蒙男装西服gsa01020141005gs”和一次重复的节点属性字符串“a00114款女式紧身连衣裙gsa01020141105gs”。但是,对节点“a00114款罗蒙男装西服gsa01020141005gs”下面的数据,实际上是一个记录数为3的表结构数据,里面重复了多个格式信息,如标识符id数据、二元组之间的分隔符数据以及层次化结构描述信息stx和etx信息;同理节点“a00114款女式紧身连衣裙gsa01020141105gs”下的数据,实际上是一个记录数为2的表结构数据,里面也重复了相关格式信息,如标识符id数据、二元组之间的分隔符数据以及层次化结构描述信息stx和etx信息等。

为了精简实施例1中格式信息的重复问题,提出了实施例2、3和实施例4、5,这4个实施例是对实施例1的进一步改进。其中,实施例2、3是针对节点的子节点属性数据为变长字段记录的数据表;实施例4、5是针对节点的子节点属性数据为等长字段记录的数据表。

实施例2,通用层次化结构数据存储方法+变长字段记录数据表,如果数据表中所有字段都是变长数值,即标识符字段a001、a010、a006和a051对应值域都是变长的,则可以省略字段相应的标识符。

该实施例主要也是采用控制字符stx和etx作为首尾分隔符对节点及其子节点的所有数据进行打包。如果本级节点属性数据或者其下一级节点的属性数据如果是变长字段记录数据表,则该节点属性数据的描述方式可采用变长字段记录数据表存储方式表示,即采用“数据表变长表头定义+多行数据记录构造”。

数据表变长表头定义:在起始行定义数据表标识符字段,所述数据表表头中各个字段分别选用对应元数据的标识符来表示,在两标识符字段之间采用单元分隔符gs进行分隔,在最后一个标识符字段后先加行分隔符rs再添加单元分隔符gs进行标识,表示变长字段数据表表头字段定义结束。

多行数据记录构造:在数据表表头定义结束之后顺序存储数据表的多条记录;每条记录由数据表表头定义的每个字段对应的数值依次连接构成,并在两个字段对应的数值之间采用单元分隔符gs进行分隔;两条记录之间采用行分隔符rs进行分隔。

下面是采用“通用层次化结构数据存储方法+变长字段记录数据表”存储方法来表示表1中所示用例的箱内服装数据,是基于深度方式表示图2中树状数据中各个叶子节点的属性数据。相比实施例1而言,该方法主要是减少了多个叶子节点中重复的服装型号和数量标识符a006及a051。该方法所占用143字节。

实施例3,进一步精简定长字段数据表非叶子节点重复的标识符数据,实施例2减少了树状结构数据中各个叶子节点的属性数据的重复标识符,而对非叶子节点中重复的标识符id并没有减少,可以采用实施例2中同样的方法,继续对非叶子节点中重复的标识符进行精简。实施例3主要是减少了同类标识符元组“a00114款罗蒙男装西服gsa01020141005gs”和标识符元组“a00114款女式紧身连衣裙gsa01020141105gs”中重复的标识符a001及a010字符串。如下所示,精简后层次化结构数据所占用存储空间为138字节。

实施例4,通用层次化结构数据存储方法+定长字段记录数据表,如果数据表中所有字段都是定长数值,即标识符a001、a010、a006和a051对应值域都是定长的,则不仅可以省略字段相应的标识符,还可以省略字段间的分隔符及不同记录之间的分隔符。

该实施例也是采用控制字符stx和etx作为首尾分隔符对节点及其子节点的所有数据进行打包。如果本级节点属性数据或者其下一级节点的属性数据如果是定长字段记录数据表,则该节点属性数据的描述方式可采用定长字段记录数据表存储方式表示,即采用“数据表定长表头定义+多行数据记录构造”。

数据表定长表头定义:数据表表头在起始行定义数据表标识符字段,所述数据表表头中各个字段分别选用对应元数据的标识符来表示,在两标识符字段之间采用单元分隔符gs进行分隔,在最后一个标识符字段后直接采用两个行分隔符rs进行标识,表示定长字段数据表表头字段定义结束。

多行数据记录构造:在数据表表头定义结束之后顺序存储数据表的多条记录,每条记录由数据表表头定义的每个字段对应的数值直接依次连接构成,每条记录之间无需分隔符进行分隔。

下面是采用“通用层次化结构数据存储方法+定长字段记录数据表”存储方法来表示表1中所示用例的箱内服装数据,是基于深度方式表示图1中树状数据中各个叶子节点的属性数据。相比实施例1而言,该方法一是减少了多个叶子节点中重复的“服装型号”和“数量”的定长标识符a006及a051;二是减少了叶子节点中“服装型号”和“数量”数值之间的分隔符。如下所示,精简后层次化结构数据所占用存储空间为133字节。

实施例5,进一步精简定长字段数据表非叶子节点重复的标识符数据,实施例4中减少了树状数据中各个叶子节点属性数据的重复标识符id以及数值之间的分隔符,而对非叶子节点中重复的标识符id以及数值之间的分隔符并没有减少,可以采用实施例4中同样的方法,继续对非叶子节点中重复的标识符和相关分隔符进行精简。实施例5主要是减少了同类标识符元组“a00114款罗蒙男装西服gsa01020141005gs”和标识符元组“a00114款女式紧身连衣裙gsa01020141105gs”中重复的标识符a001及a010字符串及分隔符。如下所示,精简后层次化结构数据所占用存储空间为128字节。

参见图7,提供了本发明一个实施例的基于标识符技术的层次化结构数据的解析方法,为对采用上述各个实施例的对层次化结构数据存储方法存储的层次化结构数据进行解析的方法,包括:逐行取出存储文件中的字符串,对对应的两个控制字符之间的字符串建构对应的节点,从叶节点到根节点进行递归构建,形成层次化数据结构;对构建出的所述层次化数据结构的每一个节点的属性数据进行解析,最终得到层次化结构数据。

其中,控制字符“stx”和“etx”应用的方式类似c语言中“{”和“}”的使用方法,所以可采用堆栈方式解析上述存储文件。逐行取出构建的层次化结构数据集合,即存储文件中的字符串,当遇到控制字符“stx”时,逐行压入堆栈;当遇到控制字符“etx”时,弹出堆栈中的控制字符“stx”,并构建相关节点(含“stx”和“etx”之间的标识符数据),直到数据文件中所有字符串都被解析完成。整个构建过程是从叶节点到根节点进行构建,从而解析该数据结构数据包。

在上述各实施例的基础上,本发明的另一个实施例中,每一个节点包括至少一个属性数据,每一个属性数据包括标识符字段和与标识符字段对应的数值,当所述层次化结构数据中的每一个节点的属性数据采用二元组格式的顺序表示方法进行存储时,所述对构建出的所述层次化结构的每一个节点的属性数据进行解析具体包括:对每一个节点的属性数据,以二元组之间的第一分隔符作为标志位进行分割,顺序分割出每一个二元组并进行解析,得到每一个二元组的标识符字段和所述标识符字段对应的数值。

参见图8,在上述各实施例的基础上,本发明的一个实施例中,当所述层次化结构数据中的每一个节点的属性数据采用变长字段记录数据表方法进行存储或者采用定长字段记录数据表方法进行存储时,所述对构建出的所述层次化结构的每一个节点的属性数据进行解析具体包括:当识读到第一个第二分隔符时,根据所述第二分隔符之后的分隔符类型确定所述存储文件为变长字段记录数据表方法存储或者定长字段记录数据表方法存储,以及以第一个第二分隔符之前的每一个第一分隔符为标志位进行分割,解析出每一个标识符字段;当所述存储文件为变长字段记录数据表方法表示时,对于数据集部分的每一个第二分隔符为标志位解析出每一条数据记录,对于每一条数据记录,以第一分隔符为标志位进行分割,解析出每相邻两个第一分隔符之间的数值,最后一个数值为第一分隔符和第二分隔符之间的字符串解析而来,将每一个数据记录的多个数据按照顺序与多个标识符字段一一对应;当所述存储文件为定长字段记录数据表方法存储时,获取到每一个标识符字段的数据长度,则所有标识符字段的数据长度之和rl为每一条数据记录的长度;对于数据集部分,依次进行rl个字节的划分,得到多条数据记录,对于每一条数据记录,根据每一个标识符字段的数据长度,依次解析出每一个标识符字段对应的数值。

对于存储文件,首先进行数据表表头解析。其中,本实施例中第一分隔符采用单元分隔符gs,第二分隔符采用行分隔符rs。解析的过程为,先根据分隔符stx后读第一个标识符字段,若标识符字段后不是对应的数值而是单元分隔符gs,则可判断此处为数据表表头结构定义而不是顺序存储结构。依次识读余下的所有表头标识符字段,直到识读到第一个行分隔符rs时,数据表头的标识符字段定义结束。再识读行分隔符rs后一个字节,如果为单元分隔符gs,表示数据表是变长标识符字段;如果为行分隔符rs,则数据表为等长标识符字段。

对于变长标识符字段的存储文件,识读数据集部分的第一字节,判断是否为控制字符etx,如果是则表示所有数据记录结束,退出。否则,继续往后取数据,直到遇到下一个单元分隔符gs时,取出两个gs之间的数据,这个数据是第一个标识符字段在第一条数据记录中所对应的数值,其中,当一条记录只有一个数值时,则是取出gs和rs之间的数据,即为第一个标识符字段在第一条数据记录的数值;继续往后识读,再遇到gs时,又取出两个gs之间的数值,这个数值是第二个标识符字段在第一条数据记录中所对应的数值;以此类推,当从gs往后识读遇到rs时,表示第一行的数据记录已经结束,取出gs和rs之间的数值,这个数值是最后一个标识符字段在第一条数据记录中所对应的数值。如果上述两个分隔符之间没有数值,表示标识符字段在这条记录中没有赋值。

采用同样的方法分别识读每一个节点的每一条数据记录,以及每一个数据记录中每一个标识符字段对应的数值,直到当读取到数据表结束的控制字符etx时,表示数据表中所有数据记录均已经读完,退出数据表记录的识读。

对于定长标识符字段的存储文件,根据标识符系统中标识符对应的元数据描述,得到数据表中每一个标识符字段的含义、每一个标识符字段的数据类型以及每一个标识符字段的数据长度。

根据检索出的每一个标识符字段的数据长度,由于每一个标识符字段的数据长度是定长的,计算每一个标识符字段的数据长度之和rl即为每条记录的数据长度。然后取出rsrs后1字节,判断是否为分隔符etx,如果是则表示所有数据记录结束,退出。否则,接着取出rsrs后rl个字节,本步骤读取的rl长度字节是数据表的第一行数据记录。

按照计算出的每一条数据记录的数据长度从数据集中划分出每一条数据记录,然后根据每一个标识符字段的数据长度,得到各个标识符字段所对应的数值,从而解析出每一条数据记录的每一个标识符字段对应的数值。

参见图9,提供了本发明一个实施例的基于标识符技术的层次化结构数据的存储系统,包括描述模块11和表示模块12。

描述模块11,用于从层次化结构数据的根节点开始,对于每一个层级的每一个节点,采用对应的两个控制字符对当前节点以及当前节点以下的所有子节点的属性数据进行打包描述,对每一个节点均采用相同的方法依次进行递归打包描述,直到所有的叶子节点均打包描述完毕,形成所有节点的存储结构。

存储模块12,用于对所述存储结构中的每一个节点本身的属性数据,将所述属性数据中的多个字段数据按照对应关系进行存储。

参见图10,其中,存储模块12包括第一存储单元121、第二存储单元122和第三存储单元123。

其中,层次化结构数据的每一个节点包括至少一个属性数据,每一个属性数据包括标识符字段和所述标识符字段对应的数值,所述对于所述存储结构中的每一个节点本身的属性数据。

第一存储单元121,用于采用二元组格式的顺序表示方法对每一个节点本身的属性数据进行存储;第二存储单元122,用于采用变长字段记录数据表方法对每一个节点本身的属性数据进行存储;第三存储单元123,用于采用定长字段记录数据表方法对每一个节点本身的属性数据进行存储。

参见图11,提供了本发明一个实施例的基于标识符技术的层次化结构数据解析系统,包括构建模块21和解析模块22。

构建模块21,用于逐行取出存储文件中的字符串,对对应的两个控制字符之间的字符串建构对应的节点,从叶节点到根节点进行递归构建,形成层次化数据结构。

解析模块22,用于对构建出的所述层次化数据结构的每一个节点的属性数据进行解析,最终得到层次化结构数据。

参见图12,其中,解析模块22包括第一解析单元221和第二解析单元222。

其中,每一个节点包括至少一个属性数据,每一个属性数据包括标识符字段和与所述标识符字段对应的数值。

当所述第一存储单元121,用于采用二元组格式的顺序表示方法对每一个节点本身的属性数据进行存储;相应的,第一解析单元221,用于对每一个节点的属性数据,以二元组之间的第一分隔符作为标志位进行分割,顺序分割出每一个二元组并进行解析,得到每一个二元组的标识符字段和所述标识符字段对应的数值。

当所述第二存储单元122,用于采用变长字段记录数据表方法对每一个节点本身的属性数据进行存储;或者第三存储单元123,用于采用定长字段记录数据表方法对每一个节点本身的属性数据进行存储时,相应的,第二解析单元222,用于当识读到第一个第二分隔符时,根据所述第二分隔符之后的分隔符类型确定所述存储文件为变长字段记录数据表方法存储或者定长字段记录数据表方法存储,以及以第一个第二分隔符之前的每一个第一分隔符为标志位进行分割,解析出每一个标识符字段;还用于当所述存储文件为变长字段记录数据表方法表示时,对于数据集部分的每一个第二分隔符为标志位解析出每一条数据记录,对于每一条数据记录,以第一分隔符为标志位进行分割,解析出每相邻两个第一分隔符之间的数值,最后一个数值为第一分隔符和第二分隔符之间的字符串解析而来,将每一个数据记录的多个数据按照顺序与多个标识符字段一一对应;以及还用于当所述存储文件为定长字段记录数据表方法存储时,获取到每一个标识符字段的数据长度,则所有标识符字段的数据长度之和rl为每一条数据记录的长度;对于数据集部分,依次进行rl个字节的划分,得到多条数据记录,对于每一条数据记录,根据每一个标识符字段的数据长度,依次解析出每一个标识符字段对应的数值。

参见图13,提供了本发明一个实施例的服务器,包括:处理器(processor)1301、存储器(memory)1302和总线1303;其中,所述处理器1301和存储器1302通过所述总线1303完成相互间的通信。

所述处理器1301用于调用所述存储器1302中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:从层次化结构数据的根节点开始,对于每一个层级的每一个节点,采用对应的两个控制字符对当前节点以及当前节点下的所有子节点的属性数据进行打包描述,对每一个节点均采用相同的方法进行递归打包描述,直到所有的叶子节点均打包描述完毕,形成所有节点的存储结构;对于所述存储结构中的每一个节点本身的属性数据,将所述属性数据中的多个字段数据按照对应关系进行存储。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分方法。

本发明提供的一种基于标识符技术的层次化结构数据的存储、解析方法及系统,针对层次化结构数据,采用一对控制字符对每一个节点以及每一个节点的所有子节点的属性数据进行打包描述,而对于每一个节点本身的属性数据,针对不同的数据表情况,采用不同的方式进行存储,能够适应不同的应用场合,本发明通过扩展现有的标识符存储方法无法存储大量的额外的附加格式信息,以及存储大量重复的一些相同数据和相关标识符,在自动识别标签中实现层次化结构数据的存储,实现层次化结构数据的灵活、高效存储。

最后,本申请的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1