我知道已经有类似问题的答案,但我认为答案不够强,所以我会问自己的具体问题。
假设: 动态表单构建器,用户可以创建具有未知结构的表单。
溶液: 表单提交,数据将存储在2表结构中:
我对此解决方案的问题在于大量使用:
假设我有100万用户,
每个用户将有3个表格
每个表格将有10个字段
每个表格每天将有5份提交。
因此,FormSubmissionHeader每天将增加100万X3X5 =每天1500万行。
和FormSubmissionFieldsData将增长15X10(每日提交的数量,字段的双倍数),意味着每天1.5亿行。
所以基于这个解决方案:
我不知道它是如何运作的。
我看到两种选择:
使用MONGODB存储提交标题和数据(NO SQL)
为每个表单动态创建表并直接在其中存储数据 每个字段的相关数据类型。
这是我看到的similar question ..
Wufoo's Database Schema - How would you design it?
我想知道你们是怎么想的,或者你能提出别的建议吗?
答案 0 :(得分:2)
你必须努力工作才能说服我,每天150万行是这个时代的大量数据。这实际上取决于您打算如何处理提交内容。只要您正确索引,大多数查询都可以正常工作。
但是如果你真的必须减少行数,你可以用json格式保存表单提交。我相信Postresql开箱即用。您可以同时获得两全其美,结构化和半结构化数据。
因此表单表没有变化,但提交表将有一些关于提交的列(用户,表单id,日期等)和一个json列,答案为json对象,您可以查询同样。