前提
项目是一个Android APP,里面做了聊天的功能。服务器上的数据库用的是MySQL。
-- update 2014-06-06 --
会话的类型有两种,一种是短会话,聊天记录可能在20条以内,这个会话就结束了;另一种是长会话,就是类似QQ这种,想聊多久都行。不知道能不能在这上面做优化。
问题
所有聊天记录都会存在服务器上(客户端也有,但只存储最近一段时间的记录),对于在服务器上如何存储这些聊天记录,现在想到的两套方案:
- 为每个会话在数据库建一张表,每条聊天记录都存在对应的表里,但是这样做的话会让数据库里的表越建越多(因为APP的需求原因,所有聊天记录都要是随时可查的),是不是到后面会对数据库性能产生很大影响?
- 为每个会话建一个文本文件,每条聊天记录都存在对应的文件里,但是这样的话服务器上的磁盘空间会有压力,而且对磁盘文件进行读写的性能肯定要比数据库差。
如果是要在上面两套方案中间取舍应该怎么选?或者有没有更好的解决方案?
ps:之所以想要在两套方案之间选一个,是因为实现起来比较简单
文件是不必考虑的,磁盘性能会让系统的效率lag无比。
可以考虑用两个表,room表记录会话,content表记录内容。content中的room_id字段用来标记会话的id。