Russian Qt Forum
Ноябрь 23, 2024, 04:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: БД для хранения сообщений  (Прочитано 5500 раз)
evgenm27
Гость
« : Май 22, 2018, 19:01 »

Доброго дня. Ребят, пилю чат на qt, нужно хранить всю историю сообщений, т.е. я нажимаю на имя человека и должна подтягиваться вся переписка в окно. Уперся в пару вопросов. Какую бд будет правильней выбрать для хранения сообщений с разными пользователями и из каких столбцов будет правильней построить таблицу, не подскажите?
Записан
RedDog
Частый гость
***
Offline Offline

Сообщений: 221


Просмотр профиля
« Ответ #1 : Май 22, 2018, 19:53 »

SQLite, если у каждого юзера своя история сообщений.
Одной таблицы хватит: ID юзера | Сообщение | InOut (true/false)
Записан
vic57
Чайник
*
Offline Offline

Сообщений: 90


Просмотр профиля
« Ответ #2 : Май 22, 2018, 19:56 »

еще datetime добавить
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Май 22, 2018, 20:36 »

еще datetime добавить
Лучше в unixtime
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
qate
Супер
******
Offline Offline

Сообщений: 1177


Просмотр профиля
« Ответ #4 : Май 23, 2018, 11:50 »

SQLite, если у каждого юзера своя история сообщений.

если чат имеет сервер, то лучше на сервере и хранить, а на клиента подтягивать
бд конечно постгрес
Записан
evgenm27
Гость
« Ответ #5 : Май 23, 2018, 17:45 »

Спасибо за советы. А если будет совсем уж длинная история сообщений, проблемы с пересылкой от сервера к клиенту могут возникнуть с целостностью или производительностью? Может альтернатива есть?
Записан
RedDog
Частый гость
***
Offline Offline

Сообщений: 221


Просмотр профиля
« Ответ #6 : Май 23, 2018, 18:54 »

А если будет совсем уж длинная история сообщений, проблемы с пересылкой от сервера к клиенту могут возникнуть с целостностью или производительностью?
В крайнем случае можно сжать бинарные данные, перед высылкой в сеть.
Записан
qate
Супер
******
Offline Offline

Сообщений: 1177


Просмотр профиля
« Ответ #7 : Май 24, 2018, 08:27 »

Спасибо за советы. А если будет совсем уж длинная история сообщений, проблемы с пересылкой от сервера к клиенту могут возникнуть с целостностью или производительностью? Может альтернатива есть?

взялся писать чат, и не посмотрел как уже сделано в telegram, skype и т.п. ?
история там подгружается по мере надобности
бери исходники телеграма - вот тебе и клиент уже есть, сервер только написать осталось
или бери клиента и сервера jabber - все уже есть opensource
Записан
evgenm27
Гость
« Ответ #8 : Май 24, 2018, 18:40 »


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

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

Сообщений: 221


Просмотр профиля
« Ответ #9 : Май 24, 2018, 19:22 »

У модели есть QAbstractItemModel::fetchMore(const QModelIndex &parent) можно из него сигналить на подтягивание данных (допустим 5-ти записей) с датой от parent-а и меньше.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.052 секунд. Запросов: 23.