CN105677805B - 一种利用protobuf的数据存储、读取方法及装置 - Google Patents

一种利用protobuf的数据存储、读取方法及装置 Download PDF

Info

Publication number
CN105677805B
CN105677805B CN201511032477.9A CN201511032477A CN105677805B CN 105677805 B CN105677805 B CN 105677805B CN 201511032477 A CN201511032477 A CN 201511032477A CN 105677805 B CN105677805 B CN 105677805B
Authority
CN
China
Prior art keywords
title
target
proto
configuration information
storage
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
Application number
CN201511032477.9A
Other languages
English (en)
Other versions
CN105677805A (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.)
Beijing QIYI Century Science and Technology Co Ltd
Original Assignee
Beijing QIYI Century Science and Technology Co 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 Beijing QIYI Century Science and Technology Co Ltd filed Critical Beijing QIYI Century Science and Technology Co Ltd
Priority to CN201511032477.9A priority Critical patent/CN105677805B/zh
Publication of CN105677805A publication Critical patent/CN105677805A/zh
Application granted granted Critical
Publication of CN105677805B publication Critical patent/CN105677805B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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

本发明实施例提供了一种利用protobuf的数据存储、读取方法及装置,利用protobuf的数据存储方法包括:获取待存储数据;构建用于存储待存储数据的目标消息实例并根据预定规则定义该目标消息实例的名称;从proto包文件中获得与所述目标消息实例的名称相关的目标存储标识所对应的目标关联配置信息,proto包文件存储有与消息实例的名称相关的存储标识以及与所述存储标识对应的关联配置信息;将目标消息实例存储到数据库中目标关联配置信息所指示的存储位置。与现有技术相比,本发明不需要配置文件,不需要人工维护proto源文件与配置文件的一致性,大大降低了人工维护成本。

Description

