Управление разделами базы данных может быть автоматизировано; Основанное на времени разделение данных - это стандартный способ решения проблемы такого типа, , и я не уверен, что вижу причину , почему это невозможно сделать с PostgreSQL.
У вас есть приблизительно 72 млн строк в день - при условии, что идентификатор устройства, метка даты и два числа с плавающей точкой для координат будут иметь, скажем, 16-20 байт на строку плюс некоторые незначительные издержки метаданных страницы. План пропускной способности of-fag-пакетов предполагает около 1-1,5 ГБ данных в день или 400-500 ГБ в год, а также индексы, если это необходимо.
Если вы можете жить с периодически обновляемыми данными (т.е. не полностью в актуальном состоянии), вы можете создать отдельную таблицу отчетов и периодически обновлять ее с помощью процесса ETL. Если эта таблица хранится на отдельных томах физического диска, к ней можно обращаться без значительного влияния на производительность ваших транзакционных данных.
Отдельная база данных отчетов для исторических данных также позволит вам сократить операционную таблицу, удалив более старые разделы, что, вероятно, поможет повысить производительность приложений. Вы также можете индексировать таблицы отчетов и создавать сводные таблицы для оптимизации производительности отчетов.
Если вам нужны данные с малой задержкой (т. Е. Отчеты по актуальным данным), также можно создать представление, в котором ведущие разделы сообщаются из операционной системы, а исторические данные - из витрины данных. , Это позволило бы выполнять массовые запросы в таблицах отчетов, оптимизированных для этого, в то время как относительно небольшие объемы текущих данных можно считывать непосредственно из операционной системы.
Большинство систем отчетов с малой задержкой используют некоторые вариации этого подхода - ведущий раздел может обновляться в режиме реального времени (возможно, триггерами) и содержит относительно мало данных, поэтому его можно быстро запрашивать, но не содержит багажа, который замедляет обновление. Остальные исторические данные могут быть сильно проиндексированы для отчетности. Разделение по дате означает, что система автоматически начнет заполнять следующий раздел, и периодический процесс может перемещать, переиндексировать или делать все, что нужно для исторических данных, чтобы оптимизировать их для составления отчетов.
Примечание: Если ваш бюджет работает на PostgreSQL, а не на Oracle, вы, вероятно, обнаружите, что хранилище с прямым подключением значительно быстрее, чем SAN, если вы не хотите тратить много денег на оборудование SAN.