我有一个Django的Web应用程序与Postgres的数据库;一般的操作是每天都有一组需要存储在其中一个表中的值。 没有可预见的需要查询数组的值,但需要能够绘制特定日期的值。 问题是这个数组非常大,如果我将它存储在数据库中,我每年会有6000万行,但是如果我将每行存储为一个blob对象,那么每年将有6万行。django数据库设计时,你会有太多的行
是是使用Blob对象,以减少表的大小,当你不想与值的行来查询一个很好的决定? 这里有两种选择:
选项1:保持所有
group(foreignkey)| parent(foreignkey) | pos(int) | length(int)
A | B | 232 | 45
A | B | 233 | 45
A | B | 234 | 45
A | B | 233 | 46
...
选项2:折叠数组到一个blob:
group(fk)| parent(fk) | mean_len(float)| values(blob)
A | B | 45 |[(pos=232, len=45),...]
...
,所以我不希望查询POS或长度,但我想查询组或父母。 一个是我说的读取查询的例子是:
SELECT * FROM "mytable"
LEFT OUTER JOIN "group"
ON ("group"."id" = "grouptable"."id")
ORDER BY "pos" DESC LIMIT 100
这是一个典型的Django管理list_view页主查询。
如果真的没有必要对数据进行查询(使用SQL),然后是啊,只是存储一个blob – Strawberry
在另一方面 - 什么是这种分组的好处是什么?如果一个表格正确完成(索引等),那么理论上应该没有严重的性能差异。如果做得不正确,那么规范化的表单应该会导致更快地发现问题。 (通过我可能是错误的,我没有在实践中这样做,只是纯粹的理论。) – Sasha
有一些成长的行的性能情节会有帮助,但我找不到任何。我会试着嘲笑大数据来看看会发生什么。 – max