一种基于用户直观方式操作二进制数据的方法及系统的制作方法

文档序号:8381014阅读:215来源:国知局
一种基于用户直观方式操作二进制数据的方法及系统的制作方法
【技术领域】
[0001]本发明属于数据修改领域,尤其涉及一种基于用户直观方式操作二进制数据的方法及系统。
【背景技术】
[0002]传统关系数据库是目前Web应用中存取数据的主要形式。然而,随着Web2.0、大数据、云应用等技术的发展,传统的关系数据库在I/O、可扩展性上遇到了瓶颈,在大数据存取和访问时效率急剧下降,在高可扩展性和高可用性方面也遇到难题。为了解决此问题,许多方案相继提出,比如分布式数据库、主从数据库、无模式数据库等。无模式数据库,是一种模式自由的数据库,其模式主要为关系、树、图、文档等多种方式。实际上,很难完全抛弃现有的关系数据库而直接使用无模式数据库。以关系数据库为主,无模式数据库为辅,成了工业界和产业界普遍接受的方案。
[0003]现有的技术中,存在两类关系数据库与无模式数据库进行结合的方法:(1)以用户插件的方法,将无模式数据库集成到关系数据库中,使得关系数据库同时支持关系操作和无模式操作。该方法缺点是大量的打开/关闭表的操作十分耗时,降低了数据库性能;
(2)混合使用关系数据库,以关系数据库为主,无模式数据库为辅,使用关系数据库进行大数据更新操作,采用某种机制将关系数据库模式和数据同步到无模式数据库。对于大数据的查询直接使用无模式数据库,而更新仍采用关系数据库。该方法优点是既解决了关系数据库中大数据的查询瓶颈问题,又解决了无模式数据库更新瓶颈问题。该方法的难点是如何将关系数据库模式和数据转换到无模式数据库。现有技术的解决方案及实现主要有两种方法:(1)通过关系数据库触发器,将数据的变化记录到临时查询表。该查询表通常由ID、表名、行号、时间戳和操作等模式构成。然后将临时查询表的数据同步到目标无模式数据库;(2)对方法(I)改进,取消临时查询表,通过增加关系数据库自定义HTTP函数,直接将关系数据库数据变化增量通过HTTP协议发送给目标无模式数据库,实现数据和模式的同止/J/ O
[0004]综上,现有关系数据库到无模式数据库的转换方法主要有以下问题:(1)不管是触发器还是用户自定义函数,其严重影响关系数据库性能;(2)数据传输过程无法保证数据操作的有序性,容易造成数据的不一致;(3)同步方式会阻塞数据库进程,降低关系数据库的模式和数据更新性能。

【发明内容】

