mysql存储变化数据的三种方案

mysql 就像一个excel ,可以用来存储kv形式的数据,可以开几个字段,每个字段存储对应的数值,就像excel中的列一样。

我们现在面临的一个问题,就是一个页面上有很多的数据,有些数据在这个页面有,下一个页面一样级别的页面没有,有些数据或许有很大可能性的根据之后情况的变化随机添加,基本上可以说是在变化中存在基础的不变情况。

一般的来说,有三种方案。

第一种,为所有可能的情况建立字段,每条数据一个字段,如果没有添加,就为空,如果出现了之前没有对应字段的数据,就修改mysql,添加新字段,添加新的表。这个的优点是加快了查找的速度,保证了每个页面,一条纪录,而且,逻辑结构简单,方便理解,代码层面也容易的很多,只是维护上的困难比较大一些,可能出现频频修改mysql表的情况,也许最后字段数目之多,已经达到了无法容忍的地步,存储空间的浪费,也是很大的问题,总之可扩展性和维护性是很大的问题。

第二种就在可扩展性和可维护性上做的不错,简而言之,就是将所有的这些或许有,或许无的数据,以及将来添加的数据,通过序列化的方式保存在一个text中,将那些必须有的,通过创建对应的字段的方式保存,优点是无论添加多少类型的数据,都可以有对应的存储的地方,缺点是不能对应的查找,因为想获取对应的数据,必须将数据解析出来,然后才可以有对应的操作。

第三种是在第二种基础上进行了一个升级,本来通过kv的形式序列化存储到text中的数据,目前就通过创建一个单独的表的方式,然后将kv的数据存储起来,value就提供一个text或者是varchar存储,保证所有的内容都可以保存到字段里面,如果以后查找的时候,可以通过key查找,也可以在不用解压数据的情况下,直接在sql中查找,满足了扩展性维护性的同时,避免了无法查找的问题,缺点是编码有些复杂,不过应该是目前看起来最好的方案

Leave a comment

Your email address will not be published.

*