Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Архитектура: отложенные (schedule) данные
|
|||
|---|---|---|---|
|
#18+
Вопрос по архитектуре. Нужно : организовать структуру данных, чтобы можно было откладывать (шедулировать) некоторые данные. То есть чтобы до определенного момента времени таких данных не было в выборке. Критерии 1. Не должно быть огромной вложенности. То есть средняя расширяемость. 2. Само собой быстрота. Дано (реальные данные) 1. Таблица с данными (Data). У нее есть ключи на тип данных (DataType), статус данных (DataState - обработано/необработано/...), оператора (Operator), клиента (Clients). Оператор относится к определенному отделу (Department). Отделы связаны между собой через фирмы (Firms). Соответственно оператор обрабатывает данные и может видеть как по своему отделу, так и по фирме все данные (то есть других отделов). Отсюда можно сделать некоторый вывод о том, как примерно может быть нелегко уже базе. Конечно это лишь 1% от всего что есть в БД. Мои идеи 1. Минимальная расширяемость - два поля в таблице с данными - DelayDate, DelayState 2. Средняя расширяемость - доп таблица DelayedData в которой ключ на DataId, с временем и статусом. И далее два варианта: а) Удалять из таблицы по какому то джобу или иному действию: where DelayDate < getdate() б) Не удалять, но менять статус. Соответственно типы запросов от этого поменяются с exists(...) на (... where DelayState = ....) 3. Пока не придумал. На текущем этапе задачи не понятно, будет ли дальнейшее развитие. Хочу послушать ваши предложения и услышать критику на ваши варианты. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 18:08 |
|
||
|
Архитектура: отложенные (schedule) данные
|
|||
|---|---|---|---|
|
#18+
_Промешан_, для всех выборок оператора не пускать к таблице, а только ко вьюхе, в которой уже прописан нужный фильтр ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 18:25 |
|
||
|
Архитектура: отложенные (schedule) данные
|
|||
|---|---|---|---|
|
#18+
добавить в таблицу поле visible. создать вью с visible = 1 отобрать права на таблицу, выдать только на вью. когда надо, запускать процедуру, обновляющую поле visible. допустим, каждые 3 часа надо делать все имеющиеся данные видимыми: делаете джоб, который каждые 3 часа апдэйтит set visible = 1. а запросы какие были, такие и останутся. но будут уже не к таблице, а ко вью ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 18:33 |
|
||
|
Архитектура: отложенные (schedule) данные
|
|||
|---|---|---|---|
|
#18+
Дополню, чтобы не было про вьюхи - вся логика в процедурах. Селектов напрямую нет. Планы кешируются соответственно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 18:36 |
|
||
|
Архитектура: отложенные (schedule) данные
|
|||
|---|---|---|---|
|
#18+
Спасибо за идею про вью спасибо. Про visible - тоже. Но раз в три часа или в час или в полчаса... это специфично, потому что а если отложено будет на 10 минут... Это я рассуждаю. С чего то надо начать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 18:38 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=171&tid=1690557]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 319ms |

| 0 / 0 |
