Лучшее решение для базы данных для управления огромным количеством данных

Я должен спроектировать базу данных трафика, которая включает в себя данные из разных городов (8 городов) по 2 Мб в течение 10 минут для каждого города 24 часа. Поступающие данные одинаковы для всего города. Итак, мой первый вопрос: что лучше с точки зрения производительности: спроектировать одну базу данных для всех городов с множеством таблиц (по одной таблице для каждого города) или спроектировать много баз данных (по одной базе данных для каждого города)? Мой второй вопрос: какая система управления базами данных лучше всего подходит для этого сценария, MySQL, Postgres, Oracle или других?

2 ответа

Объем данных, которые вы получаете каждый день, довольно большой (~5 ГБ), но количество вставляемых строк на самом деле довольно мало. Следовательно, вам необходимо спроектировать физическую модель, чтобы сделать администрирование хранилища базы данных простым и эффективным.

Наличие отдельной базы данных для каждого города имеет смысл только в том случае, если вы собираетесь использовать сервер для каждой базы данных. Но вам не нужно балансировать нагрузку, так как вам нужно обрабатывать только восемь вставок каждые десять минут. С другой стороны, эта архитектура превратит каждый запрос, который сравнивает один город с другим, в распределенный запрос.

Наличие одной таблицы на город в одной и той же базе данных может дать вам некоторые преимущества в производительности, если большинство ваших запросов ограничены данными из города, а не сравнивают города. Но я бы не хотел вкладывать в это много денег. Даже если это сработало, это может усложнить другие виды запросов.

Учитывая, что данные одинаковы для всех городов, я бы предпочел одну таблицу с дифференцирующим столбцом (TOWN_ID). Особенно, если бы у меня были деньги, чтобы перейти на лицензию Oracle с опцией Partitioning.

Разные базы данных в каждом городе могут быть сложны в обслуживании, как и в случае разных таблиц. Это может быть работоспособным, если вам никогда не придется сравнивать города, но рано или поздно я бы поспорил на необходимость сравнивать данные из разных городов.

Разделение данных - это путь. Anty база данных, которая поддерживает разбиение данных, таких как Oracle или SQL Server, будет работать нормально. Не уверен, что Postgre или Mysql поддерживают это, вам нужно спросить кого-то, кто более знаком с этими базами данных.

Другие вопросы по тегам