TL;DR
- auto_increment + JSON型(あるいはBLOB型やTEXT型でもいいけど)に生のJSONを突っ込む
- 後から
SELECT .. FOR UPDATE SKIP LOCKED
でワーカーが取り出して、INSERT .. SELECT JSON_TABLE(..) FROM ..
で正規化したテーブルに突っ込みなおす - 外部APIからの戻りのJSONを取り敢えずログテーブルに格納して…みたいな感じを想像している
PoC こんなテーブルを用意した。
mysql80 13> SHOW CREATE TABLE t2\G
*************************** 1. row ***************************
Table: t2
Create Table: CREATE TABLE `t2` (
`seq` int(10) unsigned NOT NULL AUTO_INCREMENT,
`raw_json` json DEFAULT NULL,
PRIMARY KEY (`seq`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_ja_0900_as_cs
1 row in set (0.00 sec)
…
[さらに読む]