Схема базы данных для очень быстрого доступа для чтения за счет скорости доступа для записи - PullRequest
0 голосов
/ 09 февраля 2012

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

Например, таблицы: 1 таблица содержит статическую информацию о продукте, а таблица 2 содержит примеры всех случаев, когда продукт был куплен / просмотрен / ... определенных n действий, выполненных с ним, и стоимости, уплаченной за каждое такое действие.Большая часть моей работы связана с поиском определенных продуктов, для которых были выполнены определенные действия.

Спасибо.

Ответы [ 2 ]

1 голос
/ 10 февраля 2012

«Нормализовано» не всегда означает «требуется много объединений».Но использование суррогатных ключей (идентификационных номеров) обычно делает .

Создайте тестовую базу данных с нормализацией до 5NF без использования идентификаторов для всего, что имеет естественный ключ.Так, например, нет идентификаторов для стран (используйте код ISO), штатов, почтовых индексов, категорий и т. Д.

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

0 голосов
/ 09 февраля 2012

Сохраняйте вашу схему такой, какая она есть - то есть «правильной», но индексируйте полностью денормализованные (т.е. готовые к визуализации) версии ваших данных в движке текстового поиска , например lucene .

Системы текстового поиска не предлагают возможности обновления или объединения, но они FAST !Вы не поверите как быстро, пока не увидите это сами, но это будет порядка пары миллисекунд.

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

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