172 похожих чатов

Есть групповой чат, есть участники группового чата задача: недопустить создание дубликатов

участников
вопрос: как думаете с точки зрения перфа лучше будет сначала проверить(на уровне прилаги) есть ли такие записи уже или создать ограничение которое будет недопускать дубликаты? скорость первостепенна

12 ответов

12 просмотров

"сначала проверить(на уровне прилаги) есть ли такие записи уже" - а как будет гарантироваться атомарность? Я думаю, что лучше на уровне БД уникальный ключ повесить

How do yo do? В смысле -- как вы планируете сделать, чтобы скорость СОЗДАНИЯ участников была критичной? Просто интересуюсь, есличо.

Артем- Автор вопроса
Dmitriy Sviridov
"сначала проверить(на уровне прилаги) есть ли таки...

не подумал про атомарность даже, спасибо!

Разумеется, надо вешать стандартный unique constraint. Остальное -- как там проверять, как отрабатывать upsert или просто ошыбку -- это ужэ следующий вопрос, варианты разные есть.

Артем- Автор вопроса
Ilya Anfimov
How do yo do? В смысле -- как вы планируете сделат...

в плане требований, нужно чтобы запрос с клиента выполнялся как можно быстрее

Артем
в плане требований, нужно чтобы запрос с клиента в...

Это очень странное требование, на самом деле. Потому что "как можно быстрее" - это вилами по воде, и зависит от кучи факторов

Артем
в плане требований, нужно чтобы запрос с клиента в...

Понимаете, Артём, на ноутбуке с магнитным жёстким диском 5400rpm запросы на создание нового в типичном случае будет давать вам несколько тысяч новых пользователей в секунду. Ну, при достаточно количестве воркеров (десяток-другой). Куда вам столько?

Артем- Автор вопроса
Dmitriy Sviridov
Это очень странное требование, на самом деле. Пото...

вариант 1: 1 секунду эндпоинт выполняется вариант 2: 2 секунды эндпоинт выполняется учитывая что все N вариантов дают одинаковый результат, нужно заюзать самый быстрый вариант

Артем
вариант 1: 1 секунду эндпоинт выполняется вариант...

Если таблица пользователей влезает в память -- то время выполнения операцыи будет примерно один hdd roundtrip, если не влезает -- ближэ к двум. Тип диска не очень важэн, просто у магнитного hdd этот roundtrip -- где-то 7мс, у ssd -- где-то 0.3-1.5мс. И да, если эта операцыя выполняется секунду в типичном случае -- значит у вас там что-то сломано.

Артем- Автор вопроса
Артем
1 2 секунды это рандомные цифры:)

То есть вы не знаете требований к скорости, реальных скоростей и не умеете их оцэнивать. Но занимаетесь оптимизацыей. Не надо так. Я не думаю, что преждевременная оптимизацыя -- это источник бОльшэй части зла в программировании. Но что это порочная практика -- я абсолютно согласен.

Артем
вариант 1: 1 секунду эндпоинт выполняется вариант...

Чтобы эндпоинт выполнялся 1 секунду - это очень "постараться" надо. Даже на слабом VPS эндпоинт будет отвечать в десятки раз быстрее. Понятное дело, что это ещё от нагрузки зависит, от количества индексов на таблице и т.п. Но при любом раскладе вариант с дополнительным запросом из приложения на проверку дубля, во-первых, не даст атомарности, во-вторых, сам по себе будет лишним шагом.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта