动态formbuilder的数据库模式

时间:2015-02-14 13:43:31

标签: database dynamic database-design schema nosql

我知道已经有类似问题的答案,但我认为答案不够强,所以我会问自己的具体问题。

  • 假设: 动态表单构建器,用户可以创建具有未知结构的表单。

  • 溶液: 表单提交,数据将存储在2表结构中:

    1. FormSubmissionHeader表,用于存储有关提交的一些基本数据(formid,userid,datetime等)
    2. FormSubmissionFieldsData(FormSubmissionHeaderID,FIELDID,FIELDVALUE)

我对此解决方案的问题在于大量使用:
假设我有100万用户,
每个用户将有3个表格
每个表格将有10个字段
每个表格每天将有5份提交。

因此,FormSubmissionHeader每天将增加100万X3X5 =每天1500万行。

和FormSubmissionFieldsData将增长15X10(每日提交的数量,字段的双倍数),意味着每天1.5亿行。

所以基于这个解决方案:

我不知道它是如何运作的。

我看到两种选择:

  1. 使用MONGODB存储提交标题和数据(NO SQL)

  2. 为每个表单动态创建表并直接在其中存储数据 每个字段的相关数据类型。

  3. 这是我看到的similar question ..

    Wufoo's Database Schema - How would you design it?

    我想知道你们是怎么想的,或者你能提出别的建议吗?

1 个答案:

答案 0 :(得分:2)

你必须努力工作才能说服我,每天150万行是这个时代的大量数据。这实际上取决于您打算如何处理提交内容。只要您正确索引,大多数查询都可以正常工作。

但是如果你真的必须减少行数,你可以用json格式保存表单提交。我相信Postresql开箱即用。您可以同时获得两全其美,结构化和半结构化数据。

因此表单表没有变化,但提交表将有一些关于提交的列(用户,表单id,日期等)和一个json列,答案为json对象,您可以查询同样。