我有一個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