LINUX.ORG.RU

Структура базы под чат

 , ,


0

1

Как правильно организовать базу под чат ? Какую СУБД брать? Postgre для этих целей сгодится? Как правильно кешировать это всё и надо ли?

При такой модели от 500к+ юзеров не поплохеет при записи\выборках?

class Message(models.Model):
    sender = models.ForeignKey(User, on_delete=models.CASCADE, related_name='sender')
    receiver = models.ForeignKey(User, on_delete=models.CASCADE, related_name='receiver')
    message = models.CharField(max_length=1200)
    timestamp = models.DateTimeField(auto_now_add=True)
    is_read = models.BooleanField(default=False)

    def __str__(self):
        return self.message

    class Meta:
        ordering = ('timestamp',)
★★★★

Последнее исправление: bryak (всего исправлений: 1)

Храни в памяти. История в чате не очень нужна, но для редких случаев ее можно подтянуть из базы. 500к юзеров — это мессенджер, а не чат.

filosofia
()

За описание БД в терминах какого-то JS-ОРМ нужно банить, я считаю.

filosofia
()

В одной БД ты 500к пользователей вряд ли уложишь, если они активно переписываются.

У тебя чат one-to-one только? В противном случае ты столкнешься с тем, что на клиенте будет вешаться статус прочитанности в многопользовательских чатах когда не надо. Прочитанность в таком случае надо хранить отдельно.

Зачем ты удаляешь сообщения при удалении пользователя(или меня проглючило)?

Ну и не описывай это все дело через ORM, раз ты хочешь highload.

TheKnight ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.