繁体   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