日期:2014-05-17  浏览次数:20442 次

关于数据库缓存
目前我是用java   socket写的,,

现在我的服务器主要问题是这样
在服务器的数据库中保存文件路径,客户端发送请求从服务器下载文件,然后操作文件,保存提交文件给服务器
并发数量大约1000


现在我有几个问题

1,
客户端发送一个表示请求的字节流(字节流的协议我自己设置好了),有人说可以通过发送一个xml描述请求,??但是xml文件不是更大吗?

2,
由于数据库表中的信息只会被查询,不会被修改,所以,我想,可不可以每次运行服务器端的程序时,就将表中的某些经常要被查询的数据保存到一个map中,然后客户端发送请求过来时,直接在map中查找,这样会不会更快呢??这算不算是所谓的缓存??

3,
对于整个系统,有什么建议吗?


------解决方案--------------------
1:xml只与开发习惯,规范有关,统一的规范有助于后来者的二次开发,
2:你这个算是主动缓存,但如果数据量大上去,对内存压力就大了。这个是一个后续扩展性问题,需要你对需求认真考虑。
3:目前看你的这个东西,需求单一,功能简单,能提的建议并不多。只要保证平凡读取表字段尽可能小,考虑定期分表将低访问率的文件移动到其他地方,扩展性就数据库方面而言并不特别困难。除非你系统的后续业务级别特别大,那是另外一回事。

------解决方案--------------------
有一定并发量,不修改数据当然需要缓存,你的想法就不错,数据量大的时候可以考虑缓存调度,根据使用频率保留使用过的在缓存


协议的方式实际没有好坏之分,操作方便就可以,如果考虑安全性才会复杂些

------解决方案--------------------
协议,二进制和xml正好是2个极端:高效但扩展难,易扩展但开销大
个人主张居中的ini:易扩展且开销低

如果不变,是可以缓存,但是需要一个机制:如果变了,缓存能先更新

用户会修改服务器里的文件?多人改同一个文件怎么处理?