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