[0005]本发明的目的在于提供一种基于用户直观方式操作二进制数据的方法,旨在解决上述的技术问题。
[0006]本发明是这样实现的,一种基于用户直观方式操作二进制数据的方法,所述方法包括以下步骤:
A、设置对输入的数据信息定义数据描述的格式; B、将预先设置好的数据信息输入进行数据存储;
C、在输入的数据信息中查找User,如查找到,则执行步骤D,如查找不到,则提示错误并结束本次操作;
D、判断User的值是否是数据定义中定义的字符串类型,如是,则执行步骤E,如否,则提示错误并结束本次操作;
E、计算数据的长度并判断数据长度是否大于预设值,如否,则执行步骤F,如是,则提示错误并结束本次操作;
F、在二进制数据流中存储整形数字和字符串;
G、在输入的数据信息中查找Age,如查找到,则执行步骤H,如查找不到,则提示错误并结束本次操作;
H、判断Age的值是否是数据定义中定义的整形,如是,则执行步骤I,如否,则提示错误并结束本次操作;
1、在二进制数据流中存储整形数字;
J、在存储后根据数据定义读取预设字节为第一列的字符串表示实际长度并判断剩余字节长度是否不足读取的字节长度,如是,则提示错误并结束本次操作,如否,则执行步骤K;
K、读取设定字节的实际长度并判断剩余长度是否不足设定字节,如是,则提示出错并结束本次操作,如否,则读取结果为预设名并执行步骤L ;
L、根据数据定义读取预置字节为第二列的整形并判断其长度是否不足预置字节,如是,则提示错误并结束本次操作,如否,则读取结果为预设值并执行步骤M ;
M、根据数据定义对二进制数据进行直观的修改。
[0007]本发明的进一步技术方案是:所述数据描述格式对数据的列名、类型、最大长度进行定义。
[0008]本发明的进一步技术方案是:通过对数据定义来实现对二进制数据直观操作修改。
[0009]本发明的进一步技术方案是:所述预设值为24。
[0010]本发明的进一步技术方案是:在数据定义中支持的类型包括int8、intl6、int32、int64、float、double、string、binary> struct 及 un1n。
[0011]本发明的另一目的在于提供一种基于用户直观方式操作二进制数据的系统,该系统包括:
数据定义模块,用于设置对输入的数据信息定义数据描述的格式;
数据存储模块,用于将预先设置好的数据信息输入进行数据存储;
第一查询模块,用于在输入的数据信息中查找User,如查找到,则执行字符串类型判断模块,如查找不到,则提示错误并结束本次操作;
字符串类型判断模块,用于判断User的值是否是数据定义中定义的字符串类型,如是,则执行长度判断模块,如否,则提示错误并结束本次操作;
长度判断模块,用于计算数据的长度并判断数据长度是否大于预设值,如否,则执行数据流存储模块,如是,则提示错误并结束本次操作;
数据流存储模块,用于在二进制数据流中存储整形数字和字符串; 第二查找模块,用于在输入的数据信息中查找Age,如查找到,则执行整形判断模块,如查找不到,则提示错误并结束本次操作;
整形判断模块,用于判断Age的值是否是数据定义中定义的整形,如是,则执行整形存储模块,如否,则提示错误并结束本次操作;
整形存储模块,用于在二进制数据流中存储整形数字;
字节长度判断模块,用于在存储后根据数据定义读取预设字节为第一列的字符串表示实际长度并判断剩余字节长度是否不足读取的字节长度,如是,则提示错误并结束本次操作,如否,则执行剩余长度判断模块;
剩余长度判断模块,用于读取设定字节的实际长度并判断剩余长度是否不足设定字节,如是,则提示错误并结束本次操作,如否,则读取结果为预设名并执行整形长度判断模块;
整形长度判断模块,用于根据数据定义读取预置字节为第二列的整形并判断其长度是否不足预置字节,如是,则提示错误并结束本次操作,如否,则读取结果为预设值并执行修改模块;
修改模块,用于根据数据定义对二进制数据进行直观的修改。
[0012]本发明的进一步技术方案是:所述数据描述格式对数据的列名、类型、最大长度进行定义。
[0013]本发明的进一步技术方案是:通过对数据定义来实现对二进制数据直观操作修改。
[0014]本发明的进一步技术方案是:所述预设值为24。
[0015]本发明的进一步技术方案是:在数据定义中支持的类型包括int8、intl6、int32、int64、float、double、string、binary> struct 及 un1n。
[0016]本发明的有益效果是:在不改变数据格式的前提下,对输入数据进行最大限度压缩,同时保留了循环嵌套等多种有益特性,其效率比同类型的产品(ProtocolBuffer)提高20倍以上,可以作为C/C++、C#、Act1nScript、Java、Python等多种实现,易用性相当高。
【附图说明】
[0017]图1是本发明实施例提供的基于用户直观方式操作二进制数据的方法的流程图; 图2是本发明实施例提供的基于用户直观方式操作二进制数据的方法的结构框图。
【具体实施方式】
[0018]图1示出了本发明提供的基于用户直观方式操作二进制数据的方法的流程图,其详述如下:
步骤SI,设置对输入的数据信息定义数据描述的格式;1、用户定义数据描述格式(类似 XSD (XML Schema 语言也称作 XML Schema 定义(XML Schema Definit1n, XSD)), M如用户定义,第一列数据为〈entry name=” User” type=” string” size=” 24” > 表示,列名为User,数据类型为字符串,最大长度为24 ;3、第二列数据为〈entry name=”Age”type=” int” >表示,列名为Age,数据类型为整形数字。
[0019]步骤S2,将预先设置好的数据信息输入进行数据存储;用户输入希望存储的数据,例如 User=JohnR, Age=24 等。
[0020]步骤S3,在输入的数据信息中查找User,如查找到,则执行步骤S4,如查找不到,则提示错误并结束本次操作。
[0021]步骤S4,判断User的值是否是数据定义中定义的字符串类型,如是,则执行步骤S5,如否,则提示错误并结束本次操作。
[0022]步骤S5,计算数据的长度并判断数据长度是否大于预设值,如否,则执行步骤S6,如是,则提示错误并结束本次操作;其中7、计算数据的长度Ien (JohnR) =5,预设值的长度为24。
[0023]步骤S6,在二进制数据流中存储整形数字和字符串;在二进制数据流中存储整形数字4 (长度4字节),紧跟着存储字符串JohnR (长度5字节),总长度为4+5=9。
[0024]步骤S7,在输入的数据信息中查找Age,如查找到,则执行步骤S8,如查找不到,则提示错误并结束本次操作。
[0025]步骤S8,判断Age的值是否是数据定义中定义的整形,如是,则执行步骤S9,如否,则提示错误并结束本次操作。
[0026]步骤S9,在二进制数据
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1