Лучшее решение для базы данных для управления огромным количеством данных - PullRequest
3 голосов
/ 16 февраля 2010

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

Ответы [ 2 ]

3 голосов
/ 16 февраля 2010

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

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

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

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

0 голосов
/ 16 февраля 2010

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

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

...