JSON 是一种类似 XML 的语言,是用了存储和交换文本信息的语法,采用完全独立于语言的文本格式。它的全称为 JavaScript Object Notation ( JavaScript 对象表示法) 是一种轻量级的数据交换格式 。 与xml对比,它更小、更快,更易解析。这些特性使 JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。
上面已经介绍了 json 的定义,来分析一下我们的引用场景,数据字典中定义了多个对象,有的对象需要根据类型在区分这种对象是什么类型的对象,例如设备有很多的类型,通常说设备都会说他是什么类型的设备。
例如:低压开关柜(TDLS)、通风风机(VTSF)、供热水泵(CHHP)。他们都有一部分相同的信息点,基本信息、台账参数,这部分是通用的所有他们都有,每中类型都有自己独特的属性。那么问题就暴露出来了。 我们想要创建设备表的时候就要分析一下怎么来建,设备目前有一百多种类型,所以设备表应该怎么建每种类型见一个表还是,还是只建一个表?
上面提到设备有一百多种类型,只是说到了设备,资产也有几十种类型,部件也有几十类型,只是设备的话就要创建一百多个表,而且每个表里面的属性是不完全相同的需要手工创建出来,即使使用自动创建表, 在数据库管理中,你还能直接定位到你要看的设备那,这样要对这一百多个表都要做增删改查即使没有暴露给前端,后端处理的时候方便吗?,需要添加一个类型是就要多创建一个表出来。可见这个是行不通的, 如果要做一个报表查询能很快的高效的完成吗?,查询某一项目下某一楼层下的所有设备,只是这一个简单的查询需要多少的工作量来完成,所以这个方案 X 叉掉。
横表存储,一般对象(字段固定)的存储采用的是横表;
* 优点:数据库标准支持,查询速度快;
* 缺点:动态改字段
竖表存储
* 优点:采用字段/值的方式存储,增删字段没任何压力;
* 缺点:值类型受限,不利于做复杂的查询。对null支持不好;
Json存储
* MySQL、PostgreSQL、Oracle、SQLServer都支持Json存储了;
* 可以使用SQL语句直接对Json字段中的内容进行增删改查;
* 属性可以分组,做成树型结构。符合数据字典的定义格式;
* 新增信息点不用做任何改动,可以直接把属性存储到数据表里面;
从上面的分析中我们得出结论,使用 json 是最优解。