aLoNe IT Develop Studio

  • 首页
  • IT前沿
  • Web技术
  • 小姿势
  • 运维管理
  • 随笔
欢迎来到aLoNe.Adams.K的个人博客
  1. 首页
  2. 小姿势
  3. 正文

虚表!高性能网络传输数据结构,替代Json的好帮手!

2017年3月30日 4659点热度 0人点赞 0条评论

Json是什么

JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于 ECMAScript 规范的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

Json的语法规则

在 JS 语言中,一切都是对象。因此,任何支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。但是对象和数组是比较特殊且常用的两种类型:

  • 对象表示为键值对
  • 数据由逗号分隔
  • 花括号保存对象
  • 方括号保存数据

Json的格式范例

{"firstName": "John"}

Json格式的劣势

当使用Json承载数据表中的数据时候,会发现Json数组中的每个Json对象中都包含了重复的键名。在数据量多了的时候,重复出现的键名会导致每次网络交互中需要花费大量的流量在传递多余的键名上,会导致占用、消耗更多的网络资源,降低了网络的传输效率。

什么是虚表

虚表是高度简洁的数据模型,虚表由3部分构成:
1. 消息头
2. 字段头
3. 消息体

消息头

消息头是用于描述简单信息的,其由以下及部分组成
1. STATE 状态,0为正确,非0为错误
2. MESS 具体内容
3. ALLSIZE 当前返回数据完整的数据量,该属性一般用于返回数据集时,保存数据集完整数据数量
4. CURRENT 当前页码,该属性用于分页中描述当前第几页
5. PAGESIZE 分页数据量,该属性用于描述分页中每页的数据量

完整的消息头为,STATE#1MESS#1ALLSIZE#1CURRENT#1PAGESIZE

这里注意下,#1 代表的是asc字符中的数值为1的字符,在不同的语言中其表达形式不一样,Delphi中可以直接用#1,C#中可以用(char)1,java中也可以用(char)1表示。

字段头

字段头是用于描述虚表中保存的数据体所包含的字段定义的,其格式为:

COLTYPE:COLNAME

此为一个字段的定义,多个字段间用asc码中的数值为1的字符来进行间隔,也就是如下:

COLTYPE1:COLNAME1#1COLTYPE2:COLNAME2#1COLTYPE3:COLNAME3

关于字段的类型,定义为:1:整数 2:浮点 3:日期 4:时间 5:日期时间 6:字符串 7:布尔 8:多行文本 9:图像 10:大数据

消息体

消息体是保存数据集的部分,进行数据查询之后,将数据集中的每行数据进行解析,存放在消息体中,其一行数据的格式为:

ROWVALUE1#1ROWVALUE2#1ROWVALUE3

消息体中每行数据的下表,对应着字段头当中同样下标的字段内容。

虚表完整结构

虚表的消息头、字段头、消息体之间,通过#2来进行链接,即asc码中数值为2的字符。其格式如下:

消息头#2字段头#2消息体

虚表的优势

  1. 在大数据量传输过程中,每一行数据无需带有多余信息,只需要包含每个字段的值即可,降低了数据传输量。
  2. 结构简单,描述内容完善,虚表中包含字段的类型定义
  3. 使用方便,即可单独使用消息头部分,也可以完整使用。

虚表的劣势

  1. 非原生支持,每种语言下需要自己写相关的解析代码
  2. 没有了……

Json和虚表的性能对比

未完待续。。。

标签: VirtualTable 虚表
最后更新:2017年3月30日

aLoNe.Adams.K

一只胖菜鸟!

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复
文章分类
  • IT前沿 / 3篇
  • Web技术 / 2篇
  • 小姿势 / 24篇
  • 运维管理 / 5篇
  • 随笔 / 3篇
标签聚合
Orange Pi CentOS 反向代理 google 虚表 debian sqlite Yum
最新 热点 随机
最新 热点 随机
团队开发规范培训(代码管理篇) 团队开发规范培训(序) 忆 我的座右铭 DevilBox全程操作记录 香橙派Orange Pi Zero基于Debian进行反向代理配置
Windows Server 2008 R2 负载平衡入门篇 团队开发规范培训(代码管理篇) 全球首个微信应用号开发教程!通宵吐血赶稿,每日更新! 虚表!高性能网络传输数据结构,替代Json的好帮手! 常见颜色深度的 bitmap 之间的相互转换 MySQL创建数据库并授权的SQL
友情连接
  • 李建伟博客
  • 不忘初心的简书
归档
  • 2022年12月 / 5篇
  • 2022年6月 / 1篇
  • 2022年2月 / 3篇
  • 2020年11月 / 1篇
  • 2018年12月 / 1篇
  • 2018年5月 / 1篇
  • 2018年3月 / 1篇
  • 2017年11月 / 1篇
  • 2017年8月 / 1篇
  • 2017年3月 / 2篇
  • 2017年1月 / 1篇
  • 2016年9月 / 16篇

COPYRIGHT © 2022 aLoNe IT Develop Studio. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

陕ICP备19021656号-2