Ссылка на актуальные слайды: Google Презентация
Ссылка на PDF версию
CREATE TABLE telemetries (
    imei        TEXT                NOT NULL,
    time        TIMESTAMPTZ         NOT NULL,
    latitude    DOUBLE PRECISION    NOT NULL,
    longitude   DOUBLE PRECISION    NOT NULL,
    speed       SMALLINT            NOT NULL,
    course      SMALLINT            NOT NULL,
    CONSTRAINT telemetries_pkey PRIMARY KEY (imei, time)
);
SELECT * FROM create_hypertable (
    'telemetries', 'time',
    chunk_time_interval => INTERVAL '7 days'
);
INSERT INTO telemetries VALUES ...;
SELECT
    time_bucket('30 days', time) AS bucket,
    imei,
    avg(speed) AS avg,
    max(speed) AS max
FROM telemetries
WHERE speed > 0
GROUP BY imei, bucket
ORDER BY imei, bucket;CREATE TABLE telemetries (
    imei        TEXT                NOT NULL,
    time        TIMESTAMPTZ         NOT NULL,
    latitude    DOUBLE PRECISION    NOT NULL,
    longitude   DOUBLE PRECISION    NOT NULL,
    speed       SMALLINT            NOT NULL,
    course      SMALLINT            NOT NULL,
    CONSTRAINT telemetries_pkey PRIMARY KEY (imei, time)
);
SELECT * FROM add_data_node('data_node_1', host => 'pg_data_node_1');
SELECT * FROM add_data_node('data_node_2', host => 'pg_data_node_2');
SELECT * FROM add_data_node('data_node_3', host => 'pg_data_node_3');
SELECT * FROM create_distributed_hypertable(
    'telemetries', 'time', 'imei',
    chunk_time_interval => INTERVAL '7 days'
);
INSERT INTO telemetries VALUES ...;
SELECT
    time_bucket('30 days', time) AS bucket,
    imei,
    avg(speed) AS avg, max(speed) AS max
FROM telemetries
WHERE speed > 0
GROUP BY imei, bucket
ORDER BY imei, bucket;