Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Архитектура: отложенные (schedule) данные  [new]
_Промешан_
Member

Откуда:
Сообщений: 969
Вопрос по архитектуре.

Нужно: организовать структуру данных, чтобы можно было откладывать (шедулировать) некоторые данные. То есть чтобы до определенного момента времени таких данных не было в выборке.

Критерии
1. Не должно быть огромной вложенности. То есть средняя расширяемость.
2. Само собой быстрота.

Дано (реальные данные)
1. Таблица с данными (Data). У нее есть ключи на тип данных (DataType), статус данных (DataState - обработано/необработано/...), оператора (Operator), клиента (Clients). Оператор относится к определенному отделу (Department). Отделы связаны между собой через фирмы (Firms).
Соответственно оператор обрабатывает данные и может видеть как по своему отделу, так и по фирме все данные (то есть других отделов).
Отсюда можно сделать некоторый вывод о том, как примерно может быть нелегко уже базе. Конечно это лишь 1% от всего что есть в БД.

Мои идеи
1. Минимальная расширяемость - два поля в таблице с данными - DelayDate, DelayState
2. Средняя расширяемость - доп таблица DelayedData в которой ключ на DataId, с временем и статусом. И далее два варианта:
а) Удалять из таблицы по какому то джобу или иному действию: where DelayDate < getdate()
б) Не удалять, но менять статус.
Соответственно типы запросов от этого поменяются с exists(...) на (... where DelayState = ....)
3. Пока не придумал.

На текущем этапе задачи не понятно, будет ли дальнейшее развитие.

Хочу послушать ваши предложения и услышать критику на ваши варианты. Спасибо.

Сообщение было отредактировано: 9 янв 18, 18:34
9 янв 18, 18:08    [21091203]     Ответить | Цитировать Сообщить модератору
 Re: Архитектура: отложенные (schedule) данные  [new]
Shakill
Member

Откуда: мск
Сообщений: 1880
_Промешан_,

для всех выборок оператора не пускать к таблице, а только ко вьюхе, в которой уже прописан нужный фильтр
9 янв 18, 18:25    [21091229]     Ответить | Цитировать Сообщить модератору
 Re: Архитектура: отложенные (schedule) данные  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
добавить в таблицу поле visible.
создать вью с visible = 1
отобрать права на таблицу,
выдать только на вью.
когда надо, запускать процедуру, обновляющую поле visible.

допустим, каждые 3 часа надо делать все имеющиеся данные видимыми:
делаете джоб, который каждые 3 часа апдэйтит set visible = 1.

а запросы какие были, такие и останутся.
но будут уже не к таблице, а ко вью
9 янв 18, 18:33    [21091241]     Ответить | Цитировать Сообщить модератору
 Re: Архитектура: отложенные (schedule) данные  [new]
_Промешан_
Member

Откуда:
Сообщений: 969
Дополню, чтобы не было про вьюхи - вся логика в процедурах. Селектов напрямую нет.
Планы кешируются соответственно.
9 янв 18, 18:36    [21091247]     Ответить | Цитировать Сообщить модератору
 Re: Архитектура: отложенные (schedule) данные  [new]
_Промешан_
Member

Откуда:
Сообщений: 969
Спасибо за идею про вью спасибо.

Про visible - тоже. Но раз в три часа или в час или в полчаса... это специфично, потому что а если отложено будет на 10 минут...

Это я рассуждаю. С чего то надо начать.
9 янв 18, 18:38    [21091256]     Ответить | Цитировать Сообщить модератору
 Re: Архитектура: отложенные (schedule) данные  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
_Промешан_,

имхо, вариант 2а
9 янв 18, 20:24    [21091441]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить