一种基于复杂数据序列化的存储算法模型制造技术

技术编号:35197610 阅读:21 留言:0更新日期:2022-10-12 18:30
本发明专利技术公开了一种基于复杂数据序列化的存储算法模型,涉及数据处理技术领域。本发明专利技术包括如下步骤:对复杂数据进行提取,采用序列化框架Thrift,利用IDL语法用以定义和描述数据类型和服务;Thrift用struct关键字描述一类对象的统称,经Thrift编译器编译后,翻译成目标语言中的类,得到存储数据;利用客户端对存储数据进行操作;通过服务器对数据的key进行hash计算,得到一个数字;服务器对得到的数字与服务器数量做取余计算,得到服务器的编号;利用服务器在相应的服务器上进行操作。本发明专利技术通过提供IDL用以描述数据schema,能够很容易地描述任意结构化数据和非结构化数据,并且支持跨语言读写,操作便利性足。操作便利性足。操作便利性足。

【技术实现步骤摘要】
一种基于复杂数据序列化的存储算法模型


[0001]本专利技术涉及数据处理
,特别是涉及一种基于复杂数据序列化的存储算法模型。

技术介绍

[0002]当需要将数据存入文件或者通过网络发送出去时,需将数据对象转化为字节流,即对数据序列化,数据序列化是将内存对象转化为字节流的过程,它直接决定了数据解析效率以及模式演化能力,即数据格式发生变化时,比如增加或删除字段,是否仍能够保持兼容性;
[0003]目前对于复杂数据的序列化缺乏相应的存储支撑算法模型,结构化数据和非结构化数据处理及存储可控性不足,并且目前的数据存储方式对于数据存储的兼容性不佳;因此,我们提出一种基于复杂数据序列化的存储算法模型。

技术实现思路

