Нужна стратегия для управления агрегированными данными при создании таблицы больших баз данных - PullRequest
0 голосов
/ 27 октября 2010

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

Ограничение: строки записываются в плоский файл, а затем массово вставляются в новую таблицу.

Какой была бы хорошая стратегия или шаблон проектирования, чтобы придерживаться нескольких сотен тысяч средних значений, пока таблица не будет создана, не добавляя чрезмерных затрат памяти / обработки на JVM или RDBMS? Любые идеи будут полезны.

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

1 Ответ

2 голосов
/ 27 октября 2010

Я бы сказал своему боссу прекратить микроуправление.

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

Если вы хотите использовать фреймворк, который будет обрабатывать всю запись на диск, я рассмотрю использование Hadoop для обработки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...