powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Сложная проверка на уникальность
25 сообщений из 76, страница 2 из 4
Сложная проверка на уникальность
    #39659010
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSery> Диапазон может вставляться ... перечислением всех часов.

Может, но это извращение в гамаке стоя, ИМХО.
Хуже его первоначального варианта.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Сложная проверка на уникальность
    #39659011
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert> Чем триггеры-то не угодили?

Необходимостью работы с транзакциями и конфликтами.
С индексом было бы проще - навесил и забыл.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Сложная проверка на уникальность
    #39659012
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert,

триггерами и процедурой нельзя гарантировать невозможность вставки одних и тех же значений.
1 транзакция - вставляем А
1 триггер - А нету
2 транзакция - вставляем А
2 триггер - А нету
1 транзакция коммит
2 транзакция коммит
ОПА!

Так что вот этот "масочный" контроль устроить можно было бы только вычисляемым индексом (скорее, индексом по вычисляемому столбцу).
...
Рейтинг: 0 / 0
Сложная проверка на уникальность
    #39659013
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp> Так, прикинуть: 365 дней в году, по 8 записей на день


Когда бронь растянется - попомни это обсуждение. :)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Сложная проверка на уникальность
    #39659014
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp30-45к записей в год. В принципе не много, я так понимаю?
это вообще ни о чём. Даже если бы пара миллионов записей была.
...
Рейтинг: 0 / 0
Сложная проверка на уникальность
    #39659016
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv> только вычисляемым индексом (скорее, индексом по вычисляемому столбцу).

Даже им нельзя, AFAIS - к, примеру, 1-5, 4-7.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Сложная проверка на уникальность
    #39659020
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp,

50К записей в год, в таблице из 3-4 полей простого типа - это вообще ни о чём.
...
Рейтинг: 0 / 0
Сложная проверка на уникальность
    #39659025
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvТак что вот этот "масочный" контроль устроить можно было бы только вычисляемым индексом (скорее, индексом по вычисляемому столбцу).
Ну вот я и спрашивал про 8 индексов (каждый имеет вычисляемый столбец со значением NULL или 1 для соответствующего бита)
...
Рейтинг: 0 / 0
Сложная проверка на уникальность
    #39659026
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSeryalekcvp,
50К записей в год, в таблице из 3-4 полей простого типа - это вообще ни о чём.
Там около 10 полей, в т.ч. 1 varchar(256), я привёл только значимые.
...
Рейтинг: 0 / 0
Сложная проверка на уникальность
    #39659032
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp> Там около 10 полей, в т.ч. 1 varchar(256), я привёл только значимые.

Вы, кажется, о разном говорите. Дублировать записи не будет нужно,
просто ссылаться на соотв. час. Если я правильно понял Сержа.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Сложная проверка на уникальность
    #39659033
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp,

Для именно резервирования можно отдельную таблицу.
Причём, если ожидается резкий рост числа объектов (несколько порядков), то можно придумать структуру хранения "с архивацией", чтобы старые периоды сжимались в другой, компактный вид - ведь, как я понимаю, резервирования задним числом быть не может?
...
Рейтинг: 0 / 0
Сложная проверка на уникальность
    #39659034
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, или ты про 8 индексов на каждый час? Ужас-ужас.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Сложная проверка на уникальность
    #39659035
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем я подумал и решил немного модифицировать идеи выше:

Таблицу с резервированием я разобью на две: в первой будет - id, кто, что, описание и т.п., а во второй только: res_id (= id из первой), объект, дата, номер часа. И, соответственно, во второй сделаю уникальный индекс по всем полям, кроме res_id.

Какие-нибудь замечания или дополнения можете сделать?
...
Рейтинг: 0 / 0
Сложная проверка на уникальность
    #39659040
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp,

Собственно, так и предлагал :) Замечания если и будут, то уже по реализации.
...
Рейтинг: 0 / 0
Сложная проверка на уникальность
    #39659044
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp> Какие-нибудь замечания или дополнения можете сделать?

Лишь повторюсь - в погоне за простотой уникальности
ты значительно усложняешь реализацию и сопровождение.
Гора родит Годзиллу вместо мыши.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Сложная проверка на уникальность
    #39659047
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамЛишь повторюсь - в погоне за простотой уникальности
ты значительно усложняешь реализацию и сопровождение.
А как иначе избежать этого 21482445 ?
...
Рейтинг: 0 / 0
Сложная проверка на уникальность
    #39659080
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp> А как иначе избежать этого 21482445?

Уникальность (непересекаемость) интервалов (дат, чисел)
нормального (простого, адекватного) решения не имеет, ИМХО.
Те которые есть (например, с непрерывными интервалами и FK
от D2 на D1) на мой вкус уродливы, так что лично я бы выбирал
алгоритмическое решение - например, с пессим. блокировкой
нужного интервала (или перечня записей на каждый час) или по
варианту Влада.

Дублирование записей на каждый час лично мне не нравится.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Сложная проверка на уникальность
    #39659084
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

Ну ещё есть вариант делать с маской, проверку через триггер, а для избегания сценария от kdv - делать очень короткую пишущую транзакцию (wait) и первым делом в ней блокировать строку с объектом в справочнике объекта. Тогда не будет синхронных резервирований одного объекта и, соответственно, описанной ситуации.
...
Рейтинг: 0 / 0
Сложная проверка на уникальность
    #39659087
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я бы вынес проверки из БД
например, отдельный сервис сделать, который отвечает за бронирование
...
Рейтинг: 0 / 0
Сложная проверка на уникальность
    #39659098
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp> делать очень короткую пишущую транзакцию (wait) и
alekcvp> первым делом в ней блокировать строку с объектом

Ну это та же пессим.блокировка, только не дат, а объекта.
Т.е. ещё хуже, по сути. А пишущие транзакции итак всегда
должны быть максимально короткими.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Сложная проверка на уникальность
    #39659099
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дегтярев Евгений> я бы вынес проверки из БД. например, отдельный сервис сделать, который отвечает за бронирование

Если делать отдельный сервис как промежуточное звено, то это
ещё большее усложнение, т.е. развести стадо Годзилл, летающих. :)
А если делать накопление "заявок" в очередь внутри БД с послед.
обработкой одним коннектом, т.е. сильно асинхронно - клиент не
увидит статуса своей заявки "сразу".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Сложная проверка на уникальность
    #39659103
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамНу это та же пессим.блокировка, только не дат, а объекта.
А даты в такой модели не заблокировать никак...
...
Рейтинг: 0 / 0
Сложная проверка на уникальность
    #39659106
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp> А даты в такой модели не заблокировать никак...

Ну, зависит от доп. таблиц. Например, если в доп.таблице
будут те самые "ID, Date, Hour" - можно их блокировать,
потом снимать блокировку (поскольку для послед.работы
и селектов они уже будут не нужны).

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Сложная проверка на уникальность
    #39659107
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, про архитектуру/область ты ничего не сказал.
Это двузвенка или трехзвенка с Web-ом или что ?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Сложная проверка на уникальность
    #39659108
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

Приложение напрямую к серверу БД коннектится, не вижу смысла заморачиваться с 3хзвенкой.
...
Рейтинг: 0 / 0
25 сообщений из 76, страница 2 из 4
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Сложная проверка на уникальность
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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