[0004]本专利技术的目的在于提供一种基于复杂数据序列化的存储算法模型,解决上述背景中提出的问题。
[0005]为解决上述技术问题,本专利技术是通过以下技术方案实现的:
[0006]本专利技术为一种基于复杂数据序列化的存储算法模型,包括如下步骤:
[0007]S1:对复杂数据进行提取,采用序列化框架Thrift,利用IDL语法用以定义和描述数据类型和服务;
[0008]S2:Thrift用struct关键字描述一类对象的统称,经Thrift编译器编译后,翻译成目标语言中的类,得到存储数据;
[0009]S3:利用客户端对存储数据进行操作;
[0010]S4:基于上述步骤,通过服务器对数据的key进行hash计算,得到一个数字;
[0011]S5:服务器对得到的数字与服务器数量做取余计算,从而得到服务器的编号;
[0012]S6:利用服务器在相应的服务器上进行操作,完成基于复杂数据序列化的存储算法操作。
[0013]S7:基于S6,服务器从相应的服务器上面取到数据返回给客户端。
[0014]所述S1中IDL文件由专门的代码生成器生成对应的目标语言代码,以供用户在应用中使用,Thrift IDL语法类似于C语言。
[0015]所述S2中Thrift struct中每个域由四个属性构成,包括域编号、域修饰、域类型和域名称。
[0016]所述复杂数据序列化包括“序列化”和“反序列化”两大部分,分别对应了“对象实例写入字节流”和“读取字节流还原对象实例”两个过程。
[0017]所述数据的存储结构包括有顺序存储方法、链接存储方法、索引存储方法和散列存储方法。
[0018]所述存储算法模型包括文档存储,所述文档存储的目标是在键值存储方式和传统的关系数据系统之间架起一个桥梁,集两者的优势于一身,其数据主要以JSON或者类JSON格式的文档来进行存储,是有语义的,文档型数据库看做是键值数据库的升级版,允许在存储的值中再嵌套键值,且文档存储模型一般可以对其值创建索引方便上层应用。
[0019]本专利技术具有以下有益效果:
[0020]一、本专利技术基于复杂数据序列化的存储算法模型,提供IDL用以描述数据schema,能够很容易地描述任意结构化数据和非结构化数据,并且支持跨语言读写,至少支持C++、Java和Python三种主流语言,可控性强。
[0021]二、本专利技术基于复杂数据序列化的存储算法模型,通过进行数据编码存储,即整数可采用变长编码,字符串可采用压缩编码等,以尽可能避免不必要的存储浪费,同时支持schema演化,保证读写模块向前向后的兼容性。
[0022]当然,实施本专利技术的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
[0023]为了更清楚地说明本专利技术实施例的技术方案,下面将对实施例描述所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0024]图1为本专利技术基于复杂数据序列化的存储算法模型的操作流程图。
具体实施方式
[0025]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本专利技术保护的范围。
[0026]请参阅图1所示:本专利技术为一种基于复杂数据序列化的存储算法模型,包括如下步骤:
[0027]S1:对复杂数据进行提取,采用序列化框架Thrift,利用IDL语法用以定义和描述数据类型和服务,IDL文件由专门的代码生成器生成对应的目标语言代码,以供用户在应用中使用,Thrift IDL语法类似于C语言;
[0028]S2:Thrift用struct关键字描述一类对象的统称,经Thrift编译器编译后,翻译成目标语言中的类,得到存储数据,Thrift struct中每个域由四个属性构成,包括域编号、域修饰、域类型和域名称;
[0029]域编号,每个域必须是唯一(但可以不连续)的整数,Thrift用该编号实现向后向前兼容性,在schema演变过程中,不要删除和修改已有域的编号,只需为新的域赋予新的编号即可;域修饰包括required和optional两个关键字,用以对域的数值进行限制,required表示必须为该域设置数值,“optional”表示该域数值可有可无;域类型Thrift支持非常丰富的数据类型,既支持int,long等基本类型,也支持set、list及map等复杂容器类型,具体可参考Thrift官网文档描述;域名称,同一struct下每个域名称必须唯一,可为域设置默认
数值。
[0030]S3:利用客户端对存储数据进行操作;S4:基于上述步骤,通过服务器对数据的key进行hash计算,得到一个数字;
[0031]S5:服务器对得到的数字与服务器数量做取余计算,从而得到服务器的编号;S6:利用服务器在相应的服务器上进行操作,完成基于复杂数据序列化的存储算法操作。
[0032]S7:基于S6,服务器从相应的服务器上面取到数据返回给客户端。
[0033]复杂数据序列化包括“序列化”和“反序列化”两大部分,分别对应了“对象实例写入字节流”和“读取字节流还原对象实例”两个过程;数据的存储结构包括有顺序存储方法、链接存储方法、索引存储方法和散列存储方法;存储算法模型包括文档存储,文档存储的目标是在键值存储方式和传统的关系数据系统之间架起一个桥梁,集两者的优势于一身,其数据主要以JSON或者类JSON格式的文档来进行存储,是有语义的,文档型数据库看做是键值数据库的升级版,允许在存储的值中再嵌套键值,且文档存储模型一般可以对其值创建索引方便上层应用。
[0034]本方案中,客户端对存储数据的操作进程包括将服务器分布在一个圆环上;客户端开始进行数据操作;服务器对数据的key进行hash计算,得到一个数字;用得到的hash值在圆环对应的各个点上去对比,得到数据在圆环上的落点;服本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于复杂数据序列化的存储算法模型,其特征在于,包括如下步骤:S1:对复杂数据进行提取,采用序列化框架Thrift,利用IDL语法用以定义和描述数据类型和服务;S2:Thrift用struct关键字描述一类对象的统称,经Thrift编译器编译后,翻译成目标语言中的类,得到存储数据;S3:利用客户端对存储数据进行操作;S4:基于上述步骤,通过服务器对数据的key进行hash计算,得到一个数字;S5:服务器对得到的数字与服务器数量做取余计算,从而得到服务器的编号;S6:利用服务器在相应的服务器上进行操作,完成基于复杂数据序列化的存储算法操作。2.根据权利要求1所述的一种基于复杂数据序列化的存储算法模型,其特征在于,所述S1中IDL文件由专门的代码生成器生成对应的目标语言代码,以供用户在应用中使用,Thrift IDL语法类似于C语言。3.根据权利要求1所述的一种基于复杂数据序列化的存储算法模型,其特征在于,所述S2中Thrift struct中每个域由四个属性构成,包括域编号、域修饰、...

【专利技术属性】
技术研发人员:郑荣华蔡鹏祥
申请(专利权)人:画壁科技成都有限公司
类型:发明
国别省市:

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

1