如果我有很多租户,每个租户都可以创建很多自定义表单,每个表单的字段 id 都不一样,租户和表单会持续增长,只考虑数据库优化,怎么解决动态字段存储问题;
暂时考虑使用分片,按{tenant_id, form_id}进行分片;
某个动态字段也可能是一个表单 json 应该把动态字段放到一个 json 中,像
{
  "tenant_id": 1, 
  "form_id": 1, 
  "data": {
    "f1": "f1", 
    "f2": "f2", 
    "f3": {
        "f3-1": "f3-1"
    }
  }
}
还是动态字段就和 tenant_id 并列在顶级,像
{
    "tenant_id": 1, 
    "form_id": 1, 
    "f1": "f1", 
    "f2": "f2", 
    "f3": {
        "f3-1": "f3-1"
    }
}
哪种设计方案比较好?
|  |      1SethShi      49 天前 肯定方案一呀 | 
|  |      2donaldturinglee      49 天前 你对比一下 data["f1"]["1-1"]["xxxx"]和 f1["1-1"]["xxx"]哪个可读性更高就知道了 | 
|  |      3crysislinux      49 天前 via Android 建议再加个 version 来指明 schema 版本方便后续更新 | 
|  |      4clf      49 天前 肯定是 1 好。很简单,你表单数据均在 data 里,这样避免了后续扩充字段的时候可能的冲突。 |