如果我有很多租户,每个租户都可以创建很多自定义表单,每个表单的字段 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"
}
}
哪种设计方案比较好?
![]() |
1
seth19960929 11 小时 30 分钟前
肯定方案一呀
|
![]() |
2
donaldturinglee 11 小时 9 分钟前
你对比一下 data["f1"]["1-1"]["xxxx"]和 f1["1-1"]["xxx"]哪个可读性更高就知道了
|
![]() |
3
crysislinux 10 小时 27 分钟前 via Android
建议再加个 version 来指明 schema 版本方便后续更新
|
![]() |
4
clf 10 小时 23 分钟前
肯定是 1 好。很简单,你表单数据均在 data 里,这样避免了后续扩充字段的时候可能的冲突。
|