!!讨论:聊天记录的保存问题

maosher 2009-08-17 02:49:59
目前想自写一个聊天程序,在聊天记录这里有点疑问,拿出来大家讨论一下
1聊天记录的保存应该是以当前用户的名户名之类的标识来保存的吧,这样不会造成切换不同用户后聊天记录互读的问题。
2是否需要一个配置方件来描写当前用户的聊天记录文件信息,这个是基于下面会发生的情况。
3聊天时间长了,难免保存文件的容量会很大,所以,全部放在一个文件里,以后读聊天记录的时候会很慢。
4聊天文件的保存应该以什么标志为限,以时间:如果这个时间段内的聊天很少,岂不是很少,再说可能会造成文件过的情况。
以大小,可能会出现一个聊天文件在一条记录保存前正好未到达限制大小,而保存后正好超出了大小。

暂时考虑的只有这么多,大家设想一下那些不可实现点,那些还需要注意的地方,讨论一下.
...全文
531 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Wolf0403 2009-08-18
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 hairetz 的回复:]
http://blog.csdn.net/lucky_06/archive/2008/07/09/2626725.aspx

仅供参考,因为每个用户本地不可能都有数据库,很多聊天记录一开始是按一定格式保存在本机。
除非有必要才存服务器的数据库,我推测。
[/Quote]

SQLite :)

好像有看到过说法说QQ记录就是 sqlite 的
maosher 2009-08-18
  • 打赏
  • 举报
回复
再说N多人聊天,服务器想支持也扶持不来啊,得多大空间
  • 打赏
  • 举报
回复
http://blog.csdn.net/lucky_06/archive/2008/07/09/2626725.aspx

仅供参考,因为每个用户本地不可能都有数据库,很多聊天记录一开始是按一定格式保存在本机。
除非有必要才存服务器的数据库,我推测。
yangyunzhao 2009-08-18
  • 打赏
  • 举报
回复
用SQLite吧,绝对满足你的要求。
sniperhuangwei 2009-08-18
  • 打赏
  • 举报
回复
数据文件的格式是可以如下组织
文件头:
数据内容:
文件头是一个索引表,例如索引结构如下:
struct index
{
string data;
uLong beginPos;//在数据内容在文件中的起始位置
uLong size;//对应的数据长度
};

当需要读取数据的时候先找到索引,然后根据索引的内容读取数据内容.

具体该怎么组织文件结构自己思考吧.

maosher 2009-08-18
  • 打赏
  • 举报
回复
决定不用其它件,直接写文件加密

现在有一个疑问,就是聊天记录总是从最近开始读的,那么也就是最文件最尾读,小弟对于文件尾读数据比较困惑



struct stBaseInfo;//文字,表情,时间等
struct stChatInfo
{
std::string name;
int id;
stBaseInfo baseInfo;
};



这样的结构应该怎样存,方便以后读取
maosher 2009-08-17
  • 打赏
  • 举报
回复
无人发言?
maosher 2009-08-17
  • 打赏
  • 举报
回复
回楼上,偏要用数据库,一个本地保存,还调用数据库?舍近求远,效率问题,而且还得数据库支持,QQ记录不也保存在本地么


接下来讨论的一个问题:

5如果同时和多人聊,一个要考虑的问题,就是如何合理的控制好几个部分同时对聊天记录文件的读写协作问题。

kakashi0309 2009-08-17
  • 打赏
  • 举报
回复
不用数据库? 什么格式的文件来保存?
code_killer 2009-08-17
  • 打赏
  • 举报
回复

考虑一下 SQLITE 吧,省心、省力。
long2015 2009-08-17
  • 打赏
  • 举报
回复
研究一下QQ是怎么保存的
xingzhe2001 2009-08-17
  • 打赏
  • 举报
回复
1聊天记录的保存应该是以当前用户的名户名之类的标识来保存的吧,这样不会造成切换不同用户后聊天记录互读的问题。



2是否需要一个配置方件来描写当前用户的聊天记录文件信息,这个是基于下面会发生的情况。

msn是过一段时间让你转存。

3聊天时间长了,难免保存文件的容量会很大,所以,全部放在一个文件里,以后读聊天记录的时候会很慢。

不用全读,读用户看到的那部分

4聊天文件的保存应该以什么标志为限,以时间:如果这个时间段内的聊天很少,岂不是很少,再说可能会造成文件过的情况。
以大小,可能会出现一个聊天文件在一条记录保存前正好未到达限制大小,而保存后正好超出了大小。

以大小为限,但是以记录作为单位,这样不会一句话一半在前,一半在后

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