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

Привет всем. Мы разрабатываем приложение для просомтра расписания. У нас

суть такая, что юзер создает подписку на определенную подгруппу и может следить за расписанием этой подгруппы.
У нас практически вся инфа обновляется в реалтайме. Обновленные айдишники отсылаем по веб-сокетам. Если, например, обновилась модель Lecturer, то чтобы понять, каким юзерам отсылать обновленные айдишники, я добираюсь через 4-5 таблиц 😅 Я просто недавно узнал о том, что это пздц (не бейте)))
И практически так же другие таблицы...
В общем, хотел узнать, есть ли какой-то вариант как-то оптимизировать этот процесс? Может быть через какую-то промежуточную таблицу? Но было бы ок сделать ее какую-то универсальную что ли, эту промежуточную таблицу.

3 ответов

12 просмотров

В чём Pi__ец ?

Тут другая может быть проблема, вот 100 пользователей у тебя, один меняет данные -- надо разослать уведомление 99и пользователям. (почти 100). 2 пользователя -- почти 200ам. Все меняют -- это будет почти 100 * 100, то есть сложность задачи N**2

1) В Occuoation лучше транзитивный Composite PK использовать из occupation_id и faculty_id 2) В group'aх лучше использовать низходящий либо восходящий рекурсивный обход, т.е. табличка Subgroup не нужна и стоит научиться в рекурсивный select через parent_group_id например 3) В subscription флаг is_main не нужен т.к. может привести к index или table scan'у ... d user'e лучше сделать nullable main_subscription_id например ... В общем могу продолжать. ID'шкы у вас не должны меняться, и стоит ещё в каскадирование для FK научится ...

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

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

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...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
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
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта