Для создания чата с быстрым чтением и записью данных, а также сохранением информации при перезагрузке сервера, рекомендуется использовать базу данных NoSQL. NoSQL базы данных предназначены для хранения неструктурированных данных, и они обеспечивают высокую производительность и масштабируемость.
Одним из популярных вариантов NoSQL баз данных является MongoDB. MongoDB хранит данные в формате BSON (бинарное представление JSON) и обеспечивает быстрое чтение и запись данных. Он также поддерживает функции, которые могут быть полезными для чата, такие как встроенную поддержку для работы с массивами и вложенными структурами данных.
Вы можете сохранять информацию о комнатах в коллекции MongoDB, используя идентификатор комнаты в качестве ключа. Для поля "users" и "messages" в датаклассе Room вы можете создать подколлекции внутри каждой комнаты. Поля "videos" и "skips" могут быть хранены непосредственно в коллекции комнат.
Пример структуры коллекции в MongoDB для хранения информации о комнатах:
{
"_id": ObjectId("5f4ea39c2c036789a9123456"),
"users": {
"count": 5
},
"messages": {
"last": {
"id": 1,
"user": "John",
"event": "join"
},
"count": 10
},
"videos": "video_url",
"skips": {
"user1": 3,
"user2": 5
}
}
Обратите внимание, что в приведенном выше примере "_id" - это автоматически генерируемый уникальный идентификатор для каждой комнаты.
MongoDB предлагает официальный драйвер для большинства языков программирования, поэтому вы сможете легко взаимодействовать с базой данных из вашего серверного кода.