Я пытаюсь хранить большое количество ежедневных данных о погоде в базе данных postgreSQL. Возможно, это не так, как было бы много данных, но есть примерно 95 000 станций с ежедневными данными, возвращающимися на целых 100 лет. Это может означать много миллионов записей (95 000 * 365 * 100) = 3 467 500 000. Хотя это переоценка, мне все же кажется нецелесообразным хранить все ежедневные данные в одной таблице с идентификаторами станций как сопоставление внешнего ключа в другой таблице с информацией о станции. Каким будет лучший способ структурировать эти данные для запроса серии данных по станции? Должен ли я создать таблицу для каждой станции (привел бы к 95 000 таблиц), или я должен попробовать что-то более широкое, как таблица для каждого региона? Какие преимущества и недостатки? Любая помощь приветствуется.SQL Оптимальная структура базы данных: данные NOAA
Мои данные выглядит следующим образом:
Stations
*ID
-longitude
-latitude
-elevation
-country
-state
-name
...
Weather
*Station ID
*Date
-Precipitation
-High Temp
-Low Temp
Почему бы не использовать разбивку таблиц? База данных заботится о создании и обслуживании 95000 отдельных таблиц для вас: http://www.postgresql.org/docs/9.1/static/ddl-partitioning.html –
Увы, в PostgreSQL нет встроенного разбиения на разделы, вы должны в основном сворачивать свои собственные или использовать внешние инструменты, такие как pg_partman. Он также плохо масштабируется для многих сотен или тысяч таблиц. Я сильно подозреваю, что лучший вариант - это упростить вещи с помощью нескольких больших таблиц. –
Разделение по дате кажется наиболее логичным. В 34M строк/год; это может быть в год или на 5 или 10 лет. – wildplasser