|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
alekcvp, а если экземпляр один то и с блокировкой можно не заморачиваться ) авторА даты в такой модели не заблокировать никак... даты можно и не блокировать, т.к. обращения к одному объекту уже сериализованы при низкой конкуренции на один объект вполне себе решение ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2018, 21:44 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
авторЕсли делать отдельный сервис как промежуточное звено, то это ещё большее усложнение, да усложнение, но это, так сказать, вариант на вырост ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2018, 21:47 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
Дегтярев Евгенийalekcvp, а если экземпляр один то и с блокировкой можно не заморачиваться ) Пишущих экземпляров где-то 2-5 планируется. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2018, 22:04 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
В общем, я щас подумал - поскольку таблица брони всё равно дополнительная к справочнику, то можно и декларативно, пожалуй (с доп. полем busy/free). Object Date H1 H2 Status1 Today 08 12 Busy1 Today 12 14 Free1 Today 14 18 (или Null) Busy H2 - int или timestamp, FK на H1. UQ - на Object, Date, H1. Операция брони будет чуть сложнее, чем тупой Insert, конечно, зато блокировать справочник не придётся. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2018, 22:06 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
В общем, тут думать надо! (с) P.S. В топик призывается Дед. :) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2018, 22:07 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
alekcvp> Пишущих экземпляров где-то 2-5 планируется. Тю, ради 2-5 заморачиваться и смысла особо нет. Лочишь и всё, где ж там узкое место-то?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2018, 22:08 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
alekcvphvladСоздай доп таблицу (ID, Value) с уникальностью на оба поля. Перед вставкой в основную таблицу (например в триггере before insert\update) вставь ID, Value в доп таблицу. Если удалось - можно обычным селектом проверить наличие конфликтующей маски в основной таблице. Если не удалось - откат и повтор (или отказ от операции).Дык, в том и дело, что ID и Value могут быть не уникальными.Моя модель этому не противоречит. Она сводит конкуренцию в доп таблице к разумному минимуму. У тебя варианты - лочить ID, лочить ID + Value, лочить несколько записей: ID + Value + каждый бит в маске. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2018, 22:45 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
hvlad> У тебя варианты - лочить А как тебе вариант с непрерывными интервалами? Слишком муторно? :) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2018, 22:52 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
hvladalekcvpпропущено... Дык, в том и дело, что ID и Value могут быть не уникальными.Моя модель этому не противоречит. Она сводит конкуренцию в доп таблице к разумному минимуму. У тебя варианты - лочить ID, лочить ID + Value, лочить несколько записей: ID + Value + каждый бит в маске. А, со второго раза дошла идея. Ну, в моём случае проще лочить ID, наверное. Т.к. конкуренция маленькая. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2018, 23:00 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустамhvlad> У тебя варианты - лочить А как тебе вариант с непрерывными интервалами? Слишком муторно? :)Если я правильно понял этот вариант, то с точки зрения синхронизации интервалы и маски никак не отличаются. С точки зрения поиска пересечений - маски проще, интервалы гибче. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2018, 23:18 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
hvlad> с точки зрения синхронизации интервалы и маски никак не отличаются. На маску UK не навесишь, а на интервал - можно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2018, 23:25 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустамhvlad> с точки зрения синхронизации интервалы и маски никак не отличаются. На маску UK не навесишь, а на интервал - можно.Пример давай, посмотрим ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2018, 23:47 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
Я же привёл выше. Щас DDL/DML набросаю. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2018, 00:00 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, где выше ? Я не буду перечитывать 3 страницы в поисках ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2018, 00:08 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
Если ты про это 21482910 , то я не вижу как гарантируется работоспособность при конкурентном доступе ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2018, 00:09 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
Вот, 2 варианта поля использования полей H2/Status: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2018, 00:17 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
hvlad> то я не вижу как гарантируется работоспособность при конкурентном доступе FK не даст создать запись без "free", а UQ не даст создать дубль. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2018, 00:19 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
Хотя нет, всё равно можно будет вставить запись, если проверять некорректно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2018, 00:21 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
Схема избыточно сложна и не гарантирует отсутствия пересекающихся интервалов. Код: sql 1. 2. 3.
Ничто не мешает добавить Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2018, 01:06 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
Это да, если некорректно проверять, то можно сделать грязь. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2018, 01:13 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
Навскидку, даже если не делать соотв. проверку в клиенте/процедуре, то что-то вроде Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
упрощает и эту проблему. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2018, 02:27 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам Код: sql 1.
А где Код: sql 1.
? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2018, 02:32 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
Разумеется, это неполный/неточный код, ибо зависит от реализации. К примеру, если h2 - нулл, битвин не сработает. Но как раз проверять надобности, по идее, нет, ибо в нормальной ситуации интервалы всегда двигаются вправо. Хотя, если предполагается, что можно забронировать с 2 до 5, а потом с 8 до 3 - да, нужно будет добавить и это условие. И не только. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2018, 03:28 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
Если интервалы бронирования строго часовые, тогда уж на каждый час создавать отдельную запись в таблице бронирования. И индекс без проблем прикручивается. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2018, 05:03 |
|
Сложная проверка на уникальность
|
|||
---|---|---|---|
#18+
Это ещё на первой странице предложили и он собсно на подобном варианте и остановился. Но это доп. 8х/24х строк, только для уникальности. И это щас строго часовые, а потом ситуация "внезапно" изменится и понадобятся получасы... Это, видимо, медицина или какой-то сервис (салоны, парикхмахерские, авто и пр.) - а там всё возможно, полёт фантазий богатый. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2018, 09:35 |
|
|
start [/forum/topic.php?fid=40&msg=39659172&tid=1561078]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 311ms |
total: | 424ms |
0 / 0 |