Хранить все в базе.
Пользователи отдельная таблица, группы отдельная таблица. И используется промежуточная таблица связей между сущностями при реляционных БД и связях "многие-ко-многим"
А месседжи чата по первоначалке можешь хранить в одной таблице. Которую потом можно привязать к промежуточной таблице msgid | user | group
А при реализации бэкенда чата, просто сапоставляешь, какие пользователи принадлежат группе в которой стартанул чат.
https://habrahabr.ru/post/193380/