Gepron1x
Пользователь
- Сообщения
- 41
- Решения
- 3
Привет! Может, знает кто-нибудь примеры эффективного использования бд в майнкрафт плагинах, откуда можно списать? под эффективностью я имею ввиду:
- Минимум бессмысленных обновлений
- Отсутствие постоянной нагрузки на бд
- Разделение кода: Хочется, чтобы обычные объекты не зависили напрямую от хранилища. Проще говоря, SOLID не нарушать
- Исполнять бд-код напрямую в методах обновления (Clan.setDisplayName, Clan.addMember) - проблемы сразу явные - объект зависит от базы, что явно нарушает SOLID. Да и не думаю, что базе понравится постоянные обновления при любом тыке.
- Периодически сохранять все в базу. Уже не нарушает solid, но, черт подери, очень и очень много бессмысленных обновлений, а запросы жирные. Вообще, неплохой вариант.
- Ивенты. В методах обновления, вместо исполнения бд-кода напрямую, я вызываю ивенты (ClanAddMemberEvent, ClanSetDisplayNameEvent). В отдельном слушателе обрабатываю их, и добавляю в очередь некие DatabaseUpdate. Периодически исполняю все обновления в очереди. Тоже классный вариант, но проблемы тоже присутствуют. Во-первых, SOLID нарушается, объекты не получится использовать без сервиса для вызова ивентов. Во-вторых нужно пипец как много ивентов, почти для каждого поля каждого класса, что довольно громоздко.
Как это делается в больших плагинах? Меня долго мучает данный вопрос, много где спрашиваю, но ответы всегда максимально расплывчатые.