我正在使用一小部分网络爬虫来获取各种设备的当前 GPS 位置。我也想保留历史记录。在不存储数据两次的情况下执行此操作的最佳方法是什么?现在我有两张桌子,看起来像这样:
Column | Type | Modifiers | Storage | Description
---------+-----------------------------+---------------+----------+-------------
vehicle | character varying(20) | | extended |
course | real | | plain |
speed | real | | plain |
fix | smallint | | plain |
lat | real | | plain |
lon | real | | plain |
time | timestamp without time zone | default now() | plain |
一个被命名gps
,另一个被命名gps_log
。更新这两个的函数做了两件事:首先它执行一个INSERT
on gps_log
,然后它执行一个UPDATE OR INSERT
(用户定义的函数) on gps
。但是,这导致在我看来,除了轻松SELECT
访问当前数据之外,出于其他目的进行双重存储是毫无意义的。
有没有一种简单的方法只使用gps_log
一个函数并且只为每个函数选择最新的条目vehicle
?请记住,gps_log
当前有 1397150 行增加,大约每 15 分钟增加 150 行,因此性能可能是一个问题。
通过 Perl DBI 使用 PostgreSQL 8.4。