CN103577483B - 数据存储方法和系统以及数据访问的方法和系统 - Google Patents
数据存储方法和系统以及数据访问的方法和系统 Download PDFInfo
- Publication number
- CN103577483B CN103577483B CN201210278885.2A CN201210278885A CN103577483B CN 103577483 B CN103577483 B CN 103577483B CN 201210278885 A CN201210278885 A CN 201210278885A CN 103577483 B CN103577483 B CN 103577483B
- Authority
- CN
- China
- Prior art keywords
- attribute
- identifier
- extended attribute
- sequence number
- extended
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
-
- 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/21—Design, administration or maintenance of databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种数据存储方法,获取标识符和对应的序列号,并将获取的标识符和对应的序列号存储于预设的基本信息表中。获取标识符的扩展属性,将标识符对应的序列号存储在预设的扩展属性表的序列号字段中,将扩展属性对应存储在扩展属性表中的属性内容字段中。当为标识符添加新增扩展属性时,可将新增扩展属性存储于扩展属性表的属性内容字段中,并将标识符的序列号对应存储于扩展属性表的序列号字段即可。由于扩展属性表和基本信息表的结构不变即调用关系不变,从而原业务代码的结构不用更改,进而针对新的扩展属性的业务代码可独立开发,并将每个扩展属性对应的功能模块进行封装即可。因此可有效的降低业务代码的耦合度。此外,本发明还提供一种数据存储系统、数据访问方法及系统。
Description
技术领域
本发明涉及计算机技术,特别是涉及一种数据存储方法和系统以及数据访问的方法和系统。
背景技术
计算机应用程序一般包括业务代码和用户数据。用户数据中包含用户标识和多个扩展属性,业务代码通过调用不同的扩展属性从而实现不同的功能。但是,一个应用程序在设计之初,不可能考虑的面面俱到,或者随着技术的发展,用户对应用程序会产生新的需求。因此,应用程序在上线之后,一般都需要进行升级和维护。在用户数据中添加新的扩展属性以支持新的需求。
以用户信息表为例,只有用户标识和用户姓名两个字段,后来需增加新的需求:保存用户上传到服务器的相片和附件文档的路径,并且可以通过用户标识获取到上述信息。因此,需要在用户信息表中添加“照片路径”和“文档路径”两个扩展属性。传统的添加扩展属性的方法如下:第一种,给用户信息表新增两个字段用来保存相片和附件文档的路径信息;第二种,新增一个从表(用户信息表为主表),用来保存新增两个字段的信息,主从两个表之间通过用户标识进行关联。
然而,第一种方法要求每次升级都要相应修改用户信息表的结构,从而与用户信息表有关的业务代码都要修改,如果应用程序已经上线,那么每次新增需求都要更改表结构,对底层操作数据库的业务代码会频繁修改,使得每次系统升级的风险都相对较高。
第二种方法对与用户信息表相关的业务代码都不用再修改,但是,当后续还有新的需求时,需要不断的修改从表的表结构,并且需要修改从表有关的业务代码,同样对底层操作数据库的业务代码会频繁修改。当有多个新需求被同时提出,且有若干个之前的需求需要废弃时,每个新的需求都要扩展字段来保存对应的扩展属性,而之前的需求分配的多个字段被废弃,从而需要对原业务代码进行修改,使其能调用新的扩展属性并停止调用废弃的扩展属性。由于上述改动涉及到新代码的增加和原代码的增删查改,进而使业务代码的耦合度也加深了。
发明内容
基于此,有必要针对上述升级过程中造成业务代码耦合度加深的问题,提供一种在升级过程中可有效避免增加业务代码耦合度的数据存储方法。
一种数据存储方法,包括以下步骤:
获取标识符和对应的序列号,将所述标识符存储在预设的基本信息表的标识符字段中,将所述序列号对应存储在所述基本信息表中的与所述标识符字段对应的序列号字段中;
获取所述标识符的扩展属性,将所述标识符对应的序列号存储在预设的扩展属性表的序列号字段中,将所述扩展属性对应存储在所述扩展属性表中的与所述序列号字段对应的属性内容字段中。
此外,还有必要提供一种在升级过程中可有效避免增加业务代码耦合度的数据存储系统。
一种数据存储系统,包括:
基本信息存储模块,用于获取标识符和对应的序列号,将所述标识符存储在预设的基本信息表的标识符字段中,将所述序列号对应存储在所述基本信息表中的与所述标识符字段对应的序列号字段中;
扩展属性存储模块,用于获取所述标识符的扩展属性,将所述标识符对应的序列号存储在预设的扩展属性表的序列号字段中,将所述扩展属性对应存储在所述扩展属性表中的与所述序列号字段对应的属性内容字段中。
此外,还提供一种数据访问方法,包括以下步骤:
获取数据访问请求,所述数据访问请求中包含请求的标识符;
以所述标识符为查询主键在预设的基本信息表中查找,获得与所述标识符对应的序列号;
以所述序列号为查询主键在预设的扩展属性表中查找,获得与所述序列号对应的扩展属性。
此外,还提供一种数据访问系统,包括:
接收模块,用于获取数据访问请求,所述数据访问请求中包含请求的标识符;
基本信息查询模块,用于以所述标识符为查询主键在预设的基本信息表中查找,获得与所述标识符对应的序列号;
扩展属性查询模块,用于以所述序列号为查询主键在预设的扩展属性表中查找,获得与所述序列号对应的扩展属性。
上述数据存储方法和系统,获取标识符和对应的序列号,将标识符存储在预设的基本信息表的标识符字段中,将序列号对应存储在基本信息表中的与标识符字段对应的序列号字段中。获取标识符的扩展属性,将标识符对应的序列号存储在预设的扩展属性表的序列号字段中,将扩展属性对应存储在扩展属性表中的与序列号字段对应的属性内容字段中。当需要为标识符添加新增扩展属性时,不必改变表的结构,而将新增扩展属性存储于扩展属性表的属性内容字段中,并将标识符的序列号对应存储于扩展属性表的序列号字段即可。由于扩展属性表和基本信息表的结构不变,所以调用关系不变,从而原业务代码的结构不用更改。并且,通过不同的扩展属性支持不同的功能,则针对新的扩展属性的业务代码可独立开发,并将每个扩展属性对应的功能模块进行封装即可,从而可有效的降低业务代码的耦合度。
上述数据访问的方法和系统,获取数据访问请求,数据访问请求中包含请求的标识符。以标识符为查询主键在预设的基本信息表中查找,获得与标识符对应的序列号。以序列号为查询主键在预设的扩展属性表中查找,获得与序列号对应的扩展属性。当为标识符添加新增扩展属性后,由于新增扩展属性依然与序列号对应存储于扩展属性表中,因此,可依然根据标识符得到序列号,再根据序列号得到新增扩展属性。由于访问数据的方式不变。因此,原业务代码的结构不用更改,只需针对新增扩展属性开发对应的功能模块即可。进而将每个扩展属性对应的功能模块进行封装,便可有效的降低业务代码的耦合度。
附图说明
图1为一个实施例中数据存储方法的流程图;
图2为一个实施例中添加新增标识符及新增标识符的扩展属性的流程示意图;
图3为一个实施例中获取与新增标识符类型匹配的原型数据的流程示意图;
图4为一个实施例中根据匹配的原型数据,将新增标识符的扩展属性与新增标识符的序列号对应存储于扩展属性表中的流程示意图;
图5为一个实施例中数据存储系统的模块示意图;
图6为另一个实施例中数据存储系统的模块示意图;
图7为一个实施例中匹配模块的模块示意图;
图8为一个实施例中扩展属性存储模块的模块示意图;
图9为一个实施例中数据访问方法的流程示意图;
图10为一个实施例中数据访问系统的模块示意图。
具体实施方式
如图1所示,在一个实施例中,一种数据存储方法,包括步骤:
步骤S110,获取标识符和对应的序列号,将标识符存储在预设的基本信息表的标识符字段中,将序列号对应存储在基本信息表中的与标识符字段对应的序列号字段中。
基本信息表用于存储标识符以及与标识符对应的基本信息。标识符为唯一标识,在每个基本信息表中,每个序列号对应唯一的标识符。
在一个实施例中,序列号为自然序号,可以在原有序列号的基础上自动加一生成。例如,初始的序列号为1,每增加一个新的标识符,其对应的序列号便在原有序列号的基础上加一,则第n个标识符对应的序列号为n。此外,序列号还可以随机生成,新生成的序列号与已有的序列号不同。
以用户信息表为例,标识符可为用户标识,每个用户的基本信息包括用户名、用户所属地区和用户性别等。用户信息表则包含用户标识字段、用户的基本信息字段以及与用户标识对应的序列号字段。
若有一个用户A,其用户标识为121,用户名为Li。如下表1所示,为一最简实施例中的基本信息表。
表1
uin | name | syspkey |
121 | Li | 1 |
… | … | … |
其中,uin表示标识符,即用户标识;name表示用户名;syspkey则为序列号,且假设自动生成的与用户标识121对应的序列号syspkey的值为1。
步骤S120,获取标识符的扩展属性,将标识符对应的序列号存储在预设的扩展属性表的序列号字段中,将扩展属性对应存储在扩展属性表中的与序列号字段对应的属性内容字段中。
在一个实施例中,扩展属性包括扩展属性的属性名和属性值。因此,属性内容字段包括用于存储扩展属性的属性名的属性名字段及存储扩展属性的属性值的属性值字段。具体的,在步骤S120中,可将属性名存储在扩展属性表中的属性名字段中,将属性值对应存储在属性值字段中。
标识符的扩展属性与对应的序列号对应存储于扩展属性表中,序列号与一个标识符的扩展属性构成一条映射记录。当标识符具有多个扩展属性时,该标识符的序列号对应多条映射记录。当需要新增标识符对应的扩展属性时,可将扩展属性的属性名存储在扩展属性表中的属性名字段中,将对应的属性值存储在扩展属性表中的属性值字段中。
例如,某一应用程序要求可保存用户上传的照片和文档,且可调用并查看用户保存的照片和文档。以表1为例,对于用户A,则需要增加用户标识为121的扩展属性包含用户上传的照片属性和文档属性。具体的,将新增的扩展属性添加到扩展属性表中后,扩展属性表可如下表2所示:
表2
其中,attr_name表示扩展属性的属性名,attr_value表示扩展属性的属性值。
业务代码为实现相应的功能而调用扩展属性时:第一步,以标识符为查询主键在基本信息表中查询,获取与标识符对应的序列号;第二步,以获得的序列号作为查询主键在扩展属性表中查询,获取所需的扩展属性。需要指出的是,当标识符具有多个扩展属性,而只需要调用一个扩展属性时,可以序列号和属性名作为查询主键查询。第三步,根据获得的扩展属性实现相应功能。
例如,当要实现显示用户上传的照片的功能时:第一步,以用户标识为查询主键在用户信息表中查找,获取该用户标识对应的序列号;第二步,以序列号和属性名photo_path作为查询的主键在扩展属性表中查找,获得照片路径,例如为'/usr/local/data/photo_23506/';第三步,根据获得的照片路径展示照片。
在一个实施例中,当有新的需求被提出时,即当需要增加某一标识符的新的扩展属性时,上述存储数据的方法还包括:获取标识符的新增扩展属性,将标识符对应的序列号存储在扩展属性表的序列号字段中,将新增扩展属性对应存储于扩展属性表中的属性内容字段中。
不同的扩展属性支持相应的功能,因此,当有新的需求提出时,需要存储相应的新增扩展属性。具体地,获取标识符的新增扩展属性后,将新增扩展属性存储于扩展属性表的属性内容字段中,并将该标识符的序列号存储于扩展属性表的序列号字段中。使得该标识符的序列号与新增扩展属性对应,从而在扩展属性表中形成一条新的记录。新的记录添加完成后,业务代码可通过上述调用方式调用新增扩展属性,从而实现新的功能。
与现有技术相比,在存储新增扩展属性时不用为扩展属性表添加新的字段,而是直接在原有的字段中存储数据,从而将“增加字段数”改为“增加记录数”,进而可避免对扩展属性表的结构进行更改。由于扩展属性表的结构不变,所以调用关系不变,从而原业务代码的结构不用更改。并且,由于通过不同的扩展属性支持不同的功能,则针对新的扩展属性的业务代码可独立开发,并将每个扩展属性对应的功能模块进行封装即可,从而可有效的降低业务代码的耦合度。
例如,在后续升级过程中,要求能存储用户的聊天记录,并能通过相应方式进行查看。此时,需要为用户添加新增扩展属性:“聊天记录路径”。具体的,以表1为例,将“聊天记录路径”与用户A的序列号分别存储于扩展属性表的属性内容字段和序列号字段中,并使用户A的序列号与“聊天记录路径”对应。具体如下表3所示:
表3
syspkey | attr_name | attr_value |
1 | 'photo_path' | '/usr/local/data/photo_23506/' |
1 | 'doc_path' | '/usr/local/data/doc_23506/' |
1 | 'record_path' | '/usr/local/data/record_23506/' |
… | … | … |
其中,'record_path'为新增扩展属性“聊天记录路径”的属性名,'/usr/local/data/record_23506/'为新增扩展属性“聊天记录路径”的属性值。存储完成后,用户A的扩展属性表中形成一条新的记录。业务代码查找到该新的记录并调用该新的记录对应的新增扩展属性,即可实现查看用户A的聊天记录。
在另一个实施例中,上述数据存储方法还包括:获取标识符的扩展属性的属性类别,将标识符对应的序列号存储在预设的属性类别表中的序列号字段中,将属性类别对应存储在属性类别表中的与序列号字段对应的类别字段中。
通过属性类别可设定扩展属性的调用条件。在一个实施例中,业务代码在调用扩展属性时,先以序列号为查询主键获取对应的属性类别;然后根据属性类别判断该序列号在扩展属性表中对应的扩展属性是否符合调用条件;只有符合调用条件时,业务代码才会调用该序列号对应的扩展属性。
在一个实施例中,可预先设定预定值来表示属性类别。因此,在属性类别表的类别字段中存储的是表示相应属性类别的预定值。例如,可预先设定属性类别的值为1时,表示扩展属性的属性类别为可调用扩展属性。则,若序列号在属性类别表中对应的属性类别的值为1,则该序列号在扩展属性表中所对应的扩展属性均为可被业务代码调用。
此外,还可利用属性类别设定扩展属性的调用时限。具体地,预先设定当属性类别的值为预定值时,扩展属性只在预定时间内可被调用。当业务代码调用扩展属性时,首先以序列号为查询主键在属性类别表中查询,获取对应的属性类别的值,并获取属性类别的值所表示的预定时间。若当前时间落入预定时间的范围,则扩展属性表中的扩展属性可被业务代码调用。例如,假设预先设定属性类别的值为2时,表示扩展属性只在2012年1月1日至2012年1月31日可被调用。则业务代码在调用扩展属性时,若序列号对应的属性类别的值为2,则只有当前时间在2012年1月1日至2012年1月31日之间时,该序列号在扩展属性表中对应的扩展属性才可被业务代码调用。
例如,假设用户A的扩展属性只有在2012年1月1日至2012年1月31日之间时才可被业务代码调用。则用户A的属性类别表如下表4所示:
表4
syspkey | elements_type |
1 | 2 |
其中,elements_type表示属性类别。因此,在存储扩展属性时,可通过预先设置属性类别的值而控制扩展属性的调用条件。业务代码在调用用户A的扩展属性时,首先以syspkey=1为查询主键在属性类别表中查找,获得查对应的elements_type=2;判断当前时间是否介于2012年1月1日至2012年1月31日之间;若是,则以syspkey=1为查询主键在扩展属性表中查找,获取与syspkey=1对应的扩展属性并调用,否则,停止调用。
在另一个实施例中,上述数据存储方法还包括添加新增标识符及新增标识符的扩展属性的步骤。
上述基本信息表以及扩展属性表中数据并不是一成不变的,需要实时更新。例如,当基本信息表用来存储用户的基本信息时,扩展属性表用于存储用户的扩展属性,若有新的用户注册成功,则需在原有的基本信息表及扩展属性表中加入新的数据(新增标识符)。
本实施例中,扩展属性表中的序列号及对应的扩展属性的多条映射记录构成原型数据。如图2所示,添加新增标识符及新增标识符的扩展属性的步骤具体为:
步骤S210,将新增标识符存储于标识符字段中,生成新增标识符对应的序列号,并将生成的序列号对应存储于基本信息表的序列号字段中。
步骤S220,获取新增标识符的类型,并查找到与新增标识符的类型匹配的原型数据。
具体地,新增标识符可为多种类型,每种类型的标识符具有不同的扩展属性。在添加新增标识符时,应获取新增标识符的类型。
在一个实施例中,包括多个类别的原型数据。不同类别的原型数据中包含的扩展属性不同,因此,不同类别的原型数据中的序列号对应扩展属性构成不同的映射记录。
进一步的,由于扩展属性表中的序列号及对应的扩展属性的多条映射记录构成原型数据。不同的序列号可用于标识不同的原型数据。由于可在属性类别表中设置序列号所对应的扩展属性类别,与序列号所对应的扩展属性类别则可用于标识原型数据的类别。
如图3所示,在一个实施例中,获取新增标识符的类型,并查找到与新增标识符的类型匹配的原型数据的步骤具体为:
步骤S221,在属性类别表中查找与新增标识符的类型匹配的属性类别,并获取与匹配的属性类别对应的序列号。
步骤S223,以获取的序列号为查询主键在扩展属性表中查询,获得与序列号对应的多条映射记录即为匹配的原型数据。
步骤S230,根据匹配的原型数据,将新增标识符的扩展属性与新增标识符的序列号对应存储于扩展属性表中。
如图4所示,在一个实施例中,上述步骤S230具体包括以下步骤:
步骤S231,将匹配的原型数据拷贝于扩展属性表中,并将拷贝的匹配的原型数据中的序列号替换为新增标识符的序列号。
具体地,将匹配的原型数据所包含的映射记录均拷贝于扩展属性表中,进一步的,将匹配的原型数据的拷贝的序列号替换为新增标识符的序列号,以使在扩展属性表中存,新增标识符的序列号对应相应的扩展属性。
步骤S233,根据匹配的原型数据所包含的扩展属性生成设置选项,并将设置选项显示于用户界面。
原型数据中的扩展属性的类型可在属性类别表中预先设置,且每个扩展属性具有预设的属性值。新增标识符的扩展属性的类型与原型数据的相同,但属性值可能存在差异。因此,需要重新设置新增标识符的扩展属性的属性值。
具体地,根据匹配的原型数据所包含的扩展属性的个数及种类生成设置选项。每个设置选项中,针对扩展属性的内容会生成多个设置信息。进一步的,将生成的设置选项及设置信息显示于用户界面,便于接收用户的设置指令。
步骤S235,通过用户界面获取设置信息,并根据设置信息修改匹配的原型数据中的扩展属性。
具体的,根据用户界面反馈的设置信息,修改扩展属性的属性值。将拷贝的匹配的原型数据中的扩展属性的属性值根据设置信息进行修改,以符合新增标识符的要求。
下面将以将上述数据存储方法应用于微博统一接入层的命令字的存储为例来进行说明。
上述基本信息表用于存储微博统一接入层的命令字的基本信息的存储,上述扩展属性表相应的用于存储命令字的扩展属性。命令字用于向后台服务器数据发送操作指令,且命令字要通过一个接口转发才能到达最终的服务器。根据转发接口的不同,命令字可分为CGI类型命令字及MAP类型命令字。
CGI命令字和MAP命令字都有“常用命令字”的扩展属性,但是MAP命令字还特有“重要级别”的属性和“IDC地区”扩展属性。
例如,假设在基本信息表中存储有两个命令字“001a”和“001b”,其中,命令字“001a”和“001b”分别为CGI类型和MAP类型的命令字,并假设自动生成的命令字“001a”和“001b”的序列号分别为“11”和“12”。命令字“001a”的扩展属性包括“常用命令字”,其属性值为“常用”;命令字“001b”的扩展属性包括“常用命令字”、“重要级别”的和“IDC地区”,其属性值分别为“常用”“不重要”和“天津”。则基本信息表具体如下表5所示:
表5
此外,在扩展属性表中,除记录上述两个命令字的扩展属性外,还记录有MAP类型的原型数据。其中,原型数据包含“常用命令字”、“重要级别”和“IDC地区”三个扩展属性,且三个扩展属性的属性值分别默认为“常用”、“重要”和“深圳”,且原型数据的序列号为13。则扩展属性表具体如下表6所示:
表6
syspkey | attr_name | attr_value |
11 | 常用命令字 | 常用 |
12 | 常用命令字 | 常用 |
12 | 重要级别 | 不重要 |
12 | IDC地区 | 天津 |
13 | 常用命令字 | 常用 |
13 | 重要级别 | 重要 |
13 | IDC地区 | 深圳 |
… | … | … |
其中,syspkey=13对应的三条映射记录即为原型数据。
在属性类别表中,记录命令字的序列号和原型数据的序列号与对应的属性类别的映射关系。假如,预先设定当属性类别的值为1时,表示对应的序列号在扩展属性表中对应的映射记录中的扩展属性的类别为可调用;预先设定当属性类别的值为999时,则表示对应的序列号在扩展属性表中对应的映射记录即为MAP类型的原型数据。则属性类别表具体如下表7所示:
表7
随着需求的增加,先需在原来数据中增加一个新的命令字。一般是通过代码给命令字添加每个扩展属性,但是对于上述情况,需要在代码中对CGI命令字和MAP命令字加以区分,如果是MAP命令字,则增加“重要级别”和“IDC地区”的代码。随着需求的积累,后面接入方式和扩展属性都会增加,那么扩展属性相关的业务代码就会变得更加难以维护。
假设该新的命令字为“001c”,其类型为MAP类型。“常用命令字”、“重要级别”、“IDC地区”属性分别为“不常用”、“核心”和“深圳”。则添加命令字“001c”及其扩展属性的方法包括以下步骤:
首先向命令字的基本信息表的标识符字段中存储该命令字“001c”,自动生成一个“001c”的序列号,假设为14,并将生成的序列号存储于基本信息表的序列号字段中。
在属性类别表中找到element_type=999的记录,并获取与element_type=999对应的syspkey,得到syspkey=13。
以syspkey=13为查询主键在扩展属性表中查找,得到与syspkey=13对应的映射记录。并根据与syspkey=13对应的映射记录生成设置选项,并将设置选项显示于用户界面。具体在本实施例中,设置选项包括“重要性”、“常用命令字”和“IDC地区”。
将得到的与syspkey=13对应的记录拷贝于扩展属性表中,并将syspkey=13替换为syspkey=14。还获取用户在用户界面反馈的设置信息,将“重要性”、“常用命令字”和“IDC地区”属性分别设置为“不常用”、“核心”和“深圳”。
综上所述,每个命令字的扩展属性,都可以通过提前在扩展属性表设置好的原型数据的来控制。使用原型数据前,每种接入方式都要开发对应的页面。使用了原型数据后,新的命令字的扩展属性通过用户界面上的设置选项便可完成设置,而设置选项根据原型数据所包含的扩展属性生成。通过使用原型数据,每一类命令字的扩展属性不再需要通过代码来添加,而是通过预先存储的原型数据来设置。因此,不论是后续新增扩展属性还是接入方式,对其他现有数据的影响都被减少了。
如图5所示,在一个实施例中,一种数据存储系统,包括基本信息存储模块110和扩展属性存储模块120。其中:
基本信息存储模块110用于获取标识符和对应的序列号,将标识符存储在预设的基本信息表的标识符字段中,将序列号对应存储在基本信息表中的与标识符字段对应的序列号字段中。
基本信息表用于存储标识符以及与标识符对应的基本信息。标识符为唯一标识,在每个基本信息表中,每个序列号对应唯一的标识符。
在一个实施例中,序列号为自然序号,可由基本信息存储模块110在原有序列号的基础上自动加一生成。例如,初始的序列号为1,每增加一个新的标识符,其对应的序列号便在原有序列号的基础上加一,则第n个标识符对应的序列号为n。此外,序列号还可以随机生成,新生成的序列号与已有的序列号不同。
以用户信息表为例,标识符可为用户标识,每个用户的基本信息包括用户名、用户所属地区和用户性别等。用户信息表则包含用户标识字段、用户的基本信息字段以及与用户标识对应的序列号字段。
扩展属性存储模块120用于获取标识符的扩展属性,将标识符对应的序列号存储在预设的扩展属性表的序列号字段中,将扩展属性对应存储在扩展属性表中的与序列号字段对应的属性内容字段中。
在一个实施例中,扩展属性包括扩展属性的属性名和属性值。因此,属性内容字段包括用于存储扩展属性的属性名的属性名字段及存储扩展属性的属性值的属性值字段。具体地,扩展属性存储模块120可将属性名存储在扩展属性表中的属性名字段中,将属性值对应存储在属性值字段中。
扩展属性存储模块120用于将标识符的扩展属性与对应的序列号对应存储于扩展属性表中,序列号与一个标识符的扩展属性构成一条映射记录。当标识符具有多个扩展属性时,该标识符的序列号对应多条映射记录。当需要新增标识符对应的扩展属性时,可将扩展属性的属性名存储在扩展属性表中的属性名字段中,将对应的属性值存储在扩展属性表中的属性值字段中。
业务代码为实现相应的功能而调用扩展属性时:第一步,以标识符为查询主键在基本信息表中查询,获取与标识符对应的序列号;第二步,以获得的序列号作为查询主键在扩展属性表中查询,获取所需的扩展属性。需要指出的是,当标识符具有多个扩展属性,而只需要调用一个扩展属性时,可以序列号和属性名作为查询主键查询。第三步,根据获得的扩展属性实现相应功能。
在一个实施例中,当有新的需求被提出时,即当需要增加某一标识符的新的扩展属性时,扩展属性存储模块120还用于获取标识符的新增扩展属性,将标识符对应的序列号存储在扩展属性表的序列号字段中,将新增扩展属性对应存储于扩展属性表中的属性内容字段中。
不同的扩展属性支持相应的功能,因此,当有新的需求提出时,需要存储相应的新增扩展属性。具体地,扩展属性存储模块120获取标识符的新增扩展属性后,将新增扩展属性存储于扩展属性表的属性内容字段中,并将该标识符的序列号存储于扩展属性表的序列号字段中。使得该标识符的序列号与新增扩展属性对应,从而在扩展属性表中形成一条新的记录。新的记录添加完成后,业务代码可通过上述调用方式调用新增扩展属性,从而实现新的功能。
与现有技术相比,在存储新增扩展属性时不用为扩展属性表添加新的字段,而是直接在原有的字段中存储数据,从而将“增加字段数”改为“增加记录数”,进而可避免对扩展属性表的结构进行更改。由于扩展属性表的结构不变,所以调用关系不变,从而原业务代码的结构不用更改。并且,由于通过不同的扩展属性支持不同的功能,则针对新的扩展属性的业务代码可独立开发,并将每个扩展属性对应的功能模块进行封装即可,从而可有效的降低业务代码的耦合度。
在另一个实施例中,上述数据存储系统还包括属性类别设置模块,属性类别设置模块用于获取标识符的扩展属性的属性类别,将标识符对应的序列号存储在预设的属性类别表中的序列号字段中,将属性类别对应存储在属性类别表中的与序列号字段对应的类别字段中。
通过属性类别可设定扩展属性的调用条件。在一个实施例中,业务代码在调用扩展属性时,先以序列号为查询主键获取对应的属性类别;然后根据属性类别判断该序列号在扩展属性表中对应的扩展属性是否符合调用条件;只有符合调用条件时,业务代码才会调用该序列号对应的扩展属性。
在一个实施例中,可预先设定预定值来表示属性类别。因此,属性类别设置模块在属性类别表的类别字段中存储的是表示相应属性类别的预定值。例如,可预先设定属性类别的值为1时,表示扩展属性的属性类别为可调用扩展属性。则,若序列号在属性类别表中对应的属性类别的值为1,则该序列号在扩展属性表中所对应的扩展属性均为可被业务代码调用。
此外,还可利用属性类别设定扩展属性的调用时限。具体地,预先设定当属性类别的值为预定值时,扩展属性只在预定时间内可被调用。当业务代码调用扩展属性时,首先以序列号为查询主键在属性类别表中查询,获取对应的属性类别的值,并获取属性类别的值所表示的预定时间。若当前时间落入预定时间的范围,则扩展属性表中的扩展属性可被业务代码调用。
在另一个实施例中,基本信息存储模块110还用于添加新增标识符,且扩展属性存储模块120还用于添加新增标识符的扩展属性。
上述基本信息表以及扩展属性表中数据并不是一成不变的,需要实时更新。例如,当基本信息表用来存储用户的基本信息时,扩展属性表用于存储用户的扩展属性,若有新的用户注册成功,则需在原有的基本信息表及扩展属性表中加入新的数据(新增标识符)。
本实施例中,扩展属性表中的序列号及对应的扩展属性的多条映射记录构成原型数据。如图6所示,数据存储系统还包括匹配模块130,其中:匹配模块130用于获取新增标识符的类型,并查找到与新增标识符的类型匹配的原型数据。
具体地,新增标识符可为多种类型,每种类型的标识符具有不同的扩展属性。在添加新增标识符时,匹配模块130应获取新增标识符的类型。
在一个实施例中,包括多个类别的原型数据。不同类别的原型数据中包含的扩展属性不同,因此,不同类别的原型数据中的序列号对应扩展属性构成不同的映射记录。
进一步的,由于扩展属性表中的序列号及对应的扩展属性的多条映射记录构成原型数据。不同的序列号可用于标识不同的原型数据。由于可在属性类别表中设置序列号所对应的扩展属性类别,与序列号所对应的扩展属性类别则可用于标识原型数据的类别。
如图7所示,在一个实施例中,匹配模块130包括序列号查询单元131和原型数据查找单元133。其中:
序列号查询单元131用于在属性类别表中查找与新增标识符的类型匹配的属性类别,并获取与匹配的属性类别对应的序列号。
原型数据查找单元133用于以获取的序列号为查询主键在扩展属性表中查询,获得与序列号对应的多条映射记录即为匹配的原型数据。
基本信息存储模块110用于将新增标识符存储于标识符字段中,生成新增标识符对应的序列号,并将生成的序列号对应存储于基本信息表的序列号字段中。
扩展属性存储模块120还用于根据匹配的原型数据,将新增标识符的扩展属性与新增标识符的序列号对应存储于扩展属性表中。
如图8所示,在一个实施例中,扩展属性存储模块120包括复制单元121、选项生成单元123和属性设置单元125。其中:
复制单元121用于将匹配的原型数据拷贝于扩展属性表中,并将拷贝的匹配的原型数据中的序列号替换为新增标识符的序列号。
具体地,复制单元121将匹配的原型数据所包含的映射记录均拷贝于扩展属性表中,进一步的,将匹配的原型数据的拷贝的序列号替换为新增标识符的序列号,以使在扩展属性表中存,新增标识符的序列号对应相应的扩展属性。
选项生成单元123根据匹配的原型数据所包含的扩展属性生成设置选项,并将设置选项显示于用户界面。
原型数据中的扩展属性的类型可在属性类别表中预先设置,且每个扩展属性具有预设的属性值。新增标识符的扩展属性的类型与原型数据的相同,但属性值可能存在差异。因此,需要重新设置新增标识符的扩展属性的属性值。
具体地,选项生成单元123根据匹配的原型数据所包含的扩展属性的个数及种类生成设置选项。每个设置选项中,选项生成单元123针对扩展属性的内容会生成多个设置信息。进一步的,选项生成单元123将生成的设置选项及设置信息显示于用户界面,便于接收用户的设置指令。
属性设置单元125用于通过用户界面获取设置信息,并根据设置信息修改匹配的原型数据中的扩展属性。
具体的,属性设置单元125用于根据用户界面反馈的设置信息,修改扩展属性的属性值。将拷贝的匹配的原型数据中的扩展属性的属性值根据设置信息进行修改,以符合新增标识符的要求。
上述数据存储方法和系统,获取标识符和对应的序列号,将标识符存储在预设的基本信息表的标识符字段中,将序列号对应存储在基本信息表中的与标识符字段对应的序列号字段中。获取标识符的扩展属性,将标识符对应的序列号存储在预设的扩展属性表的序列号字段中,将扩展属性对应存储在扩展属性表中的与序列号字段对应的属性内容字段中。当需要为标识符添加新增扩展属性时,不必改变表的结构,而将新增扩展属性存储于扩展属性表的属性内容字段中,并将标识符的序列号对应存储于扩展属性表的序列号字段即可。由于扩展属性表和基本信息表的结构不变,所以调用关系不变,从而原业务代码的结构不用更改。并且,通过不同的扩展属性支持不同的功能,则针对新的扩展属性的业务代码可独立开发,并将每个扩展属性对应的功能模块进行封装即可,从而可有效的降低业务代码的耦合度。
如图9所示,在一个实施例中,一种数据访问方法,包括步骤:
获取数据访问请求,数据访问请求中包含请求的标识符。
具体的,在实现某功能时,需要进行数据访问,获得支持相应功能的扩展属性。数据访问请求可以是与用户界面特定的按钮交互产生。例如,若用户主页上包括“显示照片”的按钮,则点击该按钮会产生数据访问请求。该数据请求中包含了该用户的标识符即用户标识,且包含了数据请求的类型。
步骤S310,以标识符为查询主键在预设的基本信息表中查找,获得与标识符对应的序列号。
具体地,预设的基本信息表用于存储标识符以及与标识符对应的基本信息。进一步的,基本信息表包括标识符字段以及与标识符字段对应的序列号字段。标识符存储于标识符字段中,与标识符对应的序列号则对应存储于序列号字段中。
在同一个基本信息表中,序列号与标识号一一对应。因此,获取标识符后,便可以标识符为查询主键在基本信息表中查找到包含该标识符的记录,进而得到与该标识符对应的序列号。
以用户信息表为例,标识符可为用户标识,每个用户的基本信息包括用户名、用户所属地区和用户性别等。用户信息表则包含用户标识字段、用户的基本信息字段以及与用户标识对应的序列号字段。
如上表1所示,标识符即用户标识为121,则以标识符为查询主键在用户信息表中获得的序列号为1。
步骤S320,以序列号为查询主键在预设的扩展属性表中查找,获得与序列号对应的扩展属性。
具体的,扩展属性表包括序列号字段以及与序列号字段对应的属性内容字段。在扩展属性表中,序列号存储于序列号字段中,与序列号对应的扩展属性则对应存储于属性内容字段中。由于一个序列号可能对应多个扩展属性,因此,在扩展属性表中一个序列号可能对应多条映射记录。
如上表2所示,获得的序列号为1,则以序列号为查询主键在扩展属性表中查询,得到两个扩展属性,分别为“photo_path”和“doc_path”。
在一个实施例中,扩展属性包括属性名和对应的属性值。相应的,属性内容字段包括属性名字段和属性内容字段。则属性名存储于属性名字段中,对应的属性内容对应存储于属性值字段中。
本实施例中,上述步骤S330具体为:以序列号和属性名为查询主键在预设的扩展属性表中查询,获得对应的属性值。
具体的,序列号可能对应多个扩展属性,但在实现功能时可能只需要调用其中的一个或几个。通过以序列号和属性名为查询主键在预设的扩展属性表中查询可只获得所需要的扩展属性。
以表2所示扩展属性表为例,当只需要实现显示用户上传的照片的功能时,则只需要调用photo_path的扩展属性。以序列号1和属性名photo_path作为查询的主键在扩展属性表中查找,获得扩展属性的属性值即照片路径'/usr/local/data/photo_23506/';并根据获得的照片路径显示照片即可。
在另一个实施例中,在上述步骤S330之前,数据访问方法还包括:
以序列号为查询主键在预设的属性类别表中查找,获得与序列号对应的属性类别,并根据获得的属性类别判断是否进行以序列号为查询主键在预设的扩展属性表中查找,获得与序列号对应的扩展属性的步骤。
具体的,预设的属性类别表包括序列号字段以及与序列号字段对应的类别字段。序列号存储于序列号字段中,序列号对应的扩展属性的属性类别对应存储于类别字段中。
进一步的,通过属性类别可设定扩展属性的调用条件。在调用扩展属性时,先以序列号为查询主键在属性类别表中查询,获取对应的属性类别;然后根据属性类别判断该序列号在扩展属性表中对应的扩展属性是否符合调用条件;只有符合调用条件时,才会以该序列号为查询主键在扩展信息表中查询,获取对应的扩展属性。
在一个实施例中,可预先设定预定值来表示属性类别。因此,在属性类别表的类别字段中存储的是表示相应属性类别的预定值。例如,可预先设定属性类别的值为1时,表示扩展属性的属性类别为可调用扩展属性。则,若序列号在属性类别表中对应的属性类别的值为1,则该序列号在扩展属性表中所对应的扩展属性均为可被业务代码调用。
此外,还可利用属性类别设定扩展属性的调用时限。具体地,预先设定当属性类别的值为预定值时,扩展属性只在预定时间内可被调用。当业务代码调用扩展属性时,首先以序列号为查询主键在属性类别表中查询,获取对应的属性类别的值,并获取属性类别的值所表示的预定时间。若当前时间落入预定时间的范围,则扩展属性表中的扩展属性可被业务代码调用。例如,假设预先设定属性类别的值为2时,表示扩展属性只在2012年1月1日至2012年1月31日可被调用。则业务代码在调用扩展属性时,若序列号对应的属性类别的值为2,则只有当前时间在2012年1月1日至2012年1月31日之间时,该序列号在扩展属性表中对应的扩展属性才可被业务代码调用。
以上表4所示的属性类别表为例,以序列号1为查询主键在属性类别表中查询,得到属性类别的值为2。根据预先设定,表示序列号1对应的扩展属性只有在2012年1月1日至2012年1月31日之间才能被调用。因此,判断当前时间是否介于上述时间期间内,若是,则进行步骤S330,以序列号1为查询主键在扩展属性表中查询,获得扩展属性,否则,不进行步骤S330。
如图10所示,在一个实施例中,一种数据访问系统,包括接收模块310、基本信息查询模块320和扩展属性查询模块330。其中:
接收模块310用于获取数据访问请求,数据访问请求中包含请求的标识符。
具体的,在实现某功能时,需要进行数据访问,获得支持相应功能的扩展属性。数据访问请求可以是与用户界面特定的按钮交互产生。例如,若用户主页上包括“显示照片”的按钮,则点击该按钮会产生数据访问请求。该数据请求中包含了该用户的标识符即用户标识,且包含了数据请求的类型。
基本信息查询模块320用于以标识符为查询主键在预设的基本信息表中查找,获得与标识符对应的序列号。
具体地,预设的基本信息表用于存储标识符以及与标识符对应的基本信息。进一步的,基本信息表包括标识符字段以及与标识符字段对应的序列号字段。标识符存储于标识符字段中,与标识符对应的序列号则对应存储于序列号字段中。
在同一个基本信息表中,序列号与标识号一一对应。因此,获取标识符后,基本信息查询模块320便可以标识符为查询主键在基本信息表中查找到包含该标识符的记录,进而得到与该标识符对应的序列号。
以用户信息表为例,标识符可为用户标识,每个用户的基本信息包括用户名、用户所属地区和用户性别等。用户信息表则包含用户标识字段、用户的基本信息字段以及与用户标识对应的序列号字段。
扩展属性查询模块330用于以序列号为查询主键在预设的扩展属性表中查找,获得与序列号对应的扩展属性。
具体的,扩展属性表包括序列号字段以及与序列号字段对应的属性内容字段。在扩展属性表中,序列号存储于序列号字段中,与序列号对应的扩展属性则对应存储于属性内容字段中。由于一个序列号可能对应多个扩展属性,因此,在扩展属性表中一个序列号可能对应多条映射记录。
在一个实施例中,扩展属性包括属性名和对应的属性值。相应的,属性内容字段包括属性名字段和属性内容字段。则属性名存储于属性名字段中,对应的属性内容对应存储于属性值字段中。
本实施例中,扩展属性查询模块330用于以序列号和属性名为查询主键在预设的扩展属性表中查询,获得对应的属性值。
具体的,序列号可能对应多个扩展属性,但在实现功能时可能只需要调用其中的一个或几个。扩展属性查询模块330通过以序列号和属性名为查询主键在预设的扩展属性表中查询可只获得所需要的扩展属性。
在另一个实施例中,数据访问系统还包括判断模块,判断模块用于以序列号为查询主键在预设的属性类别表中查找,获得与序列号对应的属性类别,并根据获得的属性类别判断是否调用扩展属性查询模块330。
具体的,预设的属性类别表包括序列号字段以及与序列号字段对应的类别字段。序列号存储于序列号字段中,序列号对应的扩展属性的属性类别对应存储于类别字段中。
进一步的,通过属性类别可设定扩展属性的调用条件。扩展属性查询模块330在调用扩展属性时,判断模块先以序列号为查询主键在属性类别表中查询,获取对应的属性类别;然后根据属性类别判断该序列号在扩展属性表中对应的扩展属性是否符合调用条件;只有符合调用条件时,才会调用扩展属性查询模块330。
在一个实施例中,可预先设定预定值来表示属性类别。因此,在属性类别表的类别字段中存储的是表示相应属性类别的预定值。例如,可预先设定属性类别的值为1时,表示扩展属性的属性类别为可调用扩展属性。则,若序列号在属性类别表中对应的属性类别的值为1,则该序列号在扩展属性表中所对应的扩展属性均为可被业务代码调用。
此外,还可利用属性类别设定扩展属性的调用时限。具体地,预先设定当属性类别的值为预定值时,扩展属性只在预定时间内可被调用。当业务代码调用扩展属性时,首先判断模块以序列号为查询主键在属性类别表中查询,获取对应的属性类别的值,并获取属性类别的值所表示的预定时间。若当前时间落入预定时间的范围,则扩展属性表中的扩展属性可被业务代码调用。
上述数据访问的方法和系统,获取数据访问请求,数据访问请求中包含请求的标识符。以标识符为查询主键在预设的基本信息表中查找,获得与标识符对应的序列号。以序列号为查询主键在预设的扩展属性表中查找,获得与序列号对应的扩展属性。当为标识符添加新增扩展属性后,由于新增扩展属性依然与序列号对应存储于扩展属性表中,因此,可依然根据标识符得到序列号,再根据序列号得到新增扩展属性。由于访问数据的方式不变。因此,原业务代码的结构不用更改,只需针对新增扩展属性开发对应的功能模块即可。进而将每个扩展属性对应的功能模块进行封装,便可有效的降低业务代码的耦合度。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (20)
1.一种数据存储方法,包括以下步骤:
获取标识符和对应的序列号,将所述标识符存储在预设的基本信息表的标识符字段中,将所述序列号对应存储在所述基本信息表中的与所述标识符字段对应的序列号字段中;
获取所述标识符的扩展属性,将所述标识符对应的序列号存储在预设的扩展属性表的序列号字段中,将所述扩展属性对应存储在所述扩展属性表中的与所述序列号字段对应的属性内容字段中;
其中,所述标识符的扩展属性与对应的序列号对应存储于所述扩展属性表中,所述序列号与一个所述标识符的扩展属性构成一条映射记录,当所述标识符具有多个扩展属性时,所述标识符的序列号对应多条映射记录。
2.根据权利要求1所述的数据存储方法,其特征在于,所述扩展属性包括属性名和对应的属性值,所述属性内容字段包含属性名字段和对应的属性值字段;
将扩展属性对应存储在所述扩展属性表中的与所述序列号字段对应的属性内容字段中的步骤为:
将所述属性名存储在所述属性名字段中,将所述属性值对应存储在所述属性值字段中。
3.根据权利要求1所述的数据存储方法,其特征在于,还包括:
获取所述标识符的扩展属性的属性类别,将所述标识符对应的序列号存储在预设的属性类别表中的序列号字段中,将所述属性类别对应存储在所述属性类别表中的与所述序列号字段对应的类别字段中。
4.根据权利要求1所述的数据存储方法,其特征在于,还包括:
获取所述标识符的新增扩展属性,将所述标识符对应的序列号存储在所述扩展属性表的序列号字段中,将所述新增扩展属性对应存储于所述扩展属性表中的属性内容字段中。
5.根据权利要求3所述的数据存储方法,其特征在于,所述扩展属性表中的序列号及对应的扩展属性的多条映射记录构成原型数据;所述方法还包括添加新增标识符及所述新增标识符的扩展属性的步骤,具体为:
将新增标识符存储于所述标识符字段中,生成所述新增标识符对应的序列号,并将生成的序列号对应存储于所述基本信息表的序列号字段中;
获取所述新增标识符的类型,并查找到与所述新增标识符的类型匹配的原型数据;
根据所述匹配的原型数据,将所述新增标识符的扩展属性与所述新增标识符的序列号对应存储于所述扩展属性表中。
6.根据权利要求5所述的数据存储方法,其特征在于,所述获取所述新增标识符的类型,并查找到与所述新增标识符的类型匹配的原型数据步骤为:
在属性类别表中查找与所述新增标识符的类型匹配的属性类别,并获取与所述匹配的属性类别对应的序列号;
以所述获取的序列号为查询主键在扩展属性表中查询,获得与所述序列号对应的多条映射记录即为所述匹配的原型数据。
7.根据权利要求5所述的数据存储方法,其特征在于,所述根据所述匹配的原型数据,将所述新增标识符的扩展属性与所述新增标识符的序列号对应存储于所述扩展属性表中的步骤为:
将所述匹配的原型数据拷贝于所述扩展属性表中,并将拷贝的匹配的原型数据中的序列号替换为所述新增标识符的序列号;
根据所述匹配的原型数据所包含的扩展属性生成设置选项,并将所述设置选项显示于用户界面;
通过用户界面获取设置信息,并根据所述设置信息修改所述匹配的原型数据中的扩展属性。
8.一种数据存储系统,其特征在于,包括:
基本信息存储模块,用于获取标识符和对应的序列号,将所述标识符存储在预设的基本信息表的标识符字段中,将所述序列号对应存储在所述基本信息表中的与所述标识符字段对应的序列号字段中;
扩展属性存储模块,用于获取所述标识符的扩展属性,将所述标识符对应的序列号存储在预设的扩展属性表的序列号字段中,将所述扩展属性对应存储在所述扩展属性表中的与所述序列号字段对应的属性内容字段中;
其中,所述扩展属性存储模块用于将所述标识符的扩展属性与对应的序列号对应存储于所述扩展属性表中,所述序列号与一个所述标识符的扩展属性构成一条映射记录,当所述标识符具有多个扩展属性时,所述标识符的序列号对应多条映射记录。
9.根据权利要求8所述的数据存储系统,其特征在于,所述扩展属性包括属性名和对应的属性值,所述属性内容字段包含属性名字段和对应的属性值字段;
所述扩展属性存储模块还用于将所述属性名存储在所述属性名字段中,将所述属性值对应存储在所述属性值字段中。
10.根据权利要求8所述的数据存储系统,其特征在于,所述系统还包括:属性类别设置模块,用于获取所述标识符的扩展属性的属性类别,将所述标识符对应的序列号存储在预设的属性类别表中的序列号字段中,将所述属性类别对应存储在所述属性类别表中的与所述序列号字段对应的类别字段中。
11.根据权利要求8所述的数据存储系统,其特征在于,所述扩展属性存储模块还用于获取所述标识符的新增扩展属性,将所述标识符对应的序列号存储在所述扩展属性表的序列号字段中,将所述新增扩展属性对应存储于所述扩展属性表中的属性内容字段中。
12.根据权利要求10所述的数据存储系统,其特征在于,所述扩展属性表中的序列号及对应的扩展属性的多条映射记录构成原型数据;
所述数据存储系统还包括:匹配模块,用于获取新增标识符的类型,并查找到与所述新增标识符的类型匹配的原型数据;
所述基本信息存储模块用于将新增标识符存储于所述标识符字段中,生成所述新增标识符对应的序列号,并将生成的序列号对应存储于所述基本信息表的序列号字段中;
所述扩展属性存储模块还用于根据所述匹配的原型数据,将所述新增标识符的扩展属性与所述新增标识符的序列号对应存储于所述扩展属性表中。
13.根据权利要求12所述的数据存储系统,其特征在于,所述匹配模块包括:
序列号查询单元,用于在属性类别表中查找与所述新增标识符的类型匹配的属性类别,并获取与所述匹配的属性类别对应的序列号;
原型数据查找单元,用于以所述获取的序列号为查询主键在扩展属性表中查询,获得与所述序列号对应的多条映射记录即为所述匹配的原型数据。
14.根据权利要求12所述的数据存储系统,其特征在于,所述扩展属性存储模块包括:
复制单元,用于将所述匹配的原型数据拷贝于所述扩展属性表中,并将拷贝的匹配的原型数据中的序列号替换为所述新增标识符的序列号;
选项生成单元,根据所述匹配的原型数据所包含的扩展属性生成设置选项,并将所述设置选项显示于用户界面;
属性设置单元,用于通过用户界面获取设置信息,并根据所述设置信息修改所述匹配的原型数据中的扩展属性。
15.一种数据访问方法,包括以下步骤:
获取数据访问请求,所述数据访问请求中包含请求的标识符;
以所述标识符为查询主键在预设的基本信息表中查找,获得与所述标识符对应的序列号,所述标识符存储在所述基本信息表的标识符字段中,所述序列号对应存储在所述基本信息表中的与所述标识符字段对应的序列号字段中;
以所述序列号为查询主键在预设的扩展属性表中查找,获得与所述序列号对应的扩展属性,所述标识符对应的序列号存储在所述扩展属性表的序列号字段中,所述扩展属性对应存储在所述扩展属性表中的与所述序列号字段对应的属性内容字段中;
其中,所述序列号与一个所述标识符的扩展属性构成一条映射记录,当所述标识符具有多个扩展属性时,所述标识符的序列号对应多条映射记录。
16.根据权利要求15所述的数据访问方法,其特征在于,所述扩展属性包括属性名和对应的属性值;所述以所述序列号为查询主键在预设的扩展属性表中查找,获得与所述序列号对应的扩展属性的步骤为:
以所述序列号和所述属性名为查询主键在所述预设的扩展属性表中查询,获得对应的属性值。
17.根据权利要求15所述的数据访问方法,其特征在于,在所述以所述序列号为查询主键在预设的扩展属性表中查找,获得与所述序列号对应的扩展属性的步骤之前,所述数据访问方法还包括:
以所述序列号为查询主键在预设的属性类别表中查找,获得与所述序列号对应的属性类别,根据获得的属性类别判断是否进行以所述序列号为查询主键在预设的扩展属性表中查找,获得与所述序列号对应的扩展属性的步骤。
18.一种数据访问系统,其特征在于,包括:
接收模块,用于获取数据访问请求,所述数据访问请求中包含请求的标识符,所述标识符存储在基本信息表的标识符字段中,序列号对应存储在所述基本信息表中的与所述标识符字段对应的序列号字段中;
基本信息查询模块,用于以所述标识符为查询主键在预设的基本信息表中查找,获得与所述标识符对应的序列号,所述标识符对应的序列号存储在扩展属性表的序列号字段中,所述扩展属性对应存储在所述扩展属性表中的与所述序列号字段对应的属性内容字段中;
扩展属性查询模块,用于以所述序列号为查询主键在预设的扩展属性表中查找,获得与所述序列号对应的扩展属性;
其中,所述序列号与一个所述标识符的扩展属性构成一条映射记录,当所述标识符具有多个扩展属性时,所述标识符的序列号对应多条映射记录。
19.根据权利要求18所述的数据访问系统,其特征在于,所述扩展属性包括属性名和对应的属性值;所述扩展属性查询模块用于以所述序列号和所述属性名为查询主键在所述预设的扩展属性表中查询,获得对应的属性值。
20.根据权利要求18所述的数据访问系统,其特征在于,还包括判断模块,所述判断模块用于以所述序列号为查询主键在预设的属性类别表中查找,获得与所述序列号对应的属性类别,并根据获得的属性类别判断是否调用所述扩展属性查询模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210278885.2A CN103577483B (zh) | 2012-08-07 | 2012-08-07 | 数据存储方法和系统以及数据访问的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210278885.2A CN103577483B (zh) | 2012-08-07 | 2012-08-07 | 数据存储方法和系统以及数据访问的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103577483A CN103577483A (zh) | 2014-02-12 |
CN103577483B true CN103577483B (zh) | 2018-07-24 |
Family
ID=50049281
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210278885.2A Active CN103577483B (zh) | 2012-08-07 | 2012-08-07 | 数据存储方法和系统以及数据访问的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103577483B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105320675A (zh) * | 2014-07-03 | 2016-02-10 | 南京中兴力维软件有限公司 | 数据库应用系统属性扩展管理方法及其装置 |
CN105701112A (zh) * | 2014-11-26 | 2016-06-22 | 华为软件技术有限公司 | 一种数据处理方法、装置及系统 |
CN104778253B (zh) * | 2015-04-20 | 2018-09-14 | 北京京东尚科信息技术有限公司 | 一种提供数据的方法和装置 |
CN108984504A (zh) * | 2018-07-12 | 2018-12-11 | 广东电网有限责任公司 | 一种模型参数存储方法、装置及设备 |
CN109413077B (zh) * | 2018-11-07 | 2021-05-14 | 北京奇艺世纪科技有限公司 | 一种json报文数据的收发方法、装置及电子设备 |
CN110213267B (zh) * | 2019-05-31 | 2022-10-04 | 广州华多网络科技有限公司 | 白名单业务处理方法、服务器以及计算机存储介质 |
CN110555015B (zh) * | 2019-09-09 | 2023-11-03 | 腾讯科技(深圳)有限公司 | 数据库实体管理方法、装置、电子设备及存储介质 |
CN112506934A (zh) * | 2020-12-18 | 2021-03-16 | 中国科学院软件研究所 | 一种面向软件定义卫星的测控及载荷数据存储方法与装置 |
CN112765176B (zh) * | 2021-01-22 | 2023-02-03 | 浪潮通用软件有限公司 | 一种微服务模式下属性扩展方法、装置及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1996281A (zh) * | 2005-12-26 | 2007-07-11 | 北大方正集团有限公司 | 建立内容管理系统的方法 |
CN101504672A (zh) * | 2009-03-23 | 2009-08-12 | 金蝶软件(中国)有限公司 | 一种动态配置实体数据表的方法和系统 |
CN101770359A (zh) * | 2008-12-30 | 2010-07-07 | 华为技术有限公司 | 界面生成和获取数据进行存储的方法、装置和系统 |
CN102081644A (zh) * | 2010-11-25 | 2011-06-01 | 浙江鸿程计算机系统有限公司 | 一种数义分离的数据存储方法 |
CN102253980A (zh) * | 2011-06-23 | 2011-11-23 | 上海西本网络科技有限公司 | 数据处理方法及数据处理系统 |
-
2012
- 2012-08-07 CN CN201210278885.2A patent/CN103577483B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1996281A (zh) * | 2005-12-26 | 2007-07-11 | 北大方正集团有限公司 | 建立内容管理系统的方法 |
CN101770359A (zh) * | 2008-12-30 | 2010-07-07 | 华为技术有限公司 | 界面生成和获取数据进行存储的方法、装置和系统 |
CN101504672A (zh) * | 2009-03-23 | 2009-08-12 | 金蝶软件(中国)有限公司 | 一种动态配置实体数据表的方法和系统 |
CN102081644A (zh) * | 2010-11-25 | 2011-06-01 | 浙江鸿程计算机系统有限公司 | 一种数义分离的数据存储方法 |
CN102253980A (zh) * | 2011-06-23 | 2011-11-23 | 上海西本网络科技有限公司 | 数据处理方法及数据处理系统 |
Also Published As
Publication number | Publication date |
---|---|
CN103577483A (zh) | 2014-02-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103577483B (zh) | 数据存储方法和系统以及数据访问的方法和系统 | |
US8719691B2 (en) | Document providing system and computer-readable storage medium | |
US11003625B2 (en) | Method and apparatus for operating on file | |
WO2017167171A1 (zh) | 一种数据操作方法,服务器及存储系统 | |
EP2151767A1 (en) | Method and apparatus for realizing sharing edit of document | |
US20070288835A1 (en) | Apparatus, computer readable medium, data signal, and method for document management | |
CN104391725A (zh) | 页面展示方法和页面展示装置 | |
CN106970958B (zh) | 一种流文件的查询与存储方法和装置 | |
CN106446044B (zh) | 存储空间回收方法及装置 | |
US8560496B2 (en) | Database query across processes with change notification | |
CN110598107A (zh) | 查询系统的管理方法和计算机存储介质 | |
CN111752597A (zh) | 业务的灰度发布方法、装置、设备及计算机可读存储介质 | |
CN106161193B (zh) | 一种邮件处理方法、装置和系统 | |
WO2020215580A1 (zh) | 一种分布式全局数据去重方法和装置 | |
US20080294673A1 (en) | Data transfer and storage based on meta-data | |
US7979405B2 (en) | Method for automatically associating data with a document based on a prescribed type of the document | |
CN101483668A (zh) | 热点数据的网络存储和访问方法、设备及系统 | |
CN107479827A (zh) | 一种基于io和元数据分离的混合存储系统实现方法 | |
CN112579633A (zh) | 一种数据检索方法、装置、设备及存储介质 | |
US11556515B2 (en) | Artificially-intelligent, continuously-updating, centralized-database-identifier repository system | |
JP5887236B2 (ja) | 業務文書処理装置、業務文書処理方法及び業務文書処理プログラム | |
TW201403362A (zh) | 在多主控環境中通過以頁面爲基礎之信息追蹤管理大型資料集 | |
CN112269758B (zh) | 一种基于文件分级的文件迁移方法及相关装置 | |
CN113450130B (zh) | 一种页面广告投放方法、装置、设备及存储介质 | |
CN115623008B (zh) | 一种Kubernetes资源的索引构建方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20211230 Address after: 19F, Kungang science and technology building, No. 777, Huancheng South Road, Xishan District, Kunming, Yunnan 650118 Patentee after: Yunnan Tengyun Information Industry Co.,Ltd. Address before: 2, 518044, East 403 room, SEG science and Technology Park, Zhenxing Road, Shenzhen, Guangdong, Futian District Patentee before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. |
|
TR01 | Transfer of patent right |