2011-09-14 10 views
1

В приложении, в нашей компании мы собираем статистические данные с наших серверов (загрузка, использование диска и т. Д.). Поскольку имеется огромное количество данных, и нам не нужны все данные, мы всегда выполняем процедуру «сжатия», которая берет необработанные данные и вычисляет min. максимальный и средний для нескольких точек данных, сохраните эти новые значения в одной таблице и удалите старые из них через несколько недель.Обработка/сжатие больших наборов данных в нескольких таблицах

Теперь мне поручено переписать эту процедуру сжатия, и новая процедура должна содержать все несжатые данные, которые мы имеем в течение одного года в одной таблице, и «сжатые» данные в другой таблице. Моя основная проблема заключается в том, как обрабатывать данные, которые постоянно записываются в базу данных, и использовать или не использовать «таблицу транзакций» (мой собственный термин, поскольку я не могу придумать лучший вариант, я не говорю об фиксации/отката транзакции).

На данный момент наши сборщики данных вставляют всю информацию в таблицу с именем ovak_result, а сжатые данные заканчиваются на ovak_resultcompressed. Но есть ли какие-либо конкретные преимущества или недостатки для создания таблицы с именем ovak_resultuncompressed и просто использовать ovak_result в качестве «временного хранилища»? ovak_result будет минимальным, что было бы полезно для процедуры сжатия, но мне нужно было бы перетасовывать все данные из одной таблицы в другую непрерывно, и в ovak_result было бы постоянное чтение, запись и удаление.

Есть ли в MySQL механизмы для обработки таких вещей?

(Пожалуйста, обратите внимание: Мы говорим о довольно больших массивах данных здесь (около 100 M строк в таблице несжатой и около 1-10 M строк в сжатой таблице) Кроме того, я могу сделать очень многим, что я хочу. с конфигурацией программного и аппаратного обеспечения, поэтому, если у вас есть какие-либо намеки или идеи, связанные с конфигурациями MySQL или аппаратной настройкой, просто приведите их.)

ответ

0

Попробуйте прочитать о ARCHIVE storage engine.


Re ваше разъяснение. Ладно, я не понял, что вы имели в виду из своего описания. Читая более внимательно, я вижу, что вы указали минимальный, максимальный и средний.

Так что вы хотите это материализованное представление, который обновляет агрегированных расчеты для большого набора данных. Некоторые бренды RDBMS, такие как Oracle, имеют эту функцию, но MySQL этого не делает.

Один экспериментальный продукт, который пытается его решить, называется FlexViews (http://code.google.com/p/flexviews/). Это инструмент для совместной работы с открытым исходным кодом для MySQL. Вы определяете запрос как представление против вашего необработанного набора данных, а FlexViews постоянно контролирует бинарные журналы MySQL, а когда видит соответствующие изменения, он обновляет только строки в представлении, которые необходимо обновить.

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

+0

Интересный двигатель, но, к сожалению, далеко от того, что мне нужно. Отсутствие индексов будет довольно сложно использовать, так как мне нужно присоединиться к некоторым таблицам, и мне нужна функция обновления по крайней мере. Чтобы прояснить мой разговор о сжатии; «сжатие» (должно быть, это может означать это усреднение). Я описал это, чтобы сделать его более удобным (например, графические диаграммы становятся менее загроможденными при просмотре тенденций в течение нескольких месяцев), а не для сохранения дискового пространства.Приоритет производительности определяется дисковым пространством. – Lobo

+0

FlexViews выглядит очень интересно, и хотя я еще не уверен, что это ответ на мою проблему, оба ваших ответа дали мне немало идей и помогли мне в этом процессе, поэтому я называю это принятым ответом. Спасибо alot :) – Lobo

+0

Я рад помочь. Удачи с вашим проектом! –

 Смежные вопросы

  • Нет связанных вопросов^_^