PostgreSQL中的商店历史记录
比方说,我们需要存储温度传感器的读数并保存每天的历史记录。每个度量都是一个元组day: number, value: string
(有些日子可能会错过,这就是为什么我们需要明确存储这一天)。有成千上万的传感器。PostgreSQL中的商店历史记录
添加新测量不应该要求重新读取和重新写入整个对象,应该是小增量加法。
而且,同一天可能有多个阅读。在这种情况下,如果日期相同,那么只应保留当天的最新测量值。
应该使用什么数据结构?我可以看到以下几种方式:
CREATE TABLE sensor_history (
sensor_id integer,
time integer[],
value text[]
);
或
CREATE TABLE sensor_history (
sensor_id integer,
history json/jsonb/hstore
);
为什么不只是存储每个元组的一列?例如
CREATE TABLE sensor_history (
sensor_id integer,
time integer,
value text
);
嗯,也许。但它会有效吗?如果我们有100万个传感器,1个月后将有300万个历史记录,并且在1年后将有360万个传感器。 –
以什么方式高效?我曾与数据库中有数十亿行的表格没有问题。只要您不试图运行将执行全表扫描的查询,就没有太多问题。例如,将一个索引放在'sensor_id'上将阻止从特定传感器加载数据的全面扫描。 – wmorrell
无论设计如何,您都将储存大量信息。你有没有考虑过使用NoSQL? –
是的,我看到您关于NoSQL的观点,但出于其他一些原因,在这种情况下,PostgreSQL将是更好的选择。 –
这取决于你打算如何处理数据。如果您不需要RDBMS功能的日志,那么NoSQL数据存储变得更具吸引力。 –