CN104699754A - 一种基于用户直观方式操作二进制数据的方法及*** - Google Patents
一种基于用户直观方式操作二进制数据的方法及*** Download PDFInfo
- Publication number
- CN104699754A CN104699754A CN201410854757.7A CN201410854757A CN104699754A CN 104699754 A CN104699754 A CN 104699754A CN 201410854757 A CN201410854757 A CN 201410854757A CN 104699754 A CN104699754 A CN 104699754A
- Authority
- CN
- China
- Prior art keywords
- data
- length
- terminates
- definition
- byte
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种基于用户直观方式操作二进制数据的方法,包括设置对输入的数据信息定义数据描述的格式;将预先设置好的数据信息输入进行数据存储;在输入的数据信息中查找User, 在输入的数据信息中查找Age,在二进制数据流中存储整形数字和字符串;在存储后根据数据定义读取预设字节为第一列的字符串表示实际长度并判断剩余字节长度是否不足读取的字节长度,读取设定字节的实际长度并判断剩余长度是否不足设定字节,根据数据定义读取预置字节为第二列的整形并判断其长度是否不足预置字节,根据数据定义对二进制数据进行直观的修改。在不改变数据格式下,对输入数据最大限度压缩,同时保留了循环嵌套等多种有益特性提高了效率,易用性强。
Description
技术领域
本发明属于数据修改领域,尤其涉及一种基于用户直观方式操作二进制数据的方法及***。
背景技术
传统关系数据库是目前Web 应用中存取数据的主要形式。然而,随着Web2.0、大数据、云应用等技术的发展,传统的关系数据库在I/O、可扩展性上遇到了瓶颈,在大数据存取和访问时效率急剧下降,在高可扩展性和高可用性方面也遇到难题。为了解决此问题,许多方案相继提出,比如分布式数据库、主从数据库、无模式数据库等。无模式数据库,是一种模式自由的数据库,其模式主要为关系、树、图、文档等多种方式。实际上,很难完全抛弃现有的关系数据库而直接使用无模式数据库。以关系数据库为主,无模式数据库为辅,成了工业界和产业界普遍接受的方案。
现有的技术中,存在两类关系数据库与无模式数据库进行结合的方法:(1)以用户插件的方法,将无模式数据库集成到关系数据库中,使得关系数据库同时支持关系操作和无模式操作。该方法缺点是大量的打开/ 关闭表的操作十分耗时,降低了数据库性能;(2)混合使用关系数据库,以关系数据库为主,无模式数据库为辅,使用关系数据库进行大数据更新操作,采用某种机制将关系数据库模式和数据同步到无模式数据库。对于大数据的查询直接使用无模式数据库,而更新仍采用关系数据库。该方法优点是既解决了关系数据库中大数据的查询瓶颈问题,又解决了无模式数据库更新瓶颈问题。该方法的难点是如何将关系数据库模式和数据转换到无模式数据库。现有技术的解决方案及实现主要有两种方法:(1)通过关系数据库触发器,将数据的变化记录到临时查询表。该查询表通常由ID、表名、行号、时间戳和操作等模式构成。然后将临时查询表的数据同步到目标无模式数据库;(2)对方法(1)改进,取消临时查询表,通过增加关系数据库自定义HTTP 函数,直接将关系数据库数据变化增量通过HTTP 协议发送给目标无模式数据库,实现数据和模式的同步。
综上,现有关系数据库到无模式数据库的转换方法主要有以下问题:(1)不管是触发器还是用户自定义函数,其严重影响关系数据库性能;(2)数据传输过程无法保证数据操作的有序性,容易造成数据的不一致;(3)同步方式会阻塞数据库进程,降低关系数据库的模式和数据更新性能。
发明内容
本发明的目的在于提供一种基于用户直观方式操作二进制数据的方法,旨在解决上述的技术问题。
本发明是这样实现的,一种基于用户直观方式操作二进制数据的方法,所述方法包括以下步骤:
A、设置对输入的数据信息定义数据描述的格式;
B、将预先设置好的数据信息输入进行数据存储;
C、在输入的数据信息中查找User,如查找到,则执行步骤D,如查找不到,则提示错误并结束本次操作;
D、判断User的值是否是数据定义中定义的字符串类型,如是,则执行步骤E,如否,则提示错误并结束本次操作;
E、计算数据的长度并判断数据长度是否大于预设值,如否,则执行步骤F,如是,则提示错误并结束本次操作;
F、在二进制数据流中存储整形数字和字符串;
G、在输入的数据信息中查找Age,如查找到,则执行步骤H,如查找不到,则提示错误并结束本次操作;
H、判断Age的值是否是数据定义中定义的整形,如是,则执行步骤I,如否,则提示错误并结束本次操作;
I、在二进制数据流中存储整形数字;
J、在存储后根据数据定义读取预设字节为第一列的字符串表示实际长度并判断剩余字节长度是否不足读取的字节长度,如是,则提示错误并结束本次操作,如否,则执行步骤K;
K、读取设定字节的实际长度并判断剩余长度是否不足设定字节,如是,则提示出错并结束本次操作,如否,则读取结果为预设名并执行步骤L;
L、根据数据定义读取预置字节为第二列的整形并判断其长度是否不足预置字节,如是,则提示错误并结束本次操作,如否,则读取结果为预设值并执行步骤M;
M、根据数据定义对二进制数据进行直观的修改。
本发明的进一步技术方案是:所述数据描述格式对数据的列名、类型、最大长度进行定义。
本发明的进一步技术方案是:通过对数据定义来实现对二进制数据直观操作修改。
本发明的进一步技术方案是:所述预设值为24。
本发明的进一步技术方案是:在数据定义中支持的类型包括int8、int16、int32、int64、float、double、string、binary、struct及union。
本发明的另一目的在于提供一种基于用户直观方式操作二进制数据的***,该***包括:
数据定义模块,用于设置对输入的数据信息定义数据描述的格式;
数据存储模块,用于将预先设置好的数据信息输入进行数据存储;
第一查询模块,用于在输入的数据信息中查找User,如查找到,则执行字符串类型判断模块,如查找不到,则提示错误并结束本次操作;
字符串类型判断模块,用于判断User的值是否是数据定义中定义的字符串类型,如是,则执行长度判断模块,如否,则提示错误并结束本次操作;
长度判断模块,用于计算数据的长度并判断数据长度是否大于预设值,如否,则执行数据流存储模块,如是,则提示错误并结束本次操作;
数据流存储模块,用于在二进制数据流中存储整形数字和字符串;
第二查找模块,用于在输入的数据信息中查找Age,如查找到,则执行整形判断模块,如查找不到,则提示错误并结束本次操作;
整形判断模块,用于判断Age的值是否是数据定义中定义的整形,如是,则执行整形存储模块,如否,则提示错误并结束本次操作;
整形存储模块,用于在二进制数据流中存储整形数字;
字节长度判断模块,用于在存储后根据数据定义读取预设字节为第一列的字符串表示实际长度并判断剩余字节长度是否不足读取的字节长度,如是,则提示错误并结束本次操作,如否,则执行剩余长度判断模块;
剩余长度判断模块,用于读取设定字节的实际长度并判断剩余长度是否不足设定字节,如是,则提示错误并结束本次操作,如否,则读取结果为预设名并执行整形长度判断模块;
整形长度判断模块,用于根据数据定义读取预置字节为第二列的整形并判断其长度是否不足预置字节,如是,则提示错误并结束本次操作,如否,则读取结果为预设值并执行修改模块;
修改模块,用于根据数据定义对二进制数据进行直观的修改。
本发明的进一步技术方案是:所述数据描述格式对数据的列名、类型、最大长度进行定义。
本发明的进一步技术方案是:通过对数据定义来实现对二进制数据直观操作修改。
本发明的进一步技术方案是:所述预设值为24。
本发明的进一步技术方案是:在数据定义中支持的类型包括int8、int16、int32、int64、float、double、string、binary、struct及union。
本发明的有益效果是:在不改变数据格式的前提下,对输入数据进行最大限度压缩,同时保留了循环嵌套等多种有益特性,其效率比同类型的产品(ProtocolBuffer)提高20倍以上,可以作为C/C++、C#、ActionScript、Java、Python等多种实现,易用性相当高。
附图说明
图1是本发明实施例提供的基于用户直观方式操作二进制数据的方法的流程图;
图2是本发明实施例提供的基于用户直观方式操作二进制数据的方法的结构框图。
具体实施方式
图1示出了本发明提供的基于用户直观方式操作二进制数据的方法的流程图,其详述如下:
步骤S1,设置对输入的数据信息定义数据描述的格式;1、 用户定义数据描述格式(类似XSD(XML Schema 语言也称作XML Schema 定义(XML Schema Definition,XSD)),例如用户定义,第一列数据为<entry name=”User” type=”string” size=”24”>表示,列名为User,数据类型为字符串,最大长度为24;3、 第二列数据为<entry name=”Age” type=”int”>表示,列名为Age,数据类型为整形数字。
步骤S2,将预先设置好的数据信息输入进行数据存储;用户输入希望存储的数据,例如User=JohnR,Age=24等。
步骤S3,在输入的数据信息中查找User,如查找到,则执行步骤S4,如查找不到,则提示错误并结束本次操作。
步骤S4,判断User的值是否是数据定义中定义的字符串类型,如是,则执行步骤S5,如否,则提示错误并结束本次操作。
步骤S5,计算数据的长度并判断数据长度是否大于预设值,如否,则执行步骤S6,如是,则提示错误并结束本次操作;其中7、 计算数据的长度len(JohnR)=5,预设值的长度为24。
步骤S6,在二进制数据流中存储整形数字和字符串;在二进制数据流中存储整形数字4(长度4字节),紧跟着存储字符串JohnR(长度5字节),总长度为4+5=9。
步骤S7,在输入的数据信息中查找Age,如查找到,则执行步骤S8,如查找不到,则提示错误并结束本次操作。
步骤S8,判断Age的值是否是数据定义中定义的整形,如是,则执行步骤S9,如否,则提示错误并结束本次操作。
步骤S9,在二进制数据流中存储整形数字;在二进制数据流中存储整形数字24,此时,整个数据流长度为9+4=13。
步骤S10,在存储后根据数据定义读取预设字节为第一列的字符串表示实际长度并判断剩余字节长度是否不足读取的字节长度,如是,则提示错误并结束本次操作,如否,则执行步骤S11;13、 读取时,根据数据定义,第一列为字符串,那么读取首4个字节,用来表示随后的字符串实际长度,如剩余长度不足4字节,提示错误,退出流程。
步骤S11,读取设定字节的实际长度并判断剩余长度是否不足设定字节,如是,则提示出错并结束本次操作,如否,则读取结果为预设名并执行步骤S12;读取结果为5字节,随后读取5字节的实际长度,如果剩余长度不足5字节,提示出错,退出流程。
步骤12,根据数据定义读取预置字节为第二列的整形并判断其长度是否不足预置字节,如是,则提示错误并结束本次操作,如否,则读取结果为预设值并执行步骤S13;读取结果为JohnR,根据数据定义,第二列为整形,那么读取4字节,如果长度不足4字节,退出流程。
步骤S13,根据数据定义对二进制数据进行直观的修改。读取结果为24。根据数据定义,第一列列名为User,第二列列名为Age,那么可知改数据为User=JohnR,Age=24。
所述数据描述格式对数据的列名、类型、最大长度进行定义。
通过对数据定义来实现对二进制数据直观操作修改。
在数据定义中支持的类型包括int8、int16、int32、int64、float、double、string、binary、struct及union。
图2示出了发明的另一目的在于提供一种基于用户直观方式操作二进制数据的***,该***包括:
数据定义模块1,用于设置对输入的数据信息定义数据描述的格式;
数据存储模块2,用于将预先设置好的数据信息输入进行数据存储;
第一查询模块3,用于在输入的数据信息中查找User,如查找到,则执行字符串类型判断模块,如查找不到,则提示错误并结束本次操作;
字符串类型判断模块4,用于判断User的值是否是数据定义中定义的字符串类型,如是,则执行长度判断模块,如否,则提示错误并结束本次操作;
长度判断模块5,用于计算数据的长度并判断数据长度是否大于预设值,如否,则执行数据流存储模块,如是,则提示错误并结束本次操作;
数据流存储模块6,用于在二进制数据流中存储整形数字和字符串;
第二查找模块7,用于在输入的数据信息中查找Age,如查找到,则执行整形判断模块,如查找不到,则提示错误并结束本次操作;
整形判断模块8,用于判断Age的值是否是数据定义中定义的整形,如是,则执行整形存储模块,如否,则提示错误并结束本次操作;
整形存储模块9,用于在二进制数据流中存储整形数字;
字节长度判断模块10,用于在存储后根据数据定义读取预设字节为第一列的字符串表示实际长度并判断剩余字节长度是否不足读取的字节长度,如是,则提示错误并结束本次操作,如否,则执行剩余长度判断模块;
剩余长度判断模块11,用于读取设定字节的实际长度并判断剩余长度是否不足设定字节,如是,则提示错误并结束本次操作,如否,则读取结果为预设名并执行整形长度判断模块;
整形长度判断模块12,用于根据数据定义读取预置字节为第二列的整形并判断其长度是否不足预置字节,如是,则提示错误并结束本次操作,如否,则读取结果为预设值并执行修改模块;
修改模块13,用于根据数据定义对二进制数据进行直观的修改。
所述数据描述格式对数据的列名、类型、最大长度进行定义。
通过对数据定义来实现对二进制数据直观操作修改。
所述预设值为24。
在数据定义中支持的类型包括int8、int16、int32、int64、float、double、string、binary、struct及union。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于用户直观方式操作二进制数据的方法,其特征在于,所述方法包括以下步骤:
A、设置对输入的数据信息定义数据描述的格式;
B、将预先设置好的数据信息输入进行数据存储;
C、在输入的数据信息中查找User,如查找到,则执行步骤D,如查找不到,则提示错误并结束本次操作;
D、判断User的值是否是数据定义中定义的字符串类型,如是,则执行步骤E,如否,则提示错误并结束本次操作;
E、计算数据的长度并判断数据长度是否大于预设值,如否,则执行步骤F,如是,则提示错误并结束本次操作;
F、在二进制数据流中存储整形数字和字符串;
G、在输入的数据信息中查找Age,如查找到,则执行步骤H,如查找不到,则提示错误并结束本次操作;
H、判断Age的值是否是数据定义中定义的整形,如是,则执行步骤I,如否,则提示错误并结束本次操作;
I、在二进制数据流中存储整形数字;
J、在存储后根据数据定义读取预设字节为第一列的字符串表示实际长度并判断剩余字节长度是否不足读取的字节长度,如是,则提示错误并结束本次操作,如否,则执行步骤K;
K、读取设定字节的实际长度并判断剩余长度是否不足设定字节,如是,则提示出错并结束本次操作,如否,则读取结果为预设名并执行步骤L;
L、根据数据定义读取预置字节为第二列的整形并判断其长度是否不足预置字节,如是,则提示错误并结束本次操作,如否,则读取结果为预设值并执行步骤M;
M、根据数据定义对二进制数据进行直观的修改。
2.根据权利要求1所述的方法,其特征在于,所述数据描述格式对数据的列名、类型、最大长度进行定义。
3.根据权利要求2所述的方法,其特征在于,通过对数据定义来实现对二进制数据直观操作修改。
4.根据权利要求3所述的方法,其特征在于,所述预设值为24。
5.根据权利要求3所述的方法,其特征在于,在数据定义中支持的类型包括int8、int16、int32、int64、float、double、string、binary、struct及union。
6.一种基于用户直观方式操作二进制数据的***,其特征在于,该***包括:
数据定义模块,用于设置对输入的数据信息定义数据描述的格式;
数据存储模块,用于将预先设置好的数据信息输入进行数据存储;
第一查询模块,用于在输入的数据信息中查找User,如查找到,则执行字符串类型判断模块,如查找不到,则提示错误并结束本次操作;
字符串类型判断模块,用于判断User的值是否是数据定义中定义的字符串类型,如是,则执行长度判断模块,如否,则提示错误并结束本次操作;
长度判断模块,用于计算数据的长度并判断数据长度是否大于预设值,如否,则执行数据流存储模块,如是,则提示错误并结束本次操作;
数据流存储模块,用于在二进制数据流中存储整形数字和字符串;
第二查找模块,用于在输入的数据信息中查找Age,如查找到,则执行整形判断模块,如查找不到,则提示错误并结束本次操作;
整形判断模块,用于判断Age的值是否是数据定义中定义的整形,如是,则执行整形存储模块,如否,则提示错误并结束本次操作;
整形存储模块,用于在二进制数据流中存储整形数字;
字节长度判断模块,用于在存储后根据数据定义读取预设字节为第一列的字符串表示实际长度并判断剩余字节长度是否不足读取的字节长度,如是,则提示错误并结束本次操作,如否,则执行剩余长度判断模块;
剩余长度判断模块,用于读取设定字节的实际长度并判断剩余长度是否不足设定字节,如是,则提示错误并结束本次操作,如否,则读取结果为预设名并执行整形长度判断模块;
整形长度判断模块,用于根据数据定义读取预置字节为第二列的整形并判断其长度是否不足预置字节,如是,则提示错误并结束本次操作,如否,则读取结果为预设值并执行修改模块;
修改模块,用于根据数据定义对二进制数据进行直观的修改。
7.根据权利要求6所述的***,其特征在于,所述数据描述格式对数据的列名、类型、最大长度进行定义。
8.根据权利要求7所述的***,其特征在于,通过对数据定义来实现对二进制数据直观操作修改。
9.根据权利要求8所述的***,其特征在于,所述预设值为24。
10.根据权利要求9所述的***,其特征在于,在数据定义中支持的类型包括int8、int16、int32、int64、float、double、string、binary、struct及union。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410854757.7A CN104699754B (zh) | 2014-12-31 | 2014-12-31 | 一种基于用户直观方式操作二进制数据的方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410854757.7A CN104699754B (zh) | 2014-12-31 | 2014-12-31 | 一种基于用户直观方式操作二进制数据的方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104699754A true CN104699754A (zh) | 2015-06-10 |
CN104699754B CN104699754B (zh) | 2017-09-12 |
Family
ID=53346875
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410854757.7A Expired - Fee Related CN104699754B (zh) | 2014-12-31 | 2014-12-31 | 一种基于用户直观方式操作二进制数据的方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104699754B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130060797A1 (en) * | 2011-09-07 | 2013-03-07 | Paul Saunier | Data transformation method and system |
CN103701801A (zh) * | 2013-12-26 | 2014-04-02 | 四川九洲电器集团有限责任公司 | 一种资源访问控制方法 |
CN103699633A (zh) * | 2013-12-23 | 2014-04-02 | Tcl集团股份有限公司 | 一种利用xml实现通用化数据交换的方法和*** |
-
2014
- 2014-12-31 CN CN201410854757.7A patent/CN104699754B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130060797A1 (en) * | 2011-09-07 | 2013-03-07 | Paul Saunier | Data transformation method and system |
CN103699633A (zh) * | 2013-12-23 | 2014-04-02 | Tcl集团股份有限公司 | 一种利用xml实现通用化数据交换的方法和*** |
CN103701801A (zh) * | 2013-12-26 | 2014-04-02 | 四川九洲电器集团有限责任公司 | 一种资源访问控制方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104699754B (zh) | 2017-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104391730B (zh) | 一种软件源码语言翻译***及方法 | |
KR101525529B1 (ko) | 데이터 처리장치 및 그 데이터 매핑방법 | |
CN104809190B (zh) | 一种树形结构数据的数据库存取方法 | |
CN103500196B (zh) | 多并发大数据量环境下excel数据导出方法及其导出装置 | |
US10769124B2 (en) | Labeling versioned hierarchical data | |
CN105302803B (zh) | 一种产品bom差异分析与同步更新方法 | |
CN110515896B (zh) | 模型资源管理方法、模型文件制作方法、装置和*** | |
CN101727502A (zh) | 一种数据查询方法及装置、*** | |
CN104504030B (zh) | 一种面向电力调度自动化海量报文的索引方法 | |
CN103412868A (zh) | 文书生成方法及装置 | |
CN103123650A (zh) | 一种基于整数映射的xml数据库全文索引方法 | |
CN102708142A (zh) | 一种通过sql定制模板获取后台数据的方法和*** | |
CN104346331A (zh) | Xml数据库的检索方法及*** | |
CN106843891A (zh) | 一种基于增量的表单分层扩展方法 | |
CN103020318A (zh) | 一种对数据库中数据库表维护的方法 | |
US20070220420A1 (en) | System and method for efficient maintenance of indexes for XML files | |
CN103927168B (zh) | 一种面向对象的数据模型持久化的方法及装置 | |
CN110308907A (zh) | 数据转换方法、装置、存储介质及电子设备 | |
CN102346765A (zh) | 一种查询内存数据的方法及装置 | |
CN102999629B (zh) | 一种关系数据库到无模式数据库异步转换***及方法 | |
CN103902651B (zh) | 一种基于MongoDB的云端代码查询方法与装置 | |
CN104699754A (zh) | 一种基于用户直观方式操作二进制数据的方法及*** | |
CN102521318A (zh) | 基于xml的通用数据交换装置 | |
CN105550176A (zh) | 一种关系数据库与xml的基本映射方法 | |
CN109271350B (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170912 Termination date: 20191231 |