簡體   English   中英

django數據庫設計時您將有太多行

[英]django database design when you will have too many rows

我有一個帶有postgres db的django網絡應用程序; 通常的操作是,每天我都有一組需要存儲在表之一中的值。 沒有可預見的需要查詢數組的值,但是需要能夠繪制特定日期的值。 問題在於該數組很大,如果我將其存儲在數據庫中,則每年將有6000萬行,但是如果將每一行存儲為blob對象,則每年將有6萬行。

當您不想用值的行查詢時,使用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
...

option2 :將數組折疊成一個blob:

group(fk)| parent(fk) | mean_len(float)| values(blob)
  A      |  B         |    45          |[(pos=232, len=45),...]
...

所以我不想查詢pos或length,但是我想查詢group或parent。 我正在談論的讀取查詢的示例是:

SELECT * FROM "mytable"
LEFT OUTER JOIN "group"
ON ( "group"."id" = "grouptable"."id" )
ORDER BY "pos" DESC LIMIT 100

這是典型的django admin list_view頁面主要查詢。

我嘗試加載數據,並嘗試在django管理頁面中顯示表,而不進行任何復雜的查詢(僅是讀取查詢)。 當我通過150萬行時,管理頁面凍結。 它所要做的只是對該表進行一些計數查詢,以導致應用程序崩潰,因此我絕對應該將數據保留為blob或根本不保留在db中,而應使用文件系統。

在此處輸入圖片說明

我想強調一下,我已經使用django 1.8作為測試平台,所以這不是postgres評估,而是使用django admin和postgres進行的系統評估。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM