MySQLのJSON型
MySQL 5.7でJSONに対応した
MySQL :: MySQL 8.0 Reference Manual :: 11.5 The JSON Data Type
いままでもJSONをstringのカラムに入れることができたが、それに比べて
JSONがvalidでないとerrorになってくれる
アクセスを早くするような構造に内部で変換してくれる
MySQL 5.7で対応したJSONデータ型の使い方まとめ - WPJ
使い所
JSONは絶対に必要ではない限り利用はおすすめしません。MySQLでドキュメント指向のNoSQLデータベースを模倣できるかもしれませんが、SQLの多くの利点が損なわれてしまうでしょう。本物のNoSQLシステムに切り替えた方がまだましです。
しかし、JSONを使えば、SQLをベースにしたアプリケーション内の分かりにくいデータ要件に対して、多少でも手間を省けるでしょう。
中心的な使い方がドキュメント指向DBに向いているならそちらをつかう
使い所
列が実行時まで決まらず、有限のバリエーションに収まらないとき(例: エンドユーザーが作成するアンケートフォーム等)で、かつそれを EAV アンチパターンで解決したくないときに使います(バリエーションがそこまで多くないなら STI や CTI などのパターンで仕留めます)
https://twitter.com/t_wada/status/1192599529696067584?s=21
EAVアンチパターン
SQLアンチパターン
FiNC Developers Blog — t-wadaさんとのSQLアンチパターン勉強会
NULLを許容しながら1つのテーブルを作成するSTI
NULLを可能な限り排除すべくデータセットごとにテーブルを作成するCTI