Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / проектирование БД, хранящей историю биржевых сделок / 5 сообщений из 5, страница 1 из 1
13.10.2009, 13:54
    #36247929
Questq2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проектирование БД, хранящей историю биржевых сделок
Есть таблица, состоит из 6 полей - дата, время, цена, объем, текст, текст

Есть варианты:
1. Хранить сделки по всем контрактам в одной таблице - удобен для доступа и для настройки
2. Хранить сделки по каждому контракту в своей таблице - дольше настраивать экспорт в БД, сложнее обслуживать, сложнее доступ к таблицам (так как нужно передавать имя таблицы), необходимость делать копии хранимых процедур под каждую таблицу

Всего контрактов примерно 20, по пяти из них за день в таблицу добавляется по 150 000 записей ежедневно, по десяти по 100 000 записей, и по пяти по 50 000 записей.

То есть если хранить в одной таблице то за день она будет увеличиваться на 2 млн записей

История будет составлять десятки месяцев.

Запросы будут делаться по дате, по времени, по ценам и объемам - например "суммировать все объемы за такие-то дни по такому-то контракту"

Подскажите, однозначно ли надо делать свою таблицу для каждого контракта, или можно сделать одну общую?

Cпасибо.
...
Рейтинг: 0 / 0
13.10.2009, 17:39
    #36248674
nosov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проектирование БД, хранящей историю биржевых сделок
авторВсего контрактов примерно 20...да хоть 1000.
Принципы нормализации требуют отдельной таблицы для каждой сущности.
у вас сущность = контракт (имхо)
...
Рейтинг: 0 / 0
13.10.2009, 19:32
    #36248904
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проектирование БД, хранящей историю биржевых сделок
nosov Принципы нормализации требуют отдельной таблицы для каждой сущности.
Однако существует такая фича как секционирование (partitioning).
Правда обычно это платная опция enterprise редакций, применяемая для облегчения управлением данных или "ручное" секционирование на базе вьюхи
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
create view v_contr_all as 
select * from contr1 where contr_id= 1 
union all
select * from contr2 where contr_id= 2 
union all
select * from contr2 where contr_id= 3 
union all
select * from contr_rest where contr_id not in ( 1 , 2 , 3 )

естественно вставка напрямую во вьюху невозможна без instead of триггера, зато чтение с фильтром по контрагенту будет из одной таблицы (если оптимизатор догадается) плюс сравнительно легко (не задевая других) можно обрабатывать одного контрагента - очистить, залить, перестроить индекс.

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

Questq2 сложнее доступ к таблицам (так как нужно передавать имя таблицы)Не нужно
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
create ins_proc as
if       contr_id= 1 
  insert into contr1 values()
else if contr_id= 2 
  insert into contr2 values()
else if contr_id= 3 
  insert into contr3 values()
else 
  insert into contr_rest values ()
Questq2 необходимость делать копии хранимых процедур под каждую таблицунет необходимости
Но еще раз повторю - секционирование - вынужденная мера , в подавляющем большинстве случаев применяют секционирование по дате.
...
Рейтинг: 0 / 0
13.10.2009, 21:41
    #36249037
guest_20040621
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проектирование БД, хранящей историю биржевых сделок
> надо делать свою таблицу для каждого контракта

Однозначно. Причем, и архивные, и оперативные таблицы для каждого контракта.
...
Рейтинг: 0 / 0
14.10.2009, 07:33
    #36249306
Questq2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проектирование БД, хранящей историю биржевых сделок
всем спасибо за ответы, особенно SERG1257
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / проектирование БД, хранящей историю биржевых сделок / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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