一种利用protobuf的数据存储、读取方法及装置
技术领域
本发明涉及数据存储技术领域,特别涉及一种利用protobuf的数据存储方法及装置、一种利用protobuf的数据读取方法及装置。
背景技术
protobuf是由Google开发提供的一套对数据结构进行序列化的方法,可以用做通信协议,数据存储格式等,并且,其具有不限系统语言、不限系统平台、扩展性强以及操作简单等优点。
现有技术中,protobuf中的proto源文件存放数据格式定义,即定义了与消息实例的名称相关的存储标识,其中,每一消息实例对应唯一的消息实例的名称,与消息实例的名称相关的存储标识为:消息实例的名称,或,关于消息实例的名称与消息实例对应的类的名称的组合信息,proto源文件编译后生成proto包文件。protobuf和数据库的关联配置信息保存在配置文件中,配置文件根据proto源文件和数据存储的实际需要编写,关联配置信息定义了与proto源文件中消息实例的名称相关的存储标识相对应的数据在数据库中的具体存储位置,例如数据库表的名称、该表中列的名称等。当用户利用protobuf进行数据存储时,系统获得待存储数据,同时构建一个消息实例,并根据预定规则定义该数据消息的名称,待存储数据存储在其中;系统获得该消息实例的名称后,获得配置文件中对应的关联配置信息,并将该消息实例中存储的数据存储到所获得关联配置信息所指示的存储位置,进而完成对数据的存储。相应的,当用户利用protobuf进行数据读取时,系统获得存储待读取数据的数据库表的名称,通过配置文件中的关联配置信息和proto包文件中的数据格式定义查找与待读取数据对应的消息实例的名称,从配置文件中获得与该消息实例的名称相关的目标存储标识相对应的关联配置信息,进而从该关联配置信息所指示的存储位置中读取该待读取数据。
可见,现有技术中proto包文件和配置文件是两个不同的文件,存储或读取数据时需分别导入系统中,若配置文件和proto包文件对应的proto源文件不同,存储或读取数据时就会发生配置文件与proto包文件不匹配的情况,造成存储或读取错误,例如,系统更新时,proto源文件被更新,同时proto包文件更新,但配置文件未更新,二者对应的proto源文件不同,此时就会发生存储或读取错误。为了防止这种错误的发生,需要人工维护配置文件与proto包文件的一致性,修改proto源文件中数据格式定义时,需要同时人工修改配置文件,维护成本很高。
发明内容
本发明实施例的目的在于提供一种利用protobuf的数据存储、读取方法及装置,解决了配置文件与proto包文件不一致的问题,从而降低了人工维护成本。具体技术方案如下:
第一方面,本发明实施例提供了一种利用protobuf的数据存储方法,包括:
获取待存储数据;
构建用于存储所述待存储数据的目标消息实例,并将所述待存储数据存储在所述目标消息实例中,其中,所述目标消息实例的名称基于预设规则定义;
从proto包文件中,获得与所述目标消息实例的名称相关的目标存储标识所对应的目标关联配置信息,其中,所述proto包文件存储有与消息实例的名称相关的存储标识以及与所述存储标识对应的关联配置信息,所述与消息实例的名称相关的存储标识为:消息实例的名称,或,关于消息实例的名称与消息实例对应的类的名称的组合信息;
将所述目标消息实例存储到与所述proto包文件所对应数据库中的所述目标关联配置信息所指示的存储位置。
其中,所述proto包文件为对包括有关联配置信息的proto源文件进行编译后得到的;
其中,利用custom option自定义属性机制,在proto源文件中加入与消息实例对应的类的名称相关的存储标识对应的关联配置信息。
其中,所述关联配置信息至少包括:数据库表的名称和该数据库表中列的名称。
其中,所述从proto包文件中获得与所述目标消息实例的名称相关的目标存储标识所对应的目标关联配置信息,包括:
调用预设的获取自定义属性的函数,从proto包文件中读取与所述目标消息实例的名称相关的目标存储标识所对应的目标关联配置信息;其中,所述获取自定义属性的函数为与当前计算机语言环境相对应的特定函数。
第二方面,本发明实施例提供了一种利用protobuf的数据读取方法,包括:
获取存储待读取数据的目标数据库表的名称;
从proto包文件中查找与所述目标数据库表的名称对应的目标消息实例的名称,其中,所述proto包文件存储有与消息实例的名称相关的存储标识以及与所述存储标识对应的关联配置信息,所述与消息实例的名称相关的存储标识为:消息实例的名称,或,关于消息实例的名称与消息实例对应的类的名称的组合信息;
从所述proto包文件中获得与所述目标消息实例的名称相关的目标存储标识所对应的目标关联配置信息;
从所述目标关联配置信息所指示的存储位置中读取所述待读取数据。
第三方面,本发明实施例提供了一种利用protobuf的数据存储装置,包括:
数据获取模块,用于获取待存储数据;
消息实例构建模块,用于构建用于存储所述待存储数据的目标消息实例,并将所述待存储数据存储在所述目标消息实例中,其中,所述目标消息实例的名称基于预设规则定义;
关联配置信息获得模块,用于从proto包文件中,获得与所述目标消息实例的名称相关的目标存储标识所对应的目标关联配置信息,其中,所述proto包文件存储有与消息实例的名称相关的存储标识以及与所述存储标识对应的关联配置信息,所述与消息实例的名称相关的存储标识为:消息实例的名称,或,关于消息实例的名称与消息实例对应的类的名称的组合信息;
数据存储模块,用于将所述目标消息实例存储到与所述proto包文件所对应数据库中的所述目标关联配置信息所指示的存储位置。
其中,所述proto包文件为对包括有关联配置信息的proto源文件进行编译后得到的;
其中,利用custom option自定义属性机制,在proto源文件中加入与消息实例对应的类的名称相关的存储标识对应的关联配置信息。
其中,所述关联配置信息至少包括:数据库表的名称和该数据库表中列的名称。
其中,所述关联配置信息获得模块包括:
函数调用单元,用于调用预设的获取自定义属性的函数,从proto包文件中读取与所述目标消息实例的名称相关的目标存储标识所对应的目标关联配置信息;其中,所述获取自定义属性的函数为与当前计算机语言环境相对应的特定函数。
第四方面,本发明实施例提供了一种利用protobuf的数据读取装置,包括:
数据库表名称获取模块,用于获取存储待读取数据的目标数据库表的名称;
消息实例的名称查找模块,用于从proto包文件中查找与所述目标数据库表的名称对应的目标消息实例的名称,其中,所述proto包文件存储有与消息实例的名称相关的存储标识以及与所述存储标识对应的关联配置信息,所述与消息实例的名称相关的存储标识为:消息实例的名称,或,关于消息实例的名称与消息实例对应的类的名称的组合信息;
关联配置信息获得模块,用于从所述proto包文件中获得与所述目标消息实例的名称相关的目标存储标识所对应的目标关联配置信息;
数据读取模块,用于从所述目标关联配置信息所指示的存储位置中读取所述待读取数据。
本发明实施例提供的一种利用protobuf的数据存储、读取方法及装置,利用custom option自定义属性机制,在proto源文件中加入与消息实例对应的类的名称相关的存储标识对应的关联配置信息,存储或者读取数据时不再需要读取配置文件,直接从proto包文件中获得关联配置信息,proto源文件更改时,关联配置信息同时被更改,解决了现有技术中proto源文件与配置文件不一致造成的数据存储或读取错误的问题,不需要人工维护,大大降低了人工维护成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例所提供的一种利用protobuf的数据存储方法的流程图;
图2为本发明实施例所提供的一种利用protobuf的数据读取方法的流程图;
图3为本发明实施例所提供的一种利用protobuf的数据存储装置的结构示意图;
图4为本发明实施例所提供的一种利用protobuf的数据读取装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了降低人工维护配置文件与proto包文件的一致性的维护成本,本发明实施例提供了一种利用protobuf的数据存储方法及装置和一种利用protobuf的数据读取方法及装置。
下面首先对本发明实施例所提供的一种利用protobuf的数据存储方法进行介绍。
需要说明的是,本发明实施例提供的一种利用protobuf的数据存储方法可以适用于安卓、Windows等操作系统,同时,可以适用于C语言、C++、JAVA等编程语言环境,当然并不局限于此。另外,可以理解的是,为了适用于某一操作系统或者某一语言环境,实现本实施例所提供的利用protobuf的数据存储的方法的程序代码可以根据该操作系统或者该语言环境的特点进行编写。
如图1所示,本实施例所提供的一种利用protobuf的数据存储方法,可以包括如下步骤:
S101,获取待存储数据;
在实际应用中,该待存储数据可以是任意类型的数据,例如数字型、字节型、文本型等,当然并不局限于此;同时,该待存储数据可以是一个或多个同一类型的数据,也可以是多个不同类型的数据的组合,这都是合理的。
S102,构建用于存储所述待存储数据的目标消息实例,并将所述待存储数据存储在所述目标消息实例中,其中,所述目标消息实例的名称基于预设规则定义;
在获取待存储数据后,可以构建一个用于存储该待存储数据的目标消息实例,并根据预定规则定义该目标消息实例的名称。需要说明的是,用户可以根据实际存储需要预先制定定义消息实例的名称的规则,该规则包括定义消息实例的名称的具体信息。
S103,从proto包文件中,获得与所述目标消息实例的名称相关的目标存储标识所对应的目标关联配置信息;
在定义了目标消息实例的名称后,可以从proto包文件中获得与该目标消息实例的名称相关的目标存储标识所对应的目标关联配置信息。其中,所述proto包文件存储有与消息实例的名称相关的存储标识以及与所述存储标识对应的关联配置信息,所述与消息实例的名称相关的存储标识为:消息实例的名称,或,关于消息实例的名称与消息实例对应的类的名称的组合信息。
需要说明的是,该proto包文件为对包括有关联配置信息的proto源文件进行编译后得到的,其中,利用custom option自定义属性机制,在proto源文件中加入与消息实例对应的类的名称相关的存储标识对应的关联配置信息。具体的,用户可以根据实际存储需要预先将与消息实例对应的类的名称相关的存储标识对应的关联配置信息编写进proto源文件中,然后将其编译成proto包文件待用。举例而言,现有一消息实例:
如果需要将people中存储的数据整体保存,则只需在proto源文件中编写进与people对应的关联配置信息;如果需要将name和age对应的数据分别保存,则需在proto源文件中编写进与name和age分别对应的关联配置信息;如果只需要保存name对应的数据,抛弃age对应的数据,则只需在proto源文件中编写进与name对应的关联配置信息。
其中,关联配置信息至少包括:数据库表的名称和该数据库表中列的名称,用户也可以根据实际需要增加其他存储相关的信息,这都是合理的。并且,利用custom option自定义属性机制,在proto源文件中加入与消息实例对应的类的名称相关的存储标识对应的关联配置信息的具体实现方式可以通过现有技术实现,而对包括有关联配置信息的proto源文件编译得到proto包文件的具体实现方式也可以通过现有技术实现,在此不做赘述。
具体编写方式和内容可以根据用户实际使用的编程语言环境确定,以JAVA语言环境为例,若需要将被封装在名称为Episode的数据消息中的待存储数据存储在名称为qipu_episode_table的数据库表中的名称为METADATA列中,则在proto源文件中编写如下内容即可:
*.proto
extend google.protobuf.MessageOptions{
optional Table table=1;
}
extend google.protobuf.FieldOptions{
optional Column column=50001;
}
message Episode{
option(table)=qipu_episode_table;
optional Metadata metadata=2[column=METADATA];
其中,
message Episode{
option(table)=qipu_episode_table;
optional Metadata metadata=2[column=METADATA];
为名称为Episode的消息实例的名称相关的目标存储标识所对应的关联配置信息。
进一步的,可以通过调用预设的获取自定义属性的函数,从proto包文件中读取与所述目标消息实例的名称相关的目标存储标识所对应的目标关联配置信息;其中,所述获取自定义属性的函数为与当前计算机语言环境相对应的特定函数,以上述关联配置信息为例,则该获取自定义属性的函数可以为Episode.getDescriptor().getOptions()。
S104,将所述目标消息实例存储到与所述proto包文件所对应数据库中的所述目标关联配置信息所指示的存储位置。
具体的,在实际应用时,可以根据获取到的目标关联配置信息将该目标消息实例中的待存储数据作为一个整体存储到该目标关联配置信息所指示的存储位置,或者,根据获取到的目标关联配置信息将该目标消息实例对应的类的名称对应的待存储数据分别存储到该目标关联配置信息所指示的各个存储位置。
进一步的,目标消息实例存储到与所述proto包文件所对应数据库中的所述目标关联配置信息所指示的存储位置,可以由任意一种数据库相关的读写程序完成,在此不做具体限定。
本实施例中,利用custom option自定义属性机制,在proto源文件中加入与消息实例对应的类的名称相关的存储标识对应的关联配置信息,存储数据时不再需要读取配置文件,直接从proto包文件中获得关联配置信息,proto源文件更改时,关联配置信息同时被更改,解决了现有技术中proto源文件与配置文件不一致造成的数据存储错误的问题,不需要人工维护,大大降低了人工维护成本。
基于上述的利用protobuf的数据存储的方法,本发明实施例还提供了一种利用protobuf的数据读取方法。
需要说明的是,本发明实施例提供的一种利用protobuf的数据读取方法可以适用于安卓、Windows等操作系统,同时,可以适用于C语言、C++、JAVA等编程语言环境,当然并不局限于此。另外,可以理解的是,为了适用于某一操作系统或者某一语言环境,实现本实施例所提供的利用protobuf的数据读取的方法的程序代码可以根据该操作系统或者该语言环境的特点进行编写。
如图2所示,本实施例所提供的一种利用protobuf的数据读取方法,可以包括如下步骤:
S201,获取存储待读取数据的目标数据库表的名称;
其中,该待读取数据为根据本发明上述实施例所提供的利用protobuf的数据存储的方法所存储的数据。
在实际应用中,该待读取数据可以是任意类型的数据,例如数字型、字节型、文本型等,当然并不局限于此;同时,该待存储数据可以是一个或多个同一类型的数据,也可以是多个不同类型的数据的组合,这都是合理的。
S202,从proto包文件中查找与所述目标数据库表的名称对应的目标消息实例的名称;
S203,从该proto包文件中获得与所述目标消息实例的名称相关的目标存储标识所对应的目标关联配置信息;
需要说明的是,该proto包文件为对包括有关联配置信息的proto源文件进行编译后得到的,其中,利用custom option自定义属性机制,在proto源文件中加入与消息实例对应的类的名称相关的存储标识对应的关联配置信息。具体的,用户可以根据实际存储需要预先将与消息实例对应的类的名称相关的存储标识对应的关联配置信息编写进proto源文件中,然后将其编译成proto包文件待用。具体编写方式和内容与步骤S103类似,在此不再赘述。
其中,关联配置信息至少包括:数据库表的名称和该数据库表中列的名称。因此,该proto包文件中包括所有数据库表的名称以及与所有数据库表的名称分别对应的消息实例的名称,并且,每个数据库表的名称对应的消息实例的名称是唯一的,这样可以避免查找时出现混乱而引起读取错误。
进一步的,可以通过调用预设的获取自定义属性的函数,从proto包文件中读取与所述目标消息实例的名称相关的目标存储标识所对应的目标关联配置信息,其中,该获取自定义属性的函数为与当前计算机语言环境相对应的特定函数。
S204,从该目标关联配置信息所指示的存储位置中读取所述待读取数据。
其中,该步骤可以由任意一种数据库相关的读写程序完成,在此不做具体限定。
本实施例中,由于在数据存储时不再需要读取配置文件,直接从proto包文件中获得关联配置信息,相应的,读取数据时也不需要读取配置文件,而是从proto包文件中查找与目标数据库表的名称对应的目标消息实例的名称,再从该proto包文件中获得与该目标消息实例的名称相关的目标存储标识所对应的目标关联配置信息,进而完成读取数据。由于proto源文件更改时,关联配置信息同时被更改,解决了现有技术中proto源文件与配置文件不一致造成的数据读取错误的问题,不需要人工维护,大大降低了人工维护成本。
相应于上述利用protobuf的数据存储的方法实施例,本发明实施例还提供了一种利用protobuf的数据存储装置。
如图3所示,一种利用protobuf的数据存储装置,可以包括:
数据获取模块310,用于获取待存储数据;
消息实例构建模块320,用于构建用于存储所述待存储数据的目标消息实例,并将该待存储数据存储在该目标消息实例中,其中,所述目标消息实例的名称基于预设规则定义;
关联配置信息获得模块330,用于从proto包文件中,获得与该目标消息实例的名称相关的目标存储标识所对应的目标关联配置信息,其中,所述proto包文件存储有与消息实例的名称相关的存储标识以及与所述存储标识对应的关联配置信息,所述与消息实例的名称相关的存储标识为:消息实例的名称,或,关于消息实例的名称与消息实例对应的类的名称的组合信息;
数据存储模块340,用于将该目标消息实例存储到与该proto包文件所对应数据库中的该目标关联配置信息所指示的存储位置。
本实施例中,利用custom option自定义属性机制,在proto源文件中加入与消息实例对应的类的名称相关的存储标识对应的关联配置信息,存储数据时不再需要读取配置文件,直接从proto包文件中获得关联配置信息,proto源文件更改时,关联配置信息同时被更改,解决了现有技术中proto源文件与配置文件不一致造成的数据存储错误的问题,不需要人工维护,大大降低了人工维护成本。
具体的,所述proto包文件为对包括有关联配置信息的proto源文件进行编译后得到的;其中,利用custom option自定义属性机制,在proto源文件中加入与消息实例对应的类的名称相关的存储标识对应的关联配置信息。
具体的,所述关联配置信息至少包括:数据库表的名称和该数据库表中列的名称。
其中,所述关联配置信息获得模块330,可以包括:
函数调用单元,用于调用预设的获取自定义属性的函数,从proto包文件中读取与所述目标消息实例的名称相关的目标存储标识所对应的目标关联配置信息;其中,所述获取自定义属性的函数为与当前计算机语言环境相对应的特定函数。
相应于上述对利用protobuf存储后的数据库进行读取的方法,本发明实施例还提供了一种利用protobuf的数据读取装置。
如图4所示,一种利用protobuf的数据读取装置,可以包括:
数据库表名称获取模块410,用于获取存储待读取数据的目标数据库表的名称;
消息实例的名称查找模块420,用于从proto包文件中查找与所述目标数据库表的名称对应的目标消息实例的名称,其中,所述proto包文件存储有与消息实例的名称相关的存储标识以及与所述存储标识对应的关联配置信息,所述与消息实例的名称相关的存储标识为:消息实例的名称,或,关于消息实例的名称与消息实例对应的类的名称的组合信息;
关联配置信息获得模块430,用于从所述proto包文件中获得与所述目标消息实例的名称相关的目标存储标识所对应的目标关联配置信息;
数据读取模块440,用于从所述目标关联配置信息所指示的存储位置中读取所述待读取数据。
本实施例中,由于在数据存储时不再需要读取配置文件,直接从proto包文件中获得关联配置信息,相应的,读取数据时也不需要读取配置文件,而是从proto包文件中查找与目标数据库表的名称对应的目标消息实例的名称,再从该proto包文件中获得与所述目标消息实例的名称相关的目标存储标识所对应的目标关联配置信息,进而完成读取数据。由于proto源文件更改时,关联配置信息同时被更改,解决了现有技术中proto源文件与配置文件不一致造成的数据读取错误的问题,不需要人工维护,大大降低了人工维护成本。
具体的,所述proto包文件为对包括有关联配置信息的proto源文件进行编译后得到的;其中,利用custom option自定义属性机制,在proto源文件中加入与消息实例对应的类的名称相关的存储标识对应的关联配置信息。
具体的,所述关联配置信息至少包括:数据库表的名称和该数据库表中列的名称。
其中,所述关联配置信息获得模块430,可以包括:
函数调用单元,用于调用预设的获取自定义属性的函数,从proto包文件中读取与所述目标消息实例的名称相关的目标存储标识所对应的目标关联配置信息;其中,所述获取自定义属性的函数为与当前计算机语言环境相对应的特定函数。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (10)

1.一种利用protobuf的数据存储方法,其特征在于,包括:
获取待存储数据;
构建用于存储所述待存储数据的目标消息实例,并将所述待存储数据存储在所述目标消息实例中,其中,所述目标消息实例的名称基于预设规则定义;
从proto包文件中,获得与所述目标消息实例的名称相关的目标存储标识所对应的目标关联配置信息,其中,所述proto包文件存储有与消息实例的名称相关的存储标识以及与所述存储标识对应的关联配置信息,所述与消息实例的名称相关的存储标识为:消息实例的名称,或,关于消息实例的名称与消息实例对应的类的名称的组合信息;
将所述目标消息实例存储到与所述proto包文件所对应数据库中的所述目标关联配置信息所指示的存储位置。
2.如权利要求1所述的方法,其特征在于,所述proto包文件为对包括有关联配置信息的proto源文件进行编译后得到的;
其中,利用custom option自定义属性机制,在proto源文件中加入与消息实例对应的类的名称相关的存储标识对应的关联配置信息。
3.如权利要求2所述的方法,其特征在于,所述关联配置信息至少包括:数据库表的名称和该数据库表中列的名称。
4.如权利要求1-3任一项所述的方法,其特征在于,所述从proto包文件中获得与所述目标消息实例的名称相关的目标存储标识所对应的目标关联配置信息,包括:
调用预设的获取自定义属性的函数,从proto包文件中读取与所述目标消息实例的名称相关的目标存储标识所对应的目标关联配置信息;其中,所述获取自定义属性的函数为与当前计算机语言环境相对应的特定函数。
5.一种利用protobuf的数据读取方法,其特征在于,基于权利要求1所述的利用protobuf的数据存储方法,包括:
获取存储待读取数据的目标数据库表的名称;
从proto包文件中查找与所述目标数据库表的名称对应的目标消息实例的名称,其中,所述proto包文件存储有与消息实例的名称相关的存储标识以及与所述存储标识对应的关联配置信息,所述与消息实例的名称相关的存储标识为:消息实例的名称,或,关于消息实例的名称与消息实例对应的类的名称的组合信息;
从所述proto包文件中获得与所述目标消息实例的名称相关的目标存储标识所对应的目标关联配置信息;
从所述目标关联配置信息所指示的存储位置中读取所述待读取数据。
6.一种利用protobuf的数据存储装置,其特征在于,包括:
数据获取模块,用于获取待存储数据;
消息实例构建模块,用于构建用于存储所述待存储数据的目标消息实例,并将所述待存储数据存储在所述目标消息实例中,其中,所述目标消息实例的名称基于预设规则定义;
关联配置信息获得模块,用于从proto包文件中,获得与所述目标消息实例的名称相关的目标存储标识所对应的目标关联配置信息,其中,所述proto包文件存储有与消息实例的名称相关的存储标识以及与所述存储标识对应的关联配置信息,所述与消息实例的名称相关的存储标识为:消息实例的名称,或,关于消息实例的名称与消息实例对应的类的名称的组合信息;
数据存储模块,用于将所述目标消息实例存储到与所述proto包文件所对应数据库中的所述目标关联配置信息所指示的存储位置。
7.如权利要求6所述的装置,其特征在于,所述proto包文件为对包括有关联配置信息的proto源文件进行编译后得到的;
其中,利用custom option自定义属性机制,在proto源文件中加入与消息实例对应的类的名称相关的存储标识对应的关联配置信息。
8.如权利要求7所述的装置,其特征在于,所述关联配置信息至少包括:数据库表的名称和该数据库表中列的名称。
9.如权利要求6-8任一项所述的装置,其特征在于,所述关联配置信息获得模块包括:
函数调用单元,用于调用预设的获取自定义属性的函数,从proto包文件中读取与所述目标消息实例的名称相关的目标存储标识所对应的目标关联配置信息;其中,所述获取自定义属性的函数为与当前计算机语言环境相对应的特定函数。
10.一种利用protobuf的数据读取装置,其特征在于,基于权利要求6所述的利用protobuf的数据存储装置,包括:
数据库表名称获取模块,用于获取存储待读取数据的目标数据库表的名称;
消息实例的名称查找模块,用于从proto包文件中查找与所述目标数据库表的名称对应的目标消息实例的名称,其中,所述proto包文件存储有与消息实例的名称相关的存储标识以及与所述存储标识对应的关联配置信息,所述与消息实例的名称相关的存储标识为:消息实例的名称,或,关于消息实例的名称与消息实例对应的类的名称的组合信息;
关联配置信息获得模块,用于从所述proto包文件中获得与所述目标消息实例的名称相关的目标存储标识所对应的目标关联配置信息;
数据读取模块,用于从所述目标关联配置信息所指示的存储位置中读取所述待读取数据。
CN201511032477.9A 2015-12-31 2015-12-31 一种利用protobuf的数据存储、读取方法及装置 Active CN105677805B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201511032477.9A CN105677805B (zh) 2015-12-31 2015-12-31 一种利用protobuf的数据存储、读取方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201511032477.9A CN105677805B (zh) 2015-12-31 2015-12-31 一种利用protobuf的数据存储、读取方法及装置

Publications (2)

Publication Number Publication Date
CN105677805A CN105677805A (zh) 2016-06-15
CN105677805B true CN105677805B (zh) 2019-05-10

Family

ID=56298553

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201511032477.9A Active CN105677805B (zh) 2015-12-31 2015-12-31 一种利用protobuf的数据存储、读取方法及装置

Country Status (1)

Country Link
CN (1) CN105677805B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107590076B (zh) * 2017-09-22 2021-08-13 北京奇艺世纪科技有限公司 获取业务数据的方法、生成业务数据源的方法及装置
CN107992624B (zh) * 2017-12-22 2020-08-04 百度在线网络技术(北京)有限公司 解析序列化数据的方法、装置、存储介质及终端设备
CN108681578B (zh) * 2018-05-10 2021-07-16 腾讯科技(深圳)有限公司 一种业务数据存储方法、装置、服务器及存储介质
CN110879815A (zh) * 2019-11-26 2020-03-13 上海莉莉丝科技股份有限公司 游戏数据库服务器的升级方法、装置、设备及存储介质
CN111078571B (zh) * 2019-12-20 2024-02-02 广州品唯软件有限公司 模拟响应的测试方法、终端设备及计算机可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103038742A (zh) * 2010-02-09 2013-04-10 谷歌公司 用于在分布式存储系统内动态复制数据的方法和系统
CN103281311A (zh) * 2013-05-12 2013-09-04 南京载玄信息科技有限公司 一种使用Protobuf描述的物联网协议解析方法
CN103294652A (zh) * 2012-02-27 2013-09-11 腾讯科技(深圳)有限公司 一种数据转换方法及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120246653A1 (en) * 2011-03-23 2012-09-27 Infinidat Ltd. Generic command parser

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103038742A (zh) * 2010-02-09 2013-04-10 谷歌公司 用于在分布式存储系统内动态复制数据的方法和系统
CN103294652A (zh) * 2012-02-27 2013-09-11 腾讯科技(深圳)有限公司 一种数据转换方法及系统
CN103281311A (zh) * 2013-05-12 2013-09-04 南京载玄信息科技有限公司 一种使用Protobuf描述的物联网协议解析方法

Also Published As

Publication number Publication date
CN105677805A (zh) 2016-06-15

Similar Documents

Publication Publication Date Title
CN105677805B (zh) 一种利用protobuf的数据存储、读取方法及装置
US10866685B2 (en) System for providing dynamic linked panels in user interface
CN103810257B (zh) 一种升级软件数据库的方法、装置及设备
CN106528129B (zh) 一种Web应用界面生成系统及方法
CN107526777B (zh) 一种基于版本号对文件进行处理的方法及设备
CN1983266B (zh) 闪速类介质中存储事务记录的文件系统
US7370270B2 (en) XML schema evolution
US20070260971A1 (en) Computer-implemented methods and systems for electronic document inheritance
CN102968373B (zh) 一种测试系统的维护方法及装置
CN105022615A (zh) 一种界面的生成方法和系统
BR112015009764B1 (pt) Método de geração de relatório automatizado
CN106055528A (zh) 文书自动生成方法及装置
US9384202B1 (en) Gateway module to access different types of databases
CN105868421A (zh) 一种数据管理方法及装置
CN102279749A (zh) 一种代码归并方法和设备
CN108776702A (zh) 一种数据填报页面自定义可视化配置方法
CN104978394A (zh) 支持多语种显示的网页标签数据组织更新方法
US20050033725A1 (en) System and method of data modelling
CN112698819A (zh) 面向树化对象编程程序设计方法、装置及存储介质
Allgood Serials and multiple versions, or the inexorable trend toward work-level displays
CN103984554A (zh) 软件设计文档的生成方法及装置
CN104636471A (zh) 一种程序代码的查找方法及装置
US7657511B2 (en) Multi-layered data model for generating audience-specific documents
WO2008090420A1 (en) System and method of content and translations management in multi-language enabled applications
CN102043853A (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