|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
WildSery> Диапазон может вставляться ... перечислением всех часов. Может, но это извращение в гамаке стоя, ИМХО. Хуже его первоначального варианта. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2018, 16:57 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
IBExpert> Чем триггеры-то не угодили? Необходимостью работы с транзакциями и конфликтами. С индексом было бы проще - навесил и забыл. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2018, 16:58 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
IBExpert, триггерами и процедурой нельзя гарантировать невозможность вставки одних и тех же значений. 1 транзакция - вставляем А 1 триггер - А нету 2 транзакция - вставляем А 2 триггер - А нету 1 транзакция коммит 2 транзакция коммит ОПА! Так что вот этот "масочный" контроль устроить можно было бы только вычисляемым индексом (скорее, индексом по вычисляемому столбцу). ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2018, 16:58 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
alekcvp> Так, прикинуть: 365 дней в году, по 8 записей на день Когда бронь растянется - попомни это обсуждение. :) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2018, 17:00 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
alekcvp30-45к записей в год. В принципе не много, я так понимаю? это вообще ни о чём. Даже если бы пара миллионов записей была. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2018, 17:00 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
kdv> только вычисляемым индексом (скорее, индексом по вычисляемому столбцу). Даже им нельзя, AFAIS - к, примеру, 1-5, 4-7. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2018, 17:02 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
alekcvp, 50К записей в год, в таблице из 3-4 полей простого типа - это вообще ни о чём. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2018, 17:06 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
kdvТак что вот этот "масочный" контроль устроить можно было бы только вычисляемым индексом (скорее, индексом по вычисляемому столбцу). Ну вот я и спрашивал про 8 индексов (каждый имеет вычисляемый столбец со значением NULL или 1 для соответствующего бита) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2018, 17:11 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
WildSeryalekcvp, 50К записей в год, в таблице из 3-4 полей простого типа - это вообще ни о чём. Там около 10 полей, в т.ч. 1 varchar(256), я привёл только значимые. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2018, 17:12 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
alekcvp> Там около 10 полей, в т.ч. 1 varchar(256), я привёл только значимые. Вы, кажется, о разном говорите. Дублировать записи не будет нужно, просто ссылаться на соотв. час. Если я правильно понял Сержа. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2018, 17:22 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
alekcvp, Для именно резервирования можно отдельную таблицу. Причём, если ожидается резкий рост числа объектов (несколько порядков), то можно придумать структуру хранения "с архивацией", чтобы старые периоды сжимались в другой, компактный вид - ведь, как я понимаю, резервирования задним числом быть не может? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2018, 17:24 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
А, или ты про 8 индексов на каждый час? Ужас-ужас. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2018, 17:25 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
В общем я подумал и решил немного модифицировать идеи выше: Таблицу с резервированием я разобью на две: в первой будет - id, кто, что, описание и т.п., а во второй только: res_id (= id из первой), объект, дата, номер часа. И, соответственно, во второй сделаю уникальный индекс по всем полям, кроме res_id. Какие-нибудь замечания или дополнения можете сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2018, 17:26 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
alekcvp, Собственно, так и предлагал :) Замечания если и будут, то уже по реализации. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2018, 17:32 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
alekcvp> Какие-нибудь замечания или дополнения можете сделать? Лишь повторюсь - в погоне за простотой уникальности ты значительно усложняешь реализацию и сопровождение. Гора родит Годзиллу вместо мыши. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2018, 17:46 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамЛишь повторюсь - в погоне за простотой уникальности ты значительно усложняешь реализацию и сопровождение. А как иначе избежать этого 21482445 ? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2018, 17:59 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
alekcvp> А как иначе избежать этого 21482445? Уникальность (непересекаемость) интервалов (дат, чисел) нормального (простого, адекватного) решения не имеет, ИМХО. Те которые есть (например, с непрерывными интервалами и FK от D2 на D1) на мой вкус уродливы, так что лично я бы выбирал алгоритмическое решение - например, с пессим. блокировкой нужного интервала (или перечня записей на каждый час) или по варианту Влада. Дублирование записей на каждый час лично мне не нравится. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2018, 19:38 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, Ну ещё есть вариант делать с маской, проверку через триггер, а для избегания сценария от kdv - делать очень короткую пишущую транзакцию (wait) и первым делом в ней блокировать строку с объектом в справочнике объекта. Тогда не будет синхронных резервирований одного объекта и, соответственно, описанной ситуации. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2018, 19:49 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
я бы вынес проверки из БД например, отдельный сервис сделать, который отвечает за бронирование ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2018, 19:56 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
alekcvp> делать очень короткую пишущую транзакцию (wait) и alekcvp> первым делом в ней блокировать строку с объектом Ну это та же пессим.блокировка, только не дат, а объекта. Т.е. ещё хуже, по сути. А пишущие транзакции итак всегда должны быть максимально короткими. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2018, 20:17 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
Дегтярев Евгений> я бы вынес проверки из БД. например, отдельный сервис сделать, который отвечает за бронирование Если делать отдельный сервис как промежуточное звено, то это ещё большее усложнение, т.е. развести стадо Годзилл, летающих. :) А если делать накопление "заявок" в очередь внутри БД с послед. обработкой одним коннектом, т.е. сильно асинхронно - клиент не увидит статуса своей заявки "сразу". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2018, 20:20 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамНу это та же пессим.блокировка, только не дат, а объекта. А даты в такой модели не заблокировать никак... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2018, 20:50 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
alekcvp> А даты в такой модели не заблокировать никак... Ну, зависит от доп. таблиц. Например, если в доп.таблице будут те самые "ID, Date, Hour" - можно их блокировать, потом снимать блокировку (поскольку для послед.работы и селектов они уже будут не нужны). Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2018, 21:00 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
Кстати, про архитектуру/область ты ничего не сказал. Это двузвенка или трехзвенка с Web-ом или что ? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2018, 21:01 |
|
|
start [/forum/topic.php?fid=40&msg=39659025&tid=1561078]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
others: | 305ms |
total: | 432ms |
0 / 0 |