Nikolay
Не будет ли массив слишком большим?
Ayrat
Сваливать индекс в бд.
Но вообще если ты телега, то ты не бомж и можешь заеебенить сервак с 10тб оперативы
Ayrat
Ты рассуждаешь о телеге со своей колокольни. Ты определись ты там гугл пишешь или фановый проект
Nikolay
Не, просто говорят про акторы, масштабирование
Nikolay
Мне вот интересно, насколько реально сделать на акторах условную телегу
Ayrat
Nikolay
Без БД)
Nikolay
Телегу в оперативке
Ayrat
Nikolay
Ну 200кк юзеров ты же не уместишь в массиве
Ayrat
Поясню. Даже без роста юзербазы каждый юзер генерит тонну сообщений в день. Получается нам без роста бизнеса надо каждый день наваливать новых планок памяти чтобы хранить историю сообщений??
Ayrat
Nikolay
Ну это можно хранить в персистентных акторах во внешнем хранилище
Ayrat
Ayrat
Каждой технологии свое применение. Акторы бд не заменяют
Ayrat
Возможно я слишком агрессивно пишу я тут подумал
Ayrat
Я не хотел!
Vasily
Sergey
サイトー
Особенно точка после нет
Nikolay
А вопрос тогда, стоит ли делать телегу на акторах?
Nikolay
Какие это плюсы даст
Ayrat
А вопрос тогда, стоит ли делать телегу на акторах?
Почему нет? Но историю сообщений кидай в бд, поиск по ней человеческий сделай.
Историю на последнюю тыщу сообщений в самом акторе, ин мемори.
Смысл актора отобразить стейт юзера. Его сеттинги, друзей, чаты, работать как адрес для приёма сообщений и отправки нотификаций
Vasily
Nikolay
Nikolay
Или можно сделать отдельного актора, которого назвать, например, @omgszer, и который будет хранить твой id?
Nikolay
Ayrat
Т.е. пока у тебя 10к пользователей, думать не надо.
Как будет больше, разбиваешь индекс а-ля дерево по первым буквам, каждую букву в отдельный индекс, продолжаешь
Ayrat
Ayrat
Чой это он толстым будет
Nikolay
Где уже больше 200кк юзеров
Ayrat
и хранил индекс там
Ayrat
сверху бы завесил актором для доступа
Nikolay
Ну помоему акторы тогда как-то притянуты за уши получаются
Vasily
Карочи, @Dolfik , заканчивай страдать херней. Данные лучше хранить в виде, который наиболее эффективен для их использования. История чата - это база. Хочешь, можешь в тот же редис засунуть
Nikolay
Щас немного не про историю речь
Nikolay
Vasily
Ну каждый пользователь - актор
Vasily
Это норм
Nikolay
Ну а как нужного найти?
Vasily
Сделай актора с индексом
Ayrat
Nikolay
Vladislav
Ayrat
Я честно не понял смысл гифки :)
Vladislav
Nikolay
Ну этот индекс должен же быть персистентным?
Ayrat
Ayrat
Vasily
Vasily
При добавлении/удалении персистишь стейт
Nikolay
Делать его immutable не очень будет, да?
Vasily
Vasily
У тебя индекс - это стейт актора
Vasily
Приходит сообщение - добавился пользователь
Vasily
Обновляешь
Vasily
Удалился - обновляешь
Vasily
Изменил имя - обновляешь
Nikolay
Ну если это будет immutable dictoinary
Ayrat
Мне кажется, что это всё будет очень медленно
Можно сделать евентуальную консистенцию)))
При создании юзера закидываешь его в редис и оптимистично используешь как будто юзер уже добавился (можно с флагом для верности, что юзер ещё не персистентно сохранён), параллельно пытаешься сохранить в БД и меняешь флаг юзера при успехе.
Vasily
Ну ептыть
Nikolay
Вообще, это как-то всё выглядит, как попытка написания собственной базы, не?
Ayrat
Ayrat
если ты телега
Ayrat
а если ты по фану пишешь, то и словарь ин-мемори - отличный выбор
Крылатый
Берёшь, корочи, PHP/MySQL и пишешь телегу на огромном серваке...
Sergey
Vladislav