【发布时间】:2014-07-06 01:30:14
【问题描述】:
我们正在开发一个大型内部项目,该项目使用户能够上传 Excel 文件,并最终对从这些 Excel 中收集的所有数据执行搜索。在开始设计之前,我正在尝试做功课,并提出最佳解决方案。
要求是 -
用户可以上传包含任意多列的 excel 文件,因此 excel 没有预定义的结构。
与第一点相反,我们假设用户拥有一些字段。例如 - 名字,姓氏。这些列不一定存在。
- 搜索选项将按以下方式工作 - 当用户搜索时,他可以按特定列进行搜索 - 那些是预定义的并且我们希望他的 excel 文件具有。 (在我们的示例中 - 名字和姓氏)。 他还可以在“其他”字段下搜索所有其他列。
关于 Other 搜索字段的另一个词 - 该字段将遍历所有不适合预定义列的 Excel 文件中的所有列。 IE - 一个文件有一个年龄列,另一个有一个出生地列,“其他”字段将搜索所有这些列。
最好的方法是什么?
为每个上传的 excel 动态创建一个新的 django 模型,包含 excel 的所有列?
为每个文件动态创建一个新的 django 模型,其中包含所有预定义的列(如果存在!)和一个“其他”文本字段,它将连接所有不相关的字段?
有一个大的 django 模型(意味着我的数据库中只有 1 个表),其中包含我所有的预定义字段(同样可以为空),还有一个名为“其他”的字段,它将连接所有不相关的列?
我可以拥有包含所有预定义列的主表,以及具有主表外键的另一个表,其中每一行代表一个“其他”字段。
第四个解决方案的示例 -
+----+--------+--------+--------+
| id | field1 | field2 | field3 |
+----+--------+--------+--------+
| 1 | val1 | val1 | val1 |
| 2 | val2 | val2 | val2 |
| 3 | val3 | val3 | val3 |
+----+--------+--------+--------+
还有维度表——
+----+------+------+
| fk | key | val |
+----+------+------+
| 1 | key1 | val1 |
| 1 | key2 | val2 |
| 1 | key3 | val3 |
| 2 | key4 | val4 |
+----+------+------+
至于 缩放 - 我们预计最终不会超过 1500 个 excel 文件,每个文件包含 100 到大约 100 个。 100,000 行(我们可能会将每个 excel 文件的行数限制为 100k)。我们从 excel 中得到的统计数据表明,我们不会超过 30~ 百万行。
我们将在 MySQL 或 PostgreSQL 中使用 Django。
我希望我的问题是明确的,而不是太不透明。
谢谢!
【问题讨论】:
标签: python mysql django excel postgresql