有个关于 mongodb 的问题,求大神来解答一下

1 天前
 simple233

如果我有很多租户,每个租户都可以创建很多自定义表单,每个表单的字段 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"
    }
}

哪种设计方案比较好?

774 次点击
所在节点    数据库
4 条回复
seth19960929
1 天前
肯定方案一呀
donaldturinglee
1 天前
你对比一下 data["f1"]["1-1"]["xxxx"]和 f1["1-1"]["xxx"]哪个可读性更高就知道了
crysislinux
1 天前
建议再加个 version 来指明 schema 版本方便后续更新
clf
1 天前
肯定是 1 好。很简单,你表单数据均在 data 里,这样避免了后续扩充字段的时候可能的冲突。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1158855

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX