如何优化大型数据库请求

时间:2015-08-19 20:29:59

标签: database optimization hierarchical-data

我正在使用包含船舶信息(测量)的数据库。船只发送更新,包括他们的位置,燃料使用等。因此数据库中的条目看起来像这样

| measurement_id | ship_id | timestamp     | position | fuel_use |
| key            | f_key   | dd-mm-yy hh:ss| lat-lon  | in l/km  |

每秒为每艘船添加一个新条目,这样数据库中的条目数量就会非常快。

我正在处理的应用程序所需要的不是一秒钟的信息,而是1分钟,1天甚至1年的累积数据。例如,一天内的总燃料使用量,一年中的行驶距离,或一个月内每天的平均燃料使用量。

为了得到这个并计算出来自这个原始数据是不可行的,你必须从服务器获得3150万条记录来计算一年内的旅行距离。

我认为聪明的事情是将条目组合成一个更大的条目。例如,获得60次测量并将它们组合成一个单独的表中的1分钟测量条目。通过平均燃料使用,并通过总计两个条目之间的行进距离。一分钟就会看起来像这样。

| min_measurement_id | ship_id | timestamp  | position    | distance_traveled     | fuel_use     |
| new key            |same ship| dd-mm-yy hh| avg lat-lon | sum distance_traveled | avg fuel_use |

然后可以重复此过程以使用数小时,数天,数月,数年。这样,通过仅请求7个查询,或者如果我想要每小时详细信息168个条目,可以完成一周的查询。那些看起来像是对我来说更有用的数字。

可以通过每10分钟查询原始数据库来填充新表,然后该数据填充分钟表,进而更新小时表等。

然而,这似乎是大量管理和重复几乎相同的数据,并且不断进行相同的操作。

所以我感兴趣的是是否有某种方法来构建这些数据。它可以按层次排序(在几秒钟之后,几天,几分钟都是分层次的)还是有其他方法来优化它?

这是我第一次使用这么大的数据库,所以我也不知道在互联网上寻找什么。

1 个答案:

答案 0 :(得分:1)

聚合在数据仓库中很常见,因此您对组数据的处理方法很好。是的,您正在复制某些数据,但您将获得速度优势。