Re: - Mailing list pgsql-ru-general

From Sergey Konoplev
Subject Re:
Date
Msg-id CAL_0b1uZY2FStYDwzuw4LgYj8B=f2v30KjhoUaopN=MLM3aDew@mail.gmail.com
Whole thread Raw
In response to  (Aln Kapa <alnkapa@gmail.com>)
List pgsql-ru-general
2015-03-10 7:02 GMT-07:00 Aln Kapa <alnkapa@gmail.com>:
> Есть 5000 устройств присылающих информация примерное 1 раз в секунду.
> Хранить информацию в доступном резерве надо около 3-х лет.
> Надо обеспечить быструю запись и приемлемый селект.

Софт-приёмник сохраняет поток в tab-separated текстовые файлы по
максимум N записей. Загрузчик периодически делает COPY FROM
завершенным файлам в таблицу postgres базы.

> Так вот как по вашему мнению лучше всего организовать хранение данных, в
> одной таблице с партицированием или создать по одной таблице на устройство.
>
> В основном будут COPY и SELECT только с одной из таблиц, запросы по
> нескольким таблицам будут, но их можно будет "подождать" не критично.

Партиции можно организовать как матрицу (hash(device_id), time_range).
Например, (device_id % 100, now()::date). Старые партиции, которые
страрше 3х лет, COPY TO PROGRAM gzip в архив и DROP TABLE.

Для партиционирования можно использовать вот этот тул
https://github.com/keithf4/pg_partman. Старые таблицы архивировать
можно вот этим https://github.com/grayhemp/pgcookbook/blob/master/bin/archive_tables.sh.
Архив чистить find /mnt/archive -mtime +2000 -type f -delete.

В дальнейшем, с ростом объёмов и потребностей, можно подумать о
https://github.com/citusdata/pg_shard.

-- 
Kind regards,
Sergey Konoplev
PostgreSQL Consultant and DBA

http://www.linkedin.com/in/grayhemp
+1 (415) 867-9984, +7 (499) 346-7196, +7 (988) 888-1979
gray.ru@gmail.com

pgsql-ru-general by date:

Previous
From: Konstantin Gerasimenko
Date:
Subject: Re:
Next
From: "Dmitry E. Oboukhov"
Date:
Subject: Re: