Russian Qt Forum

Qt => Вопросы новичков => Тема начата: evgenm27 от Май 22, 2018, 19:01



Название: БД для хранения сообщений
Отправлено: evgenm27 от Май 22, 2018, 19:01
Доброго дня. Ребят, пилю чат на qt, нужно хранить всю историю сообщений, т.е. я нажимаю на имя человека и должна подтягиваться вся переписка в окно. Уперся в пару вопросов. Какую бд будет правильней выбрать для хранения сообщений с разными пользователями и из каких столбцов будет правильней построить таблицу, не подскажите?


Название: Re: БД для хранения сообщений
Отправлено: RedDog от Май 22, 2018, 19:53
SQLite, если у каждого юзера своя история сообщений.
Одной таблицы хватит: ID юзера | Сообщение | InOut (true/false)


Название: Re: БД для хранения сообщений
Отправлено: vic57 от Май 22, 2018, 19:56
еще datetime добавить


Название: Re: БД для хранения сообщений
Отправлено: Пантер от Май 22, 2018, 20:36
еще datetime добавить
Лучше в unixtime


Название: Re: БД для хранения сообщений
Отправлено: qate от Май 23, 2018, 11:50
SQLite, если у каждого юзера своя история сообщений.

если чат имеет сервер, то лучше на сервере и хранить, а на клиента подтягивать
бд конечно постгрес


Название: Re: БД для хранения сообщений
Отправлено: evgenm27 от Май 23, 2018, 17:45
Спасибо за советы. А если будет совсем уж длинная история сообщений, проблемы с пересылкой от сервера к клиенту могут возникнуть с целостностью или производительностью? Может альтернатива есть?


Название: Re: БД для хранения сообщений
Отправлено: RedDog от Май 23, 2018, 18:54
А если будет совсем уж длинная история сообщений, проблемы с пересылкой от сервера к клиенту могут возникнуть с целостностью или производительностью?
В крайнем случае можно сжать бинарные данные, перед высылкой в сеть.


Название: Re: БД для хранения сообщений
Отправлено: qate от Май 24, 2018, 08:27
Спасибо за советы. А если будет совсем уж длинная история сообщений, проблемы с пересылкой от сервера к клиенту могут возникнуть с целостностью или производительностью? Может альтернатива есть?

взялся писать чат, и не посмотрел как уже сделано в telegram, skype и т.п. ?
история там подгружается по мере надобности
бери исходники телеграма - вот тебе и клиент уже есть, сервер только написать осталось
или бери клиента и сервера jabber - все уже есть opensource


Название: Re: БД для хранения сообщений
Отправлено: evgenm27 от Май 24, 2018, 18:40

взялся писать чат, и не посмотрел как уже сделано в telegram, skype и т.п. ?
история там подгружается по мере надобности
бери исходники телеграма - вот тебе и клиент уже есть, сервер только написать осталось
или бери клиента и сервера jabber - все уже есть opensource

Я уже думал о том, чтобы сделать подгрузку по мере надобности. Но не могу сообразить как это провернуть, если в ячейке бд будут просто строки с датой и текстом сообщения. Может накинете идею или ткнете в исходник телеги, отвечающий за этот момент? Сам не найду) буду признателен.


Название: Re: БД для хранения сообщений
Отправлено: RedDog от Май 24, 2018, 19:22
У модели есть QAbstractItemModel::fetchMore(const QModelIndex &parent) можно из него сигналить на подтягивание данных (допустим 5-ти записей) с датой от parent-а и меньше.