2011-01-04 2 views
4

Я работаю над технической архитектурой для интеграции контент-решений. Данные поставщика решений работают до миллионов строк и нормализуются до 3NF. Он обновляется по регулярному графику (скорее всего, ежедневно), и его данные делятся на очень узкий уровень атомарности.Нормализация базы данных и быстрый поиск

Мне нужно искать и запрашивать эти данные, и мой текущий наклон заключается в том, чтобы оставить только нормализованные данные и создать денормализованную базу данных из своих данных (OLAP в OLTP). «Передача» может быть специально построенной программой, которая может содержать необходимую бизнес-логику в дополнение к необработанной мощности копирования и запускаться по установленному расписанию по мере необходимости. Затем денормализованная база данных уменьшит атомарность и позволит эффективно выполнять поиск по ключевым словам и запросы. Я искал использование Lucene .NET для работы ключевого слова по денормализованной базе данных.

Итак, прежде чем я громко петь с холмов, что это путь вперед, мне хотелось получить экспертное мнение по этому поводу и что такое воспринимаемая «лучшая практика». Является ли метод, который я предложил, наилучшим образом, учитывая данные, которые мне будут предоставлены? Было высказано предположение, что, возможно, я мог бы использовать «поисковую систему» ​​для поиска нормализованных данных. Это испугало меня, но поднял вопрос; какая поисковая система и как?

мнение, пламя, сквернословие и помощь оценили :)

+3

У вас есть проблемы с поиском данных в нормализованной форме? Существуют базы данных _are_, которые могут извлечь выгоду из денормализации для поиска, но по моему опыту люди могут быстро предположить, что они имеют проблемы с производительностью. Кроме того, какие СУБД вы используете? –

+0

Спасибо за ответ Ларри. Все это основано на MS SQL. Я могу заверить, что выполнение ключевых слов или полукоммерческих запросов по нормализованным данным занимает абсолютный возраст. Цивилизации пришли и ушли быстрее! – dooburt

+0

Прежде чем идти таким образом, я бы дважды проверял все индексы, FK и, в конечном счете, отслеживал% процессор и% памяти. Недавно я нашел хороший и бесплатный диагностический инструмент: http://sqlcop.lessthandot.com/ –

ответ

2

Я построил базы данных отчетов и хранилища данных на основе данных, хранящихся в нормализованной форме. В программе передачи (ETL) есть довольно много работы. Учитывая ваше описание фида данных, возможно, некоторые из этих работ были выполнены вами фидером.

Миллионов рядов в наши дни не много. Вы можете уйти с представлениями, ориентированными на отчет, в существующую базу данных. Попробуй и посмотри.

Самым большим преимуществом построения базы данных, ориентированной на OLAP, является не скорость. Это гибкость. «Нам нравится этот отчет, но теперь мы хотим видеть его еженедельно и ежеквартально, а не ежемесячно. Bam! Done!» «Можете ли вы разбить его по категории маркетинга, а не на производство? Bam! Done!» И так далее.

+0

Уолтер, спасибо за ответ. Программа ETL - мой предпочтительный подход, основанный на всех факторах здесь. Данные OLAP должны делать именно то, что вы описали, с многочисленными запросами для отчетов a, b, c и d, например. Я играл с идеей «Материализованные представления» по нормализованным данным, но есть факторы, не контролирующие ситуацию, которые делают их маловероятным решением. – dooburt

0

Резонансно нормализованная модель (3NF/BCNF) обеспечивает наилучшую среднюю производительность и наименьшее количество аномалий модификации для наибольшего числа сценариев. Это очень важно, поэтому я начну с этого. Поскольку ваши требования нечеткие, это похоже на самый разумный вариант.

На самом деле, самое разумное было бы пойти по отношению к требованиям, пока они не являются немного более «четкие»;)

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

Кроме этого, я согласен со всем, что сказал Уолтер, а также дал ему свой голос.

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