CN103902554A - 数据访问方法与装置 - Google Patents

数据访问方法与装置 Download PDF

Info

Publication number
CN103902554A
CN103902554A CN201210573013.9A CN201210573013A CN103902554A CN 103902554 A CN103902554 A CN 103902554A CN 201210573013 A CN201210573013 A CN 201210573013A CN 103902554 A CN103902554 A CN 103902554A
Authority
CN
China
Prior art keywords
key word
user data
data
configuration file
sub
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
CN201210573013.9A
Other languages
English (en)
Other versions
CN103902554B (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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201210573013.9A priority Critical patent/CN103902554B/zh
Publication of CN103902554A publication Critical patent/CN103902554A/zh
Application granted granted Critical
Publication of CN103902554B publication Critical patent/CN103902554B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种数据访问方法与装置,其中,数据访问方法包括:根据数据定义获取用户数据的关键字,其中,所述数据定义定义了某业务的用户数据对应的关键字和所述业务的配置文件对应的关键字,其中,同一业务的用户数据对应的关键字与该业务的配置文件对应的关键字相同;根据所述用户数据的关键字获取用户数据,生成用户数据树;按照所述关键字,对所述用户数据树和/或所述配置文件进行访问。通过本发明,实现了用户数据和配置数据进行统一访问和管理。

Description

数据访问方法与装置
技术领域
本发明涉及客户端应用技术领域,特别是涉及一种数据访问方法与装置。
背景技术
客户端应用是部署在客户端的实现特定功能的软件,如阿里旺旺、QQ、杀毒软件等等。客户端应用一般由各个复杂的业务组合而成,如更换软件界面外观业务的流程包括:访问相关服务器、提供各种外观、根据用户选择推送相关外观数据、记录用户选择等等。
客户端应用的每个业务都有配置数据的依赖和用户数据的产生,目前对配置数据和用户数据的处理办法主要有:方法一、配置数据存储在各个业务的配置文件中,每个业务都自己存取和解析数据,用户数据和配置数据各自管理;方法二、用户数据和配置数据都借助第三方数据库存储。上述方法中,方法一对客户端应用的配置数据编辑操作简单灵活,但会出现配置文件众多而且散乱,使得配置数据难于维护和管理;同时每个业务都得去操作磁盘文件和解析数据,使得编写的解析配置数据软件的代码杂乱,同时执行效率低下;方法二的配置数据虽然已经集中管理,有了统一的数据解析,但由于用户数据和配置数据存储在一个数据库文件中,因此编辑配置数据操作复杂,且配置数据后期有更改时,无法及时的更新到客户端的机器上。
因此,现有的数据处理方法当每个业务都去解析和存取自身的数据时,数据会零乱,而且效率低下,无法快速地把数据清晰和高效的管理起来,从而导致无法提高软件开发过程中的效率。
发明内容
本发明提供了一种数据访问方法与装置,以解决现有的数据处理方案效率低下,无法快速地把数据清晰和高效的管理起来的问题。
为了解决上述问题,本发明公开了一种数据访问方法,包括:根据数据定义获取用户数据的关键字,其中,所述数据定义定义了某业务的用户数据对应的关键字和所述业务的配置文件对应的关键字,其中,同一业务的用户数据对应的关键字与该业务的配置文件对应的关键字相同;根据所述用户数据的关键字获取用户数据,生成用户数据树;按照所述关键字,对所述用户数据树和/或所述配置文件进行访问。
优选地,所述根据所述用户数据的关键字获取用户数据,生成用户数据树的步骤包括:对所述用户数据的关键字进行解析,根据所述关键字中的分隔符依次将所述关键字解析为一至多级关键字;其中,若所述关键字解析为一级关键字,则所述一级关键字为父关键字;若所述关键字解析为多级关键字,则所述多级关键字包括最高级别的父关键字和一个或多个按照级别高低排序的子关键字,其中,一个级别的关键字对应的用户数据包括本级别的用户数据和低于本级别的关键字对应的用户数据;确定各级关键字对应的用户数据,按照所述各级关键字的级别生成所述用户数据的用户数据树。
优选地,所述按照所述关键字,对所述用户数据树和/或所述配置文件进行访问的步骤包括:当对所述用户数据树和/或所述配置文件进行读取访问时,根据所述关键字判断是否存在对应的用户数据树;若存在,则判断所述用户数据树的父关键字结点下是否存在子关键字结点;若不存在所述子关键字结点,则返回所述父关键字结点对应的用户数据;若存在所述子关键字结点,则确定待访问的子关键字结点,返回所述待访问的子关键字结点对应的用户数据;若不存在对应的用户数据树,则根据所述关键字访问所述配置文件,返回所述配置文件中的配置数据。
优选地,所述配置文件对应的关键字按照所述关键字中的分隔符分为一至多级关键字,其中,若所述关键字分为一级关键字,则所述一级关键字为父关键字;若所述关键字分为多级关键字,则所述多级关键字包括最高级别的父关键字和一个或多个按照级别高低排序的子关键字;所述配置文件中的配置数据按照所述一至多级关键字对应存储,其中,一个级别的关键字对应的配置数据包括本级别的配置数据和低于本级别的关键字对应的配置数据;所述根据所述关键字访问所述配置文件,返回所述配置文件中的配置数据的步骤包括:判断所述父关键字下是否存在所述子关键字;若不存在所述子关键字,则返回所述父关键字对应的配置数据;若存在所述子关键字,则确定待访问的子关键字,返回所述待访问的子关键字对应的配置数据。
优选地,所述若不存在对应的用户数据树,则根据所述关键字访问所述配置文件,返回所述配置文件中的配置数据的步骤包括:若不存在对应的用户数据树,则判断缓存中是否存在所述关键字对应的配置数据;若存在,则返回所述配置数据;若不存在,则根据所述关键字访问所述配置文件,返回所述配置文件中的配置数据,并将所述配置数据加入所述缓存中。
优选地,所述按照所述关键字,对所述用户数据树和/或所述配置文件进行访问的步骤包括:当对所述用户数据树进行写入访问时,根据所述关键字判断是否存在对应的用户数据树;若存在,则判断所述用户数据树的父关键字结点下是否存在子关键字结点;若不存在所述子关键字结点,则在所述父关键字结点写入数据;若存在所述子关键字结点,则确定待写入的子关键字结点,在所述待写入的子关键字结点写入数据;若不存在对应的用户数据树,则根据所述关键字和所述关键字对应的用户数据生成对应的用户数据树,确定待写入的关键字结点并写入数据。
优选地,所述数据定义还定义了所述各个业务的用户数据使用的数据库和所述数据库的路径,以及,所述各个业务的配置文件的存放路径和格式;所述根据所述用户数据的关键字获取用户数据,生成用户数据树的步骤包括:根据所述用户数据的关键字确定所述用户数据使用的数据库和所述数据库的路径;按照所述数据库的路径,访问所述数据库获取所述用户数据,生成所述用户数据树;所述按照所述关键字,对所述配置文件进行访问的步骤包括:按照所述关键字,确定所述配置文件的存放路径和格式;根据所述存放路径,调用与所述配置文件的格式相匹配的文件打开所述配置文件,对所述配置文件进行访问。
为了解决上述问题,本发明还公开了一种数据访问装置,包括:获取模块,用于根据数据定义获取用户数据的关键字,其中,所述数据定义定义了某业务的用户数据对应的关键字和所述业务的配置文件对应的关键字,其中,同一业务的用户数据对应的关键字与该业务的配置文件对应的关键字相同;生成模块,用于根据所述用户数据的关键字获取用户数据,生成用户数据树;访问模块,用于按照所述关键字,对所述用户数据树和/或所述配置文件进行访问。
优选地,所述生成模块,用于对所述用户数据的关键字进行解析,根据所述关键字中的分隔符依次将所述关键字解析为一至多级关键字;其中,若所述关键字解析为一级关键字,则所述一级关键字为父关键字;若所述关键字解析为多级关键字,则所述多级关键字包括最高级别的父关键字和一个或多个按照级别高低排序的子关键字,其中,一个级别的关键字对应的用户数据包括本级别的用户数据和低于本级别的关键字对应的用户数据;确定各级关键字对应的用户数据,按照所述各级关键字的级别生成所述用户数据的用户数据树。
优选地,所述访问模块,用于当对所述用户数据树和/或所述配置文件进行读取访问时,根据所述关键字判断是否存在对应的用户数据树;若存在,则判断所述用户数据树的父关键字结点下是否存在子关键字结点;若不存在所述子关键字结点,则返回所述父关键字结点对应的用户数据;若存在所述子关键字结点,则确定待访问的子关键字结点,返回所述待访问的子关键字结点对应的用户数据;若不存在对应的用户数据树,则根据所述关键字访问所述配置文件,返回所述配置文件中的配置数据。
优选地,所述配置文件对应的关键字按照所述关键字中的分隔符分为一至多级关键字,其中,若所述关键字分为一级关键字,则所述一级关键字为父关键字;若所述关键字分为多级关键字,则所述多级关键字包括最高级别的父关键字和一个或多个按照级别高低排序的子关键字;所述配置文件中的配置数据按照所述一至多级关键字对应存储,其中,一个级别的关键字对应的配置数据包括本级别的配置数据和低于本级别的关键字对应的配置数据;所述访问模块在根据所述关键字访问所述配置文件,返回所述配置文件中的配置数据时,判断所述父关键字下是否存在所述子关键字;若不存在所述子关键字,则返回所述父关键字对应的配置数据;若存在所述子关键字,则确定待访问的子关键字,返回所述待访问的子关键字对应的配置数据。
优选地,所述访问模块在若不存在对应的用户数据树,则根据所述关键字访问所述配置文件,返回所述配置文件中的配置数据时,若不存在对应的用户数据树,则判断缓存中是否存在所述关键字对应的配置数据;若存在,则返回所述配置数据;若不存在,则根据所述关键字访问所述配置文件,返回所述配置文件中的配置数据,并将所述配置数据加入所述缓存中。
优选地,所述访问模块,用于当对所述用户数据树进行写入访问时,根据所述关键字判断是否存在对应的用户数据树;若存在,则判断所述用户数据树的父关键字结点下是否存在子关键字结点;若不存在所述子关键字结点,则在所述父关键字结点写入数据;若存在所述子关键字结点,则确定待写入的子关键字结点,在所述待写入的子关键字结点写入数据;若不存在对应的用户数据树,则根据所述关键字和所述关键字对应的用户数据生成对应的用户数据树,确定待写入的关键字结点并写入数据。
优选地,所述数据定义还定义了所述各个业务的用户数据使用的数据库和所述数据库的路径,以及,所述各个业务的配置文件的存放路径和格式;
所述生成模块,用于根据所述用户数据的关键字确定所述用户数据使用的数据库和所述数据库的路径;按照所述数据库的路径,访问所述数据库获取所述用户数据,生成所述用户数据树;所述访问模块在按照所述关键字,对所述配置文件进行访问时,按照所述关键字,确定所述配置文件的存放路径和格式;根据所述存放路径,调用与所述配置文件的格式相匹配的文件打开所述配置文件,对所述配置文件进行访问。
与现有技术相比,本发明具有以下优点:
本发明提供了一种用户数据和配置数据统一管理和访问的方案,该方案通过数据定义预先设定各用户数据和各配置文件的关键字,其中,同一业务的用户数据和配置文件的关键字相同且唯一,进而,该方案使用设定好的关键字获取相应的用户数据,生成用户数据树;然后,利用关键字统一访问用户数据和配置数据。使用关键字对用户数据和配置数据进行统一访问和管理,使得数据访问和管理简单明了;通过数据定义,能快速地将本发明的数据访问方案集成到各种客户端应用当中,且能实现配置文件编辑操作简单灵活,及时更新客户端应用。
附图说明
图1是根据本发明实施例的一种***数据结构图;
图2是根据本发明实施例一的一种数据访问方法的步骤流程图;
图3是根据本发明实施例二的一种数据访问方法的步骤流程图;
图4是根据本发明实施例三的一种数据读取方法的步骤流程图;
图5是根据本发明实施例四的一种数据写入方法的步骤流程图;
图6是根据本发明实施例五的一种数据访问装置的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
为便于理解本发明的数据访问方案,首先对本发明的***数据结构作以说明。如图1所示,本发明的***包括数据定义、配置文件如软件配置数据包、用户数据三个结构。其中,数据定义至少定义了各个业务的用户数据对应的关键字和各个业务的配置文件对应的关键字,并且,同一业务的用户数据对应的关键字与该业务的配置文件对应的关键字相同。如,对于更改外观业务,则该业务对应的用户数据和配置文件使用相同的关键字。客户端应用可以根据该数据定义所定义好的关键字统一对用户数据和/或配置文件进行访问。
以下以实施例对本发明的数据访问方案进行说明。
实施例一
参照图2,示出了根据本发明实施例一的一种数据访问方法的步骤流程图。
本实施例的数据访问方法包括以下步骤:
步骤S102:根据数据定义获取用户数据的关键字。
其中,数据定义定义(也可以理解为设定)了某个业务的用户数据对应的关键字和所述业务的配置文件对应的关键字,其中,同一业务的用户数据对应的关键字与该业务的配置文件对应的关键字相同。
业务通常是指软件的各个具体的功能,比如:即时通讯软件中的自动回复功能、安全域名的检查功能、换界面皮肤功能;一个业务的用户数据可以包括客户编辑的自动回复内容,客户选择的某个皮肤等数据;配置文件中包括有哪些域名是安全的域名,界面皮肤有几种等数据。
步骤S104:根据用户数据的关键字获取用户数据,生成用户数据树。
步骤S106:按照所述关键字,对用户数据树和/或配置文件进行访问。
例如,当要访问更改外观业务的用户数据时,先获取数据定义中所定义的更改外观业务的用户数据对应的关键字;然后,根据该关键字到相应的数据库中获取用户数据,进而生成用户数据树;因用户数据树依据关键字生成,因此,可以再根据该关键字确定待访问的用户数据树中的结点,进行访问;若对用户数据树访问失败,可以再根据该关键字访问配置文件,进而获取相应的数据。当然,在只需要配置数据时,也可以根据该关键字,只对配置文件进行访问。
通过本实施例,提供了一种用户数据和配置数据统一管理和访问的方案,该方案通过数据定义预先设定各用户数据和各配置文件的关键字,其中,同一业务的用户数据和配置文件的关键字相同且唯一,进而,该方案使用设定好的关键字获取相应的用户数据,生成用户数据树;然后,利用关键字统一访问用户数据和配置数据。使用关键字对用户数据和配置数据进行统一访问和管理,使得数据访问和管理简单明了;通过数据定义,能快速地将本发明的数据访问方案集成到各种客户端应用当中,且能实现配置文件编辑操作简单灵活,及时更新客户端应用。
实施例二
参照图3,示出了根据本发明实施例二的一种数据访问方法的步骤流程图。
本实施例的数据访问方法包括以下步骤:
步骤S202:进行数据定义。
本步骤中,数据定义定义了各个业务的用户数据对应的关键字和各个业务的配置文件对应的关键字,其中,同一业务的用户数据对应的关键字与该业务的配置文件对应的关键字相同。数据定义定义的某种业务的用户数据对应的关键字和该业务的配置文件对应的关键字如下:
Figure BDA00002645914400081
其中DefinedConfigSources定义数据的位置和格式,DefinedConfigFileKeys定义配置文件对于的KEY。
在进行数据定义时,可以按照一定的规则自动对各个业务的用户数据和配置文件进行关键字定义。不同业务的用户数据和配置文件具有不同的关键字。
优选地,数据定义还可以定义各个业务的用户数据使用的数据库和数据库的路径,以及,各个业务的配置文件的存放路径和格式。
步骤S204:接收用户输入的访问请求,确定待访问的用户数据。
如,某客户端应用的运行维护人员输入访问请求,请求访问某一客户端应用的用户设置的客户端应用外观,则根据该访问请求,可以确定待访问的用户数据是某一账号的客户端应用的外观设置数据。此时,用户数据并不是具体的数据,仅为用户数据的标识,如用户数据名或其它。
步骤S206:根据数据定义获取用户数据的关键字。
根据步骤S202中数据定义的对应关系,确定待访问的用户数据的关键字。
步骤S208:对用户数据的关键字进行解析,根据关键字中的分隔符依次将关键字解析为一至多级关键字。
其中,若关键字解析为一级关键字,则一级关键字为父关键字;若关键字解析为多级关键字,则多级关键字包括最高级别的父关键字和一个或多个按照级别高低排序的子关键字,其中,任意一个级别的关键字对应的用户数据包括本级别的用户数据和低于本级别的关键字对应的用户数据。也即,用户数据也按照关键字级别进行了对应分级,用户数据树中一个结点对应的用户数据除包括本结点的具体用户数据外,还包括从属于该结点的子结点对应的具体用户数据。
步骤S210:确定各级关键字对应的用户数据,按照各级关键字的级别生成用户数据的用户数据树。
优选地,当数据定义定义了各个业务的用户数据使用的数据库和数据库的路径时,可以根据用户数据的关键字确定用户数据使用的数据库和数据库的路径;按照数据库的路径,采用与数据库相适应的数据库访问方式访问数据库,进而获取用户数据,最终生成用户数据树。
步骤S212:按照所述关键字,对用户数据树和/或配置文件进行访问。
其中,所述关键字即步骤S206中获取的用户数据的关键字。
按照所述关键字,对用户数据树和/或配置文件进行访问包括:
(1)当对用户数据树和/或配置文件进行读取访问时
根据所述关键字判断是否存在对应的用户数据树;
若存在对应的用户数据树,则判断用户数据树的父关键字结点下是否存在子关键字结点;若不存在子关键字结点,则返回父关键字结点对应的用户数据;若存在子关键字结点,则确定待访问的子关键字结点(可以通过常用的对树形数据进行查找的方式查找确定待访问的子关键字结点,当无法查找到最终的子关键字结点时,可以确定最后查找到的那个结点为待访问的子关键字结点,因为该结点的数据包含有其可能存在的所有下属结点的数据),返回待访问的子关键字结点对应的用户数据;
若不存在对应的用户数据树,则根据所述关键字访问配置文件,返回配置文件中的配置数据。
优选地,配置文件对应的关键字按照所述关键字中的分隔符分为一至多级关键字,其中,若关键字分为一级关键字,则一级关键字为父关键字;若关键字分为多级关键字,则多级关键字包括最高级别的父关键字和一个或多个按照级别高低排序的子关键字;配置文件中的配置数据按照一至多级关键字对应存储,其中,一个级别的关键字对应的配置数据包括本级别的配置数据和低于本级别的关键字对应的配置数据;则根据所述关键字访问配置文件,返回配置文件中的配置数据时,先判断父关键字下是否存在子关键字;若不存在子关键字,则返回父关键字对应的配置数据;若存在子关键字,则确定待访问的子关键字(确定方法同上述用户数据树的确定方法),返回待访问的子关键字对应的配置数据。
优选地,若不存在对应的用户数据树时,还可以判断缓存中是否存在所述关键字对应的配置数据;若缓存中存在,则直接返回缓存中相应的配置数据;若缓存中不存在,则再根据所述关键字访问配置文件,返回配置文件中的配置数据,并将配置数据加入缓存中。通过数据的缓存机制,减少了客户端应用对磁盘文件的操作,提升了客户端应用的性能。
优选地,当数据定义定义了各个业务的配置文件的存放路径和格式时,则按照所述关键字,对配置文件进行访问可以采用:按照所述关键字,确定配置文件的存放路径和格式;根据存放路径,调用与配置文件的格式相匹配的文件打开配置文件,对配置文件进行访问。如配置文件的格式为ZIP格式,则可以调用WINRAR打开该配置文件,进而对该配置文件进行访问。
(2)当对用户数据树进行写入访问时
根据关键字判断是否存在对应的用户数据树;
若存在对应的用户数据树,则判断用户数据树的父关键字结点下是否存在子关键字结点;若不存在子关键字结点,则在父关键字结点写入数据;若存在子关键字结点,则确定待写入的子关键字结点,在待写入的子关键字结点写入数据;
若不存在对应的用户数据树,则根据关键字和关键字对应的用户数据生成对应的用户数据树,确定待写入的关键字结点并写入数据。
其中,生成用户数据树和确定待写入的关键字结点的方式可参照(1)中描述,在此不再赘述。
通过本实施例,实现了在客户端应用的管理、维护和开发过程中,可以通过统一配置管理的方法,快速地把数据清晰和高效地管理起来,从而提高了客户端应用的管理、维护和开发的效率,同时提高了客户端应用的文件读写性能。一方面,本实施例对配置文件和用户数据进行了统一地管理和解析,便于对数据的维护,同时可以通过数据的缓存机制减少了客户端应用对磁盘文件的操作,提升了客户端应用的性能;另一方面,本实施例对客户端应用的配置文件和用户数据分开存储,其中,配置文件以文件形式存储,用户数据以数据库形式存储,但通过数据定义定义了统一的数据访问形式,使得数据的访问有统一的接口,同时保持了对客户端应用的配置文件编辑操作简单灵活性,后期有客户端应用的配置数据更新时也能及时地更新到客户端机器上。
实施例三
参照图4,示出了根据本发明实施例三的一种数据读取方法的步骤流程图。
本实施例从数据读取方面对本发明的数据访问方案作以说明,本实施例的数据读取方法包括以下步骤:
步骤S302:根据数据定义,获取待访问的用户数据和配置文件对应的KEY(关键字)。
步骤S304:根据用户数据的KEY获取全部的用户数据。
步骤S306:把用户数据的KEY根据分隔符如“|”解析为父KEY和多个子KEY。
本实施例以多级KEY为例,但本领域技术人员应当明了,在某些情况下,可能只有父KEY。
步骤S308:根据解析出的父KEY和多个子KEY,将用户数据生成一个用户数据树。
步骤S310:在用户数据树中查找父KEY,判断是否查找到,若是,则执行步骤S312;若否,则执行步骤S320。
步骤S312:判断父KEY是否有子KEY,若有,则执行步骤S316;若没有,则执行步骤S314。
步骤S314:父KEY没有子KEY,返回父KEY对应的用户数据,结束流程。
如果父KEY没有子KEY,则读取父KEY对应的用户数据,并解析数据找到待访问的子KEY对应的用户数据返回。
步骤S316:父KEY有子KEY,则继续查找,判断是否还有下级子KEY,若有,则返回步骤S312;若没有,则执行步骤S318。
步骤S318:读取子KEY对应的用户数据,从该用户数据中解析出待访问的子KEY对应的用户数据并返回该用户数据,结束流程。
步骤S320:如果父KEY没有找到,则判断配置文件缓存数据中是否有与父KEY相对应的配置数据,如果有,则返回该配置数据;如果没有,则执行步骤S322。
步骤S322:如果缓存中没有与父KEY相对应的配置数据,则根据数据定义查找父KEY对应的配置文件。
步骤S324:判断与父KEY对应的配置文件是否查找到,若否,则返回失败消息,结束流程;若是,则执行步骤S326。
步骤S326:读取配置文件中的配置数据。
步骤S328:判断配置数据中,父KEY是否有子KEY,若没有,则执行步骤S330;若有,则执行步骤S332。
步骤S330:如果没有子KEY,则返回整个文件数据,并根据访问频率和时间,把数据置换到缓存中。
步骤S332:如果有子KEY,则把文件数据解析出子KEY对应的配置数据,返回数据,并根据访问频率和时间,把数据置换到缓存中。
通过本实施例,提供了一种用户数据和配置文件的配置数据的统一数据读取方案,利用KEY统一访问用户数据和配置文件数据,使得数据访问简单明了;提供了数据定义,能快速地将本实施例的方案集成到各种客户端应用当中;对配置文件的配置数据的访问做了缓存处理,能减少客户端应用对磁盘文件的访问,提升了客户端应用的性能。
实施例四
参照图5,示出了根据本发明实施例四的一种数据写入方法的步骤流程图。
本实施例从数据写入方面对本发明的数据访问方案作以说明,本实施例的数据写入方法包括以下步骤:
步骤S402:根据数据定义,获取到待访问的用户数据和配置文件对应的KEY(关键字)。
步骤S404:根据用户数据的KEY获取全部的用户数据。
步骤S406:把用户数据的KEY根据分隔符如“|”解析为父KEY和多个子KEY。
本实施例以多级KEY为例,但本领域技术人员应当明了,在某些情况下,可能只有父KEY。
步骤S408:根据解析出的父KEY和多个子KEY,将用户数据生成一个用户数据树。
步骤S410:判断在用户数据树中是否查找到父KEY,若查找到,执行步骤S412;若没有查找到,执行步骤S420。
步骤S412:判断父KEY是否有子KEY,若没有,则执行步骤S414;若有,则执行步骤S416。
步骤S414:父KEY没有子KEY,则在当前节点(即父KEY)设置数据,并把当前节点的所有子节点数据删除。
也即,把数据写入该父KEY。
步骤S416:父KEY有子KEY则继续查找子KEY,判断是否该子KEY是否还有下级子KEY,若有,则返回步骤S412;若没有,则执行步骤S418。
步骤S418:如果子KEY未找到,则在数据树中创建子KEY相应的节点,并在创建的节点设置数据。
步骤S420:如果父KEY未找到,则在数据树中创建父KEY相应的节点。
步骤S422:判断父KEY是否有子KEY,若有,则执行步骤S424;若没有,则执行步骤S426。
步骤S424:如果父KEY有子KEY,则在数据树中创建子KEY对应的节点,直到所有子KEY节点建立完成后,把数据设置到最后的节点上,结束流程。
步骤S426:如果父KEY没有子KEY,则把数据设置到父KEY相应的节点上。
例如,要设置KEY为KA|KA1|KA11的数据,对该KEY分析可知,该KEY包括父KEY KA,子KEY KA1和子子KEY KA11,如果在数据树中没有找到这些KEY,那在树中创建这些KEY相应的节点,把数据最终设置到KA11上,如有下次要设置KEY KA|KA1的数据,则会找到KA1相应的节点,然后把KA11节点删除,把数据设到KA1上,这是因为这里认定KA1节点相应的数据包含了KA11相应节点的数据,而且KA1节点相应的数是最新的数据,所以这里以最新的数据为准,把老的数据做了删除。
通过本实施例,提供了一种用户数据和配置文件的配置数据的统一数据写入方案,利用KEY统一访问用户数据和配置文件数据,使得数据访问简单明了;提供了数据定义,能快速地将本实施例的方案集成到各种客户端应用当中;写入数据时,做了父KEY数据和子KEY数据的合并,保证了最新数据的唯一性。
实施例五
参照图6,示出了根据本发明实施例五的一种数据访问装置的结构框图。
本实施例的数据访问装置包括:获取模块502,用于根据数据定义获取用户数据的关键字,其中,数据定义定义了某个业务的用户数据对应的关键字和所述业务的配置文件对应的关键字,其中,同一业务的用户数据对应的关键字与该业务的配置文件对应的关键字相同;生成模块504,用于根据用户数据的关键字获取用户数据,生成用户数据树;访问模块506,用于按照所述关键字,对用户数据树和/或配置文件进行访问。
优选地,生成模块504,用于对用户数据的关键字进行解析,根据关键字中的分隔符依次将关键字解析为一至多级关键字;其中,若关键字解析为一级关键字,则一级关键字为父关键字;若关键字解析为多级关键字,则多级关键字包括最高级别的父关键字和一个或多个按照级别高低排序的子关键字,其中,一个级别的关键字对应的用户数据包括本级别的用户数据和低于本级别的关键字对应的用户数据;确定各级关键字对应的用户数据,按照各级关键字的级别生成用户数据的用户数据树。
优选地,访问模块506,用于当对用户数据树和/或配置文件进行读取访问时,根据关键字判断是否存在对应的用户数据树;若存在,则判断用户数据树的父关键字结点下是否存在子关键字结点;若不存在子关键字结点,则返回父关键字结点对应的用户数据;若存在子关键字结点,则确定待访问的子关键字结点,返回待访问的子关键字结点对应的用户数据;若不存在对应的用户数据树,则根据关键字访问配置文件,返回配置文件中的配置数据。
优选地,配置文件对应的关键字按照关键字中的分隔符分为一至多级关键字,其中,若关键字分为一级关键字,则一级关键字为父关键字;若关键字分为多级关键字,则多级关键字包括最高级别的父关键字和一个或多个按照级别高低排序的子关键字;配置文件中的配置数据按照一至多级关键字对应存储,其中,一个级别的关键字对应的配置数据包括本级别的配置数据和低于本级别的关键字对应的配置数据;访问模块506在根据关键字访问配置文件,返回配置文件中的配置数据时,判断父关键字下是否存在子关键字;若不存在子关键字,则返回父关键字对应的配置数据;若存在子关键字,则确定待访问的子关键字,返回待访问的子关键字对应的配置数据。
优选地,访问模块506在若不存在对应的用户数据树,则根据关键字访问配置文件,返回配置文件中的配置数据时,若不存在对应的用户数据树,则判断缓存中是否存在关键字对应的配置数据;若存在,则返回配置数据;若不存在,则根据关键字访问配置文件,返回配置文件中的配置数据,并将配置数据加入缓存中。
优选地,访问模块506,用于当对用户数据树进行写入访问时,根据关键字判断是否存在对应的用户数据树;若存在,则判断用户数据树的父关键字结点下是否存在子关键字结点;若不存在子关键字结点,则在父关键字结点写入数据;若存在子关键字结点,则确定待写入的子关键字结点,在待写入的子关键字结点写入数据;若不存在对应的用户数据树,则根据关键字和关键字对应的用户数据生成对应的用户数据树,确定待写入的关键字结点并写入数据。
优选地,数据定义还定义了各个业务的用户数据使用的数据库和数据库的路径,以及,各个业务的配置文件的存放路径和格式;生成模块504,用于根据用户数据的关键字确定用户数据使用的数据库和数据库的路径;按照数据库的路径,访问数据库获取用户数据,生成用户数据树;访问模块506在按照关键字,对配置文件进行访问时,按照关键字,确定配置文件的存放路径和格式;根据存放路径,调用与配置文件的格式相匹配的文件打开配置文件,对配置文件进行访问。
本实施例的数据访问装置用于实现前述多个方法实施例中相应的数据访问方法,并具有相应的方法实施例的有益效果,在此不再赘述。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上对本发明所提供的一种数据访问方法和装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (14)

1.一种数据访问方法,其特征在于,包括:
根据数据定义获取用户数据的关键字,其中,所述数据定义定义了某业务的用户数据对应的关键字和所述业务的配置文件对应的关键字,其中,同一业务的用户数据对应的关键字与该业务的配置文件对应的关键字相同;
根据所述用户数据的关键字获取用户数据,生成用户数据树;
按照所述关键字,对所述用户数据树和/或所述配置文件进行访问。
2.根据权利要求1所述的方法,其特征在于,所述根据所述用户数据的关键字获取用户数据,生成用户数据树的步骤包括:
对所述用户数据的关键字进行解析,根据所述关键字中的分隔符依次将所述关键字解析为一至多级关键字;其中,若所述关键字解析为一级关键字,则所述一级关键字为父关键字;若所述关键字解析为多级关键字,则所述多级关键字包括最高级别的父关键字和一个或多个按照级别高低排序的子关键字,其中,一个级别的关键字对应的用户数据包括本级别的用户数据和低于本级别的关键字对应的用户数据;
确定各级关键字对应的用户数据,按照所述各级关键字的级别生成所述用户数据的用户数据树。
3.根据权利要求2所述的方法,其特征在于,所述按照所述关键字,对所述用户数据树和/或所述配置文件进行访问的步骤包括:
当对所述用户数据树和/或所述配置文件进行读取访问时,根据所述关键字判断是否存在对应的用户数据树;
若存在,则判断所述用户数据树的父关键字结点下是否存在子关键字结点;若不存在所述子关键字结点,则返回所述父关键字结点对应的用户数据;若存在所述子关键字结点,则确定待访问的子关键字结点,返回所述待访问的子关键字结点对应的用户数据;
若不存在对应的用户数据树,则根据所述关键字访问所述配置文件,返回所述配置文件中的配置数据。
4.根据权利要求3所述的方法,其特征在于,所述配置文件对应的关键字按照所述关键字中的分隔符分为一至多级关键字,其中,若所述关键字分为一级关键字,则所述一级关键字为父关键字;若所述关键字分为多级关键字,则所述多级关键字包括最高级别的父关键字和一个或多个按照级别高低排序的子关键字;所述配置文件中的配置数据按照所述一至多级关键字对应存储,其中,一个级别的关键字对应的配置数据包括本级别的配置数据和低于本级别的关键字对应的配置数据;
所述根据所述关键字访问所述配置文件,返回所述配置文件中的配置数据的步骤包括:判断所述父关键字下是否存在所述子关键字;若不存在所述子关键字,则返回所述父关键字对应的配置数据;若存在所述子关键字,则确定待访问的子关键字,返回所述待访问的子关键字对应的配置数据。
5.根据权利要求4所述的方法,其特征在于,所述若不存在对应的用户数据树,则根据所述关键字访问所述配置文件,返回所述配置文件中的配置数据的步骤包括:
若不存在对应的用户数据树,则判断缓存中是否存在所述关键字对应的配置数据;
若存在,则返回所述配置数据;
若不存在,则根据所述关键字访问所述配置文件,返回所述配置文件中的配置数据,并将所述配置数据加入所述缓存中。
6.根据权利要求2所述的方法,其特征在于,所述按照所述关键字,对所述用户数据树和/或所述配置文件进行访问的步骤包括:
当对所述用户数据树进行写入访问时,根据所述关键字判断是否存在对应的用户数据树;
若存在,则判断所述用户数据树的父关键字结点下是否存在子关键字结点;若不存在所述子关键字结点,则在所述父关键字结点写入数据;若存在所述子关键字结点,则确定待写入的子关键字结点,在所述待写入的子关键字结点写入数据;
若不存在对应的用户数据树,则根据所述关键字和所述关键字对应的用户数据生成对应的用户数据树,确定待写入的关键字结点并写入数据。
7.根据权利要求1所述的方法,其特征在于,所述数据定义还定义了所述各个业务的用户数据使用的数据库和所述数据库的路径,以及,所述各个业务的配置文件的存放路径和格式;
所述根据所述用户数据的关键字获取用户数据,生成用户数据树的步骤包括:根据所述用户数据的关键字确定所述用户数据使用的数据库和所述数据库的路径;按照所述数据库的路径,访问所述数据库获取所述用户数据,生成所述用户数据树;
所述按照所述关键字,对所述配置文件进行访问的步骤包括:按照所述关键字,确定所述配置文件的存放路径和格式;根据所述存放路径,调用与所述配置文件的格式相匹配的文件打开所述配置文件,对所述配置文件进行访问。
8.一种数据访问装置,其特征在于,包括:
获取模块,用于根据数据定义获取用户数据的关键字,其中,所述数据定义定义了某业务的用户数据对应的关键字和所述业务的配置文件对应的关键字,其中,同一业务的用户数据对应的关键字与该业务的配置文件对应的关键字相同;
生成模块,用于根据所述用户数据的关键字获取用户数据,生成用户数据树;
访问模块,用于按照所述关键字,对所述用户数据树和/或所述配置文件进行访问。
9.根据权利要求8所述的装置,其特征在于,所述生成模块,用于对所述用户数据的关键字进行解析,根据所述关键字中的分隔符依次将所述关键字解析为一至多级关键字;其中,若所述关键字解析为一级关键字,则所述一级关键字为父关键字;若所述关键字解析为多级关键字,则所述多级关键字包括最高级别的父关键字和一个或多个按照级别高低排序的子关键字,其中,一个级别的关键字对应的用户数据包括本级别的用户数据和低于本级别的关键字对应的用户数据;确定各级关键字对应的用户数据,按照所述各级关键字的级别生成所述用户数据的用户数据树。
10.根据权利要求9所述的装置,其特征在于,所述访问模块,用于当对所述用户数据树和/或所述配置文件进行读取访问时,根据所述关键字判断是否存在对应的用户数据树;若存在,则判断所述用户数据树的父关键字结点下是否存在子关键字结点;若不存在所述子关键字结点,则返回所述父关键字结点对应的用户数据;若存在所述子关键字结点,则确定待访问的子关键字结点,返回所述待访问的子关键字结点对应的用户数据;若不存在对应的用户数据树,则根据所述关键字访问所述配置文件,返回所述配置文件中的配置数据。
11.根据权利要求10所述的装置,其特征在于,所述配置文件对应的关键字按照所述关键字中的分隔符分为一至多级关键字,其中,若所述关键字分为一级关键字,则所述一级关键字为父关键字;若所述关键字分为多级关键字,则所述多级关键字包括最高级别的父关键字和一个或多个按照级别高低排序的子关键字;所述配置文件中的配置数据按照所述一至多级关键字对应存储,其中,一个级别的关键字对应的配置数据包括本级别的配置数据和低于本级别的关键字对应的配置数据;
所述访问模块在根据所述关键字访问所述配置文件,返回所述配置文件中的配置数据时,判断所述父关键字下是否存在所述子关键字;若不存在所述子关键字,则返回所述父关键字对应的配置数据;若存在所述子关键字,则确定待访问的子关键字,返回所述待访问的子关键字对应的配置数据。
12.根据权利要求11所述的装置,其特征在于,所述访问模块在若不存在对应的用户数据树,则根据所述关键字访问所述配置文件,返回所述配置文件中的配置数据时,若不存在对应的用户数据树,则判断缓存中是否存在所述关键字对应的配置数据;若存在,则返回所述配置数据;若不存在,则根据所述关键字访问所述配置文件,返回所述配置文件中的配置数据,并将所述配置数据加入所述缓存中。
13.根据权利要求9所述的装置,其特征在于,所述访问模块,用于当对所述用户数据树进行写入访问时,根据所述关键字判断是否存在对应的用户数据树;若存在,则判断所述用户数据树的父关键字结点下是否存在子关键字结点;若不存在所述子关键字结点,则在所述父关键字结点写入数据;若存在所述子关键字结点,则确定待写入的子关键字结点,在所述待写入的子关键字结点写入数据;若不存在对应的用户数据树,则根据所述关键字和所述关键字对应的用户数据生成对应的用户数据树,确定待写入的关键字结点并写入数据。
14.根据权利要求8所述的装置,其特征在于,所述数据定义还定义了所述各个业务的用户数据使用的数据库和所述数据库的路径,以及,所述各个业务的配置文件的存放路径和格式;
所述生成模块,用于根据所述用户数据的关键字确定所述用户数据使用的数据库和所述数据库的路径;按照所述数据库的路径,访问所述数据库获取所述用户数据,生成所述用户数据树;
所述访问模块在按照所述关键字,对所述配置文件进行访问时,按照所述关键字,确定所述配置文件的存放路径和格式;根据所述存放路径,调用与所述配置文件的格式相匹配的文件打开所述配置文件,对所述配置文件进行访问。
CN201210573013.9A 2012-12-25 2012-12-25 数据访问方法与装置 Active CN103902554B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210573013.9A CN103902554B (zh) 2012-12-25 2012-12-25 数据访问方法与装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210573013.9A CN103902554B (zh) 2012-12-25 2012-12-25 数据访问方法与装置

Publications (2)

Publication Number Publication Date
CN103902554A true CN103902554A (zh) 2014-07-02
CN103902554B CN103902554B (zh) 2018-06-29

Family

ID=50993883

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210573013.9A Active CN103902554B (zh) 2012-12-25 2012-12-25 数据访问方法与装置

Country Status (1)

Country Link
CN (1) CN103902554B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105956140A (zh) * 2016-05-12 2016-09-21 无锡威泰迅电力科技有限公司 基于混合模式移动应用的本地存储数据的方法
CN108073635A (zh) * 2016-11-18 2018-05-25 中国电力科学研究院 一种电力信息***数据场景加载的***及其加载方法
CN108304186A (zh) * 2016-08-16 2018-07-20 阿里巴巴集团控股有限公司 一种基于合成配置文件执行多项操作的方法与设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1650295A (zh) * 2001-09-28 2005-08-03 克莱特动力有限公司 用于数据库查询和信息提交的方法和***
CN1652534A (zh) * 2004-02-03 2005-08-10 华为技术有限公司 保存字符串匹配规则及利用保存规则进行字串匹配的方法
US20110035424A1 (en) * 2005-04-01 2011-02-10 Microsoft Corporation User data profile namespace
CN102006281A (zh) * 2010-10-19 2011-04-06 中国联合网络通信集团有限公司 软终端数据处理方法和***以及装置
CN105447166A (zh) * 2015-12-03 2016-03-30 沈文策 一种基于关键字查找信息的方法及***

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1650295A (zh) * 2001-09-28 2005-08-03 克莱特动力有限公司 用于数据库查询和信息提交的方法和***
CN1652534A (zh) * 2004-02-03 2005-08-10 华为技术有限公司 保存字符串匹配规则及利用保存规则进行字串匹配的方法
US20110035424A1 (en) * 2005-04-01 2011-02-10 Microsoft Corporation User data profile namespace
CN102006281A (zh) * 2010-10-19 2011-04-06 中国联合网络通信集团有限公司 软终端数据处理方法和***以及装置
CN105447166A (zh) * 2015-12-03 2016-03-30 沈文策 一种基于关键字查找信息的方法及***

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105956140A (zh) * 2016-05-12 2016-09-21 无锡威泰迅电力科技有限公司 基于混合模式移动应用的本地存储数据的方法
CN105956140B (zh) * 2016-05-12 2019-03-22 无锡威泰迅电力科技有限公司 基于混合模式移动应用的本地存储数据的方法
CN108304186A (zh) * 2016-08-16 2018-07-20 阿里巴巴集团控股有限公司 一种基于合成配置文件执行多项操作的方法与设备
CN108304186B (zh) * 2016-08-16 2021-07-06 阿里巴巴集团控股有限公司 一种基于合成配置文件执行多项操作的方法与设备
CN108073635A (zh) * 2016-11-18 2018-05-25 中国电力科学研究院 一种电力信息***数据场景加载的***及其加载方法
CN108073635B (zh) * 2016-11-18 2021-08-27 中国电力科学研究院有限公司 一种电力信息***数据场景加载的***及其加载方法

Also Published As

Publication number Publication date
CN103902554B (zh) 2018-06-29

Similar Documents

Publication Publication Date Title
CN101276361B (zh) 一种显示相关关键词的方法及***
CN102122285B (zh) 一种数据缓存***中的数据查询***和数据查询方法
CN102929936B (zh) 日志记录方法、日志查询方法及***
CN105138592A (zh) 一种基于分布式架构的日志数据存储和检索方法
KR102195836B1 (ko) 인덱스 관리 방법
US11068536B2 (en) Method and apparatus for managing a document index
CN103164525B (zh) Web应用发布方法和装置
CN103678494A (zh) 客户端同步服务端数据的方法及装置
CN102638584A (zh) 数据分布缓存方法及***
CN107609302B (zh) 一种产品工艺结构生成方法及***
CN106649602B (zh) 业务对象数据处理方法、装置和服务器
CN101236569A (zh) 一种基于ContextFS上下文文件***的高效动态路径解析方法
CN105447166A (zh) 一种基于关键字查找信息的方法及***
CN102622219A (zh) 对动态调用服务的执行结果进行渲染的方法、装置及***
CN104636477A (zh) 一种信息推送前推送列表的去重方法
CN110134738A (zh) 分布式存储***资源预估方法、装置
CN109145053B (zh) 数据处理方法和装置、客户端、服务器
US20160301572A1 (en) Communication control device, communication control method, and computer program product
CN108399175B (zh) 一种数据存储、查询方法及其装置
CN103902554A (zh) 数据访问方法与装置
CN104239337A (zh) 基于tcam的查表处理方法及装置
CN107291454A (zh) 一种在事件的评论列表中添加评论的方法及评论***
CN116756253B (zh) 关系型数据库的数据存储、查询方法、装置、设备和介质
CN106095511A (zh) 一种服务器升级方法和装置
CN107239568B (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