陆离的光怪世界

后端存储数据类型介绍

    BUG制造者     数据库

我们在后台存储数据时,选择一种比较合适的数据类型往往会给后期工作带来很多便利。比如存储人名,可以使用CHARVARCHAR,这两者的区别顾名思义,就是VARCHAR是可变长的,而CHAR是固定长度的。
换句话说,如果你给CHAR设置长度为4,那么每一个数据的长度就固定为4(至于具体是4个字节还是4个字符,MySQL和PostgreSQL好像不太一样),如果不够4个字节(假设以字节为单位),就会补齐;如果设置VARCHAR为4,那么长度小于4时,数据存储在数据库的长度就是其实际长度。所以根据实际情况,如果想要存储上更省空间就用VARCHAR,如果想要每次存储时不需要额外的计算(VARCHAR由于长度不一,需要记录其实际长度)就用CHAR。

数据库存储的基本类型包括数字型、字符型、日期类型以及长文本(text)类型。

对于一些多媒体文件的存储类型,常见的做法是存储其URL路径,因为直接在数据库存储图片视频的做法想想就不可能!数据库的作用就是在我们需要查询数据时能够及时地取出,需要存储时能够比较快速地存入。如果查询一个视频类文件,需要从硬盘上加载几十分钟….想想就可怕。
因此,如果直接存储其URL,而它的实际内容可以在我们需要读取它时从服务器上读出来,这样就大大提高了性能,也比较符合我们的操作逻辑。

还有一种常见的数据结构是,flag或者说开关。即,在表中需要存储其值是1或0,1代表有0代表无。如果只是某个字段还好,如delete_flag。但是如果有很多,而且是同一类型的,那不可能在数据表里设置这么多字段。比如,存储房间里的家具种类,像这样:

1
"furniture": "{\"bed\": 1,\"wardrobe\": 0,\"sofa\": 0,\"desksAndChairs\": 0,\"wifi\": 1,\"tv\": 0,\"airConditioner\": 1,\"washer\": 0,\"refrigerator\": 1,\"waterHeater\": 1,\"gasStoves\": 0,\"heating\": 1}"

这里的做法就是直接将其整体作为一个JSON字符串存储,这样的好处是既节省了空间(只需要一个字符串类型的字段)又方便后台处理。在Java代码里处理它只需要将其以JSON方式解析即可(有很多可以利用的JSON解析库,如阿里的fastjson)。

还有什么其它常见类型的存储方式,下次遇见了再追加吧。

页阅读量:  ・  站访问量:  ・  站访客数: