Лучший движок базы данных для огромных наборов данных - PullRequest
4 голосов
/ 24 августа 2009

Я занимаюсь анализом данных, и моя работа включает в себя загрузку и выгрузку файлов базы данных + 1 ГБ в MySQL. Мне интересно, есть ли другой бесплатный движок баз данных, который работает лучше, чем MySQL на огромных базах данных? PostgreSQL лучше с точки зрения производительности?

Я использую только базовые команды SQL, поэтому скорость - единственный фактор для меня при выборе базы данных

Ответы [ 7 ]

4 голосов
/ 24 августа 2009

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

3 голосов
/ 24 августа 2009

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

2 голосов
/ 24 августа 2009

Если ваш инструмент для обработки данных будет поддерживать его, подумайте о работе с плоскими источниками файлов. Это должно сохранить большинство ваших операций импорта / экспорта. Тем не менее, у него есть некоторые оговорки:

  • Вам может понадобиться знание языка сценариев, такого как Perl или Python, чтобы выполнять анализ данных (при условии, что вы еще не знакомы с ним).

  • Возможно, вам придется расширить память на вашем компьютере или перейти на 64-разрядную платформу, если вам нужно больше памяти.

  • Ваш инструмент интеллектуального анализа данных может не поддерживать работу с плоскими файлами данных таким образом, в этом случае вы получаете ошибки.

Современные диски, даже диски SATA, будут извлекать со скоростью около 100 МБ / с при последовательном чтении. Это означает, что что-то может достаточно быстро вдохнуть файл размером 1 ГБ.

Кроме того, вы можете попробовать установить твердотельные накопители на свой компьютер и посмотреть, не улучшит ли это производительность вашей СУБД.

2 голосов
/ 24 августа 2009

HDF - это, например, хранилище системы наблюдения Земли НАСА. В традиционном смысле это не совсем база данных, у нее есть свои особенности, но с точки зрения чистой производительности ее трудно превзойти.

1 голос
/ 16 октября 2009

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

MongoDB и CouchDB оба хороших варианта. Я предпочитаю MongoDB, потому что я не знаю Java и обнаружил, что CouchDB проще в настройке.

Вот несколько статей по теме:

1 голос
/ 24 августа 2009

Ваш вопрос слишком двусмысленный, чтобы отвечать с пользой. «Производительность» означает много разных вещей для разных людей. Я могу прокомментировать, как MySQL и PostgreSQL сравниваются в нескольких областях, которые могут быть важны, но без информации трудно сказать, какие из них действительно важны для вас. Я написал кучу дополнительной справочной информации по этой теме на Почему PostgreSQL вместо MySQL: сравнение надежности и скорости . Что быстрее, конечно, зависит от того, что вы делаете.

Проблема в том, что загрузка данных в базу данных происходит слишком медленно? Это одна из областей, в которой PostgreSQL не особенно хорошо работает, команда COPY в Postgres - не самый быстрый механизм массовой загрузки.

Проблема в том, что запросы выполняются слишком медленно? Так насколько они сложны? В сложных запросах оптимизатор PostgreSQL может выполнять работу лучше, чем в SQL, особенно если в нем задействовано много объединений таблиц. Небольшие простые запросы, как правило, выполняются быстрее в MySQL, потому что он не задумывается о том, как выполнить запрос перед началом; более умное исполнение стоит немного накладных расходов.

Сколько клиентов вовлечено? MySQL может хорошо работать с небольшим количеством клиентов, при большем количестве клиентов механизм блокировки в PostgreSQL может работать лучше.

Вы заботитесь о целостности транзакций? Если нет, то в MySQL проще отключить больше этих функций, что дает ему значительное преимущество в скорости по сравнению с PostgreSQL.

1 голос
/ 24 августа 2009

Я использую PostgreSQL с моим текущим проектом, а также довольно часто создаю дамп / восстановление баз данных. Восстановление сжатого дампа 400 Мб занимает менее 20 минут. Вы можете попробовать, хотя некоторые параметры конфигурации сервера должны быть изменены, чтобы соответствовать конфигурации вашего оборудования. Эти параметры включают, но не ограничиваются:

  • shared_buffers
  • work_mem
  • temp_buffers
  • maintenance_work_mem
  • commit_delay
  • effective_cache_size
...