powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирование БД, реальная ситуация
2 сообщений из 2, страница 1 из 1
Проектирование БД, реальная ситуация
    #37114444
Docker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день

Сейчас разрабатываем проект для одной крупной туристической компании. База данных MS SQL Server 2005. Проект - веб сайт для поиска и покупки путевок, бронирования отелей, билетов на самолет, машин на прокат и т.д. Одна из задач проекта - поиск продукта. Будем считать, что поиск - это поиск по одному продукту. Информация о всех поисках должна быть сохранена в базу. Информация для каждого поиска состоит из множества элеметов как общих для всех продуктов (например с какого по какой день бронируется продукт, количество результатов вернувшихся при поиске и т.д.), так и специфичных для каждого продукта (например желаемый тип коробки передач в машине). Чтение из базы данных это в основном ежедневная выгрузка в OLAP хранилище для последующей обработки, но изредка по данным о поисках будет необходимо запустить ad-hoc запрос для какого-то срочного репорта который может объединять несколько продуктов и его нельзя сделать в OLAP. Количество данных - около сотни миллионов поисков.

Ну, а теперь вопрос, как все это лучше организовать в базе данных? Пока вижу три варианта:

1. Создать таблицу с общими параметрами для продуктов и к ней по связке один к одному привязать таблицы с параметрами специфичными для продуктов. Т.е. например ищем машину. Тогда создается 2 записи, одна в таблице Search с общими для всех продуктов параметрами (с какого по какое число бронируется машина) и одна в CarSearch со специфичными (тип коробки передач)

2. Свалить все данные в одну таблицу, но тогда поля типа "тип коробки передач" будут лишним при записи информации о поиске билетов на самолет например.

3. Свалить все данные в одну таблицу, но для специфических параметров сделать типизированное xml поле. В этом случае все поля используются всегда, но как я понимаю могут тормозить ad-hoc запросы, т.к. для них надо будет парсировать xml в каждой записи.

Коллеги, поделитесь опытом кто как решает подобные задачи. Из 3-х вариантов приведенных выше 1 и 3 выглядят более или менее.

Еще одна проблема - добавление новых параметров поиска. Например мы решили дать клиенту возможность искать машину определенного цвета. В этом случае в вариантах 1, 2 надо добавить колонку в таблицу, а в варианте 3 изменить схему привязанную к xml полю. В обоих вариантах при 100 млн записей (параметров много, так что записи большие по размеру) сервер запарится и надолго обновлять изменяемую таблицу. Можно ли этого как-то избежать?

Огромное спасибо!
...
Рейтинг: 0 / 0
Проектирование БД, реальная ситуация
    #37114542
MAYAKOV_SV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Docker3. Свалить все данные в одну таблицу, но для специфических параметров сделать типизированное xml поле. В этом случае все поля используются всегда, но как я понимаю могут тормозить ad-hoc запросы, т.к. для них надо будет парсировать xml в каждой записи.

4. Свалить все в одну таблицу (общие для всех типов продуктов данные), для разных типов продуктов создавать новые таблицы. Новые таблицы связаны с главной по ключевому полю.
Получаем количество таблиц 1 + N, где N - количество типов продуктов.
5. Свалить все в одну таблицу (общие для всех типов продуктов данные), сделать в добавок в этой таблице запасные доп. поля, например N1, N2, .. N20, S1, S2, ..., S20. К примеру, N - для числовых данных, S - для строковых.
Для каждого типа продукта определится в какие поля чего будет записыватся.
Заранее определится оптимальное количество запасных полей и ими пользоватся.

И в том и другом случае можно построить индексы на поля.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирование БД, реальная ситуация
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]