Advertisement
Guest User

Untitled

a guest
Apr 25th, 2019
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.17 KB | None | 0 0
  1. >>1388212
  2.  
  3. > В случае шифрования, если мы для каждого пользователя делаем разный шифротекст (шифруем сообщение разными ключами), то придется делать несколько копий.
  4. Это не так, в PGP, при шифровании несколькими ключами делается один общий шифротекст.
  5.  
  6. >>1388216
  7. >> Можно вместо создания бесконечного количества ссылок создать поле с типом ARRAY и помещать в него все ссылки (UUID) на необходимые данные.
  8. >
  9. >Можно, но это будет денормализация. Допустимо, но лучше сначала спроектировать нормализованную схему, а только потом денормализовать. И что там с внешними ключами?
  10. Нормализованная схема это то что я предлагал с "ссылками", и вы предлагали подобную:
  11.  
  12. >>1380677
  13. >>Если ты хочешь делать для каждого пользователя свою копию сообщения, то не проще ли просто сделать таблицу "диалог", и таблицу "сообщения", где в сообщении стоит ссылка на диалог и ссылка на получателя, кому оно предназначено? То есть, так:
  14. >> ...
  15. >>Кстати, в больших чатах невыгодно будет делать для каждого свою копию сообщения. Выгоднее делать всего одну копию для всех.
  16. >>- id, объединяющий копии одного сообщения
  17. >Это получается что объединяющее копия одного сообщения это отдельная сущность/таблица? Я не понимаю тогда, это получается тоже самое что и я предложил, только колонки в разных таблицах. Ну и контент сообщения в моём предложении находиться только оригинальном, а не дублируется.
  18.  
  19. Увы, она вызывает не решаемую проблему, когда нужно проверить существую ли приватная конференция между двумя пользователями, т.к. нужно проверить что существует ли приватная Конференция между двумя пользователями (получателями). А в решении с массивами, это делается легко и просто. Я писал об этом пост >>1387125 >>1388324
  20.  
  21. >// Проверить существует ли приватный диалог,
  22. >// не смотря на то что один из пользователей когда-то покинул диалог
  23. >SELECT ∗ FROM Dialog WHERE private = true AND (uuid_of_alice = ANY(participants) [b]AND*[/b] uuid_of_bob = ANY(participants));
  24.  
  25. >И что там с внешними ключами?
  26. PostgreSQL пока не реализовал возможность иметь массив внешних ключей https://commitfest.postgresql.org/19/1252/
  27.  
  28.  
  29. >> Participant:
  30. >> -messages UUID[] //массив из uuid сообщений
  31. >
  32. >Это плохо масштабируется, так как у пользователя могут быть тысячи сообщений. И мы не можем быстренько выбрать часть из них.
  33. Почему? SELECT ∗ FROM participant JOIN messages ON (message.uuid = ANY(participant.messages)) WHERE participant.uuid = ... AND message.date = NOW() - INTERVAL '1 DAY';
  34.  
  35.  
  36. Ещё один вопросик, про доктрину который я нечаянно запостил в утонувшний тред: https://pastebin.com/raw/ReJ9xD8b
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement