一种存储数据的方法及装置制造方法及图纸

技术编号:7271371 阅读:151 留言:0更新日期:2012-04-15 18:03
本发明专利技术提供了一种存储数据的方法及装置。该方法包括:建立至少包括作为根节点的第一节点的自定义数据结构,其中,每个节点包括第一模块,用于存储数据的类型标识和值,以及第二模块用于存储节点的子节点的标识与子节点的之间的映射列表;每接收一个数据判断数据将要存储的位置以及接收的数据的类型;如果数据存储于第一节点,将数据的类型以及数据的值存储第一节点的第一模块中;如果数据存储于自定义数据结构的第二节点,将数据的类型以及数据的值存储在第二节点的第一模块中。根据本发明专利技术,可以方便地进行不同数据类型的转换、对数据进行读取和传递。

【技术实现步骤摘要】

本专利技术涉及计算机
,具体涉及一种存储数据的方法及装置
技术介绍
随着计算机技术和网络技术的发展,出现了各种各样的基于计算机的通讯系统, 比如即时通讯IM系统,微博通讯系统等。在这类通讯系统中,需要对系统的数据进行存储以及使用,以实现系统的各种功能。其中数据的存储和使用可以通过各种程序语言来实现。 在程序语言中,一般需要将数据按照一定的类型进行存储,并且编译器在编译阶段(尤其是C++这种强类型语言中)会对数据的类型安全进行严格的检查,不同的数据类型,是不能够互相转换,赋值的。在此情况下,当存储一些稍微复杂一点的数据时,往往需要使用stl+ 一些自定义数据结构来存储。而对于不同场景下的数据,往往又需要定义不同的数据结构。 因此,采用这种方法存储的数据使用起来比较麻烦。基于上述原因,出现一些改进的存储方法,以实现不同数据类型的灵活使用,比如转换、读取或传递等。例如,在脚本语言中,在存储数据时,使用VARIANT结构来表示数据类型。然而,VARIANT结构中,一次只能有一种类型是有效的,也就是每次只能处理一个数据, 没办法既存储数字,又存储字符串,不能批量处理数据。
技术实现思路
有鉴于此,本专利技术实施例提供了一种存储数据的方法及装置,该方法及装置可以处理批量数据。根据本专利技术实施例,一种存储数据的方法包括建立至少包括作为根节点的第一节点的自定义数据结构,其中,每个节点包括第一模块,用于存储数据的类型标识和值,以及第二模块用于存储节点的子节点的标识和数据的映射列表;每接收一个数据判断数据将要存储的位置以及接收的数据的类型;如果数据存储于第一节点,将数据的类型以及数据的值存储在第一节点的第一模块中;如果数据存储于自定义数据结构的第二节点,将数据的类型以及数据的值存储在第二节点的第一模块中。根据本专利技术另一实施例,一种存储数据的装置包括数据接口,用于接收数据;通用数据类型组件,用于建立并保存至少包括作为根节点的第一节点的自定义数据结构,其中,每个节点包括第一模块,用于存储数据的类型标识和值,以及第二模块用于存储节点的子节点的标识和子节点之间的映射列表;每当数据接口接收一个数据,判断数据将要存储的位置以及数据的类型;如果数据存储于第一节点,则将数据的类型以及数据的值存储在第一节点的第一模块中;如果数据存储于自定义数据结构的第二节点中,则将数据的类型以及数据的值存储在第二节点的第一模块中。根据本专利技术又一实施例,一种通用数据类型组件包括节点建立模块,判断模块和存储模块;节点建立模块,用于建立并保存至少包括作为根节点的第一节点的自定义数据结构,其中,每个节点包括第一模块,用于存储数据的类型标识和值,以及第二模块用于存储节点的子节点的标识和子节点之间的映射列表;判断模块,用于每接收一个数据后,判断数据将存储于第一节点或自定义数据结构的第二节点,判断数据的类型,并将判断结果通知给存储模块;存储模块,用于在判断模块判断数据将存储于第一节点时,将数据的类型以及数据的值存储在第一节点的第一模块中;在判断模块判断数据将存储于自定义数据结构的第二节点时,将数据的类型以及数据的值存储在第二节点的第一模块中。与现有技术相比,本专利技术实施例的自定义数据结构定义了一种通用数据类型;当将数据存储为该通用数据类型时,该通用数据类型可以判断待存储数据的基本类型,并将待存储数据的基本类型和值进行存储。而且,由于在一个自定义数据结构定义的通用数据类型中,每个节点都可以设有其子节点的〈标识,子节点〉的映射列表,因此,可以将大量的数据存储于该通用数据类型中。这种情况下,只要将大量的数据存储成一个通用数据类型, 则使用该通用数据类型定义的一个变量就可以存储大量的数据。并且,由于这种通用数据类型中各节点间存储的数据类型可以不同,因此通过通用数据类型存储的具有不同类型的数据,则使用该通用数据类型定义的一个变量就可以使用大量的具有不同类型的数据。并且,由于通用数据类型的变量中各个节点都有各自的类型标识,因此各个节点可以存储不同类型的数据,而不需要存储兼容类型的数据,即可以存储LONG和int数据,也可以存储BSTR字符串数据。附图说明图1为根据本专利技术实施例的一种存储数据的方法的流程图;图2为本专利技术实施例中存储数据的存储模型;图3示出了本专利技术实施例中存储数据的通用数据类型的树状结构;图4为本专利技术实施例的一种存储数据的装置;图5为本专利技术另一实施例的一种存储数据的装置。具体实施例方式下面结合附图和具体实施例对本专利技术进行详细说明。图1为根据本专利技术实施例的一种存储数据的方法的流程图。如图1所示,该方法包括步骤101 建立至少包括第一节点的自定义数据结构。在本步骤中,该第一节点为根节点。每个节点包括第一模块,用于存储数据的类型标识和值,以及第二模块用于存储该节点的子节点的标识与子结点之间的映射列表。为了描述方便,本专利技术将这种自定义数据结构定义的数据类型称为通用数据类型 (WData)。步骤102 每接收一个数据判断数据将要存储的位置以及数据的类型。本步骤中,当用户为具有自定义数据结构的变量赋值时,则自定义数据结构接收到数据。在此,用户为变量赋值相当于将数据存储于该变量中;数据的类型可以是任何的基本类型,比如整型(int),浮点型(float),字节型(byte)等。步骤103 如果数据存储于第一节点,则将数据的类型以及数据的值存储在第一节点的第一模块中。本步骤中,当数据存储于第一节点,即存储于根节点时,该根节点无需对应一个节点标识与节点之间的映射列表,即<key,WData节点 > (以下简称<key, WData 。并且,当自定义数据结构中仅有第一节点,则第一节点中的第二模块的映射列表为空。当第一节点存在子节点时,则第一节点中的第二模块的映射列表记录第一节点的子节点标识与子节点之间的映射列表<key,WData〉。步骤104 如果数据存储于自定义数据结构的其他节点(称为第二节点),则将数据的类型以及数据的值存储在第二节点的第一模块中。本步骤中,当数据存储于第二节点时,由于第二节点为子节点,则该数据属于子数据。此时,第二节点对应一个节点标识与节点之间的映射列表,比如<key2,WData〉。该映射列表存储于第二节点的父节点中,用于索引第二节点的子节点,从而索引子结点中的数据。在步骤104之前,还包括判断自定义数据结构中是否包括第二节点;如果没有, 则建立所述自定义数据结构的第二节点;否则,直接将数据的类型以及数据的值存储在所述第二节点的第一模块中。建立自定义数据结构的第二节点可以包括在第二节点的父节点的第二模块中填写第二节点的标识与第二节点之间的映射列表。同理,当接收到存储于第二节点的子节点的数据时,在第二节点中的第二模块填写子节点的标识与子节点之间的映射列表。以上的自定义数据结构可以由C++语言、或脚本语言或VB语言等来实现。由以上实施例可以看出,由于自定义数据结构定义了一种通用数据类型;当将数据存储为该通用数据类型时,该通用数据类型可以判断待存储数据的类型,并将待存储数据的类型和值进行存储。因而,用户在存储数据时,不用手动进行不同数据类型的转换。而且,由于在一个自定义数据结构的通用数据类型中,每个节点都可以设有其子节点的<本文档来自技高网...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:彭勇
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术