Нужен совет.
Имеется таблица куда записываются данные некоторых устройств.
Какая организация лучше(время выборки критично, время записи в меньшей степени):
1) динамическое создание/удаление таблиц для каждого устройства в ходе работы программы
или
2) хранение данных всех устройств в одной таблице
?
Для извлечения данных используются простые запросы вида:
SELECT Id, Time, Speed FROM tracks WHERE Id=123 AND Time BETWEEN 20010101010101 AND 20080101010101 ORDER BY Time
По каждому устройству будет добавляться около 3000 строк в день.
Количество устройств измеряется сотнями.
По другому что лучше:
1) держать 300 таблиц по 300 000 строк в каждой
или
2) одну таблицу на 90 000 000(около 10ГБ)
?
При использовании множества таблиц в данный момент появляется маленькое неудобство в виде невозможности создания внешнего ключа для целостности данных.
Вот и хотелось узнать даст ли способ множества таблиц ощутимый прирост в производительности, хотя с точки зрения логики это менее правильный вариант.
На мой взгляд в
На мой взгляд в данном случае лучше множество таблиц, чем одну большую.
Разумеется всё индексы всё-равно нужно создавать.
Советую ещё заглянуть в документацию в раздел по большим таблицам. В PostgreSQL есть возможность как бы сэмулировать большую таблицу через маленькие, используя возможности ООП заложенные в СУБД.
-----------------------------------------------------------------------------------
"ls /" (C) Козьма Прутков
Истина где-то
Истина где-то посередине...
Я бы сделал одну большую. 90М это не так уж и много Тем более если нет высоких требований к скорости записи.
Имхо, в данном случае, дешевле купить быстрый рейд, чем делать сложный алгоритм.
Если будут проблемы, то можно "партиционировать".
Но не на 300 таблиц, а например по одной таблице в месяц, или по 10 датчиков в таблице, но тут уже нужно смотреть, какие запросы, какие ключи.
90M? Человек про
90M? Человек про суммарный объём в 10G говорил
-----------------------------------------------------------------------------------
"ls /" (C) Козьма Прутков