Re:
От | Sergey Konoplev |
---|---|
Тема | Re: |
Дата | |
Msg-id | CAL_0b1uZY2FStYDwzuw4LgYj8B=f2v30KjhoUaopN=MLM3aDew@mail.gmail.com обсуждение исходный текст |
Ответ на | (Aln Kapa <alnkapa@gmail.com>) |
Список | 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 по дате отправления: