非结构存储:用好 JSON数据类型

目录

一、JSON 数据类型

二、实战:用户登录设计

三、实战:用户画像设计


一、JSON 数据类型

JSON(JavaScript Object Notation)主要用于互联网应用服务之间的数据交换。MySQL 支持RFC 7159定义的 JSON 规范,主要有JSON 对象和JSON 数组两种类型。下面就是 JSON 对象,主要用来存储图片的相关信息:

{

 "Image": {

   "Width": 800,

   "Height": 600,

   "Title": "View from 15th Floor",

   "Thumbnail": {

     "Url": "http://www.example.com/image/481989943",

     "Height": 125,

     "Width": 100

   },

 "IDs": [116, 943, 234, 38793]

 }

}

JSON对象除了支持字符串、整型、日期类型,JSON 内嵌的字段也支持数组类型,如上代码中的 IDs 字段。需要注意是,JSON 类型是从 MySQL 5.7 版本开始支持的功能,而 8.0 版本解决了更新 JSON 的日志性能瓶颈。如果要在生产环境中使用 JSON 数据类型,强烈推荐使用 MySQL 8.0 版本。

二、实战:用户登录设计

在数据库中,JSON 类型比较适合存储一些修改较少、相对静态的数据,比如用户登录信息的存储如下:

DROP TABLE IF EXISTS UserLogin;

CREATE TABLE UserLogin (

    userId BIGINT NOT NULL,

    loginInfo JSON,

    PRIMARY KEY(userId)

);
 

由于当前业务的登录方式越来越多样化,如同一账户支持手机、微信、QQ 账号登录,所以这里可以用 JSON 类型存储登录的信息。

SET @a = '

{

    "cellphone" : "13918888888",

    "wxchat" : "破产码农",

    "QQ" : "82946772"

}

';

INSERT INTO UserLogin VALUES (1,@a);

SET @b = '

{

    "cellphone" : "15026888888"

}

';

INSERT INTO UserLogin VALUES (2,@b);
 

而如果不采用 JSON 数据类型,就要用下面的方式建表:

CREATE TABLE UserLogin (

    userId        BIGINT NOT NULL,

    cellphone    VARCHAR(255),

    wechat        VARCHAR(255)

    QQ            VARCHAR(255),

    PRIMARY KEY(userId)

);
 

因为支持

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值