一个多用户程序,同时在线用户数可能会好几k,要对用户数据及时存档,以防丢失,每个用户的数据可能几百个字节到几十k字节不等,我想把它们都存在一个文件里,然后用文件内存映射来管理这个文件,是否合适呢?主要是因为用户的数据会频繁的增加删除,所以不知道用内存映射是否合适,我现在还只有用内存映射读文件的经验

解决方案 »

  1.   

    我的机器Celeron1.7G,256M内存,做到1K左右个内存映射都没有问题(我没有测试过更多),你的应该可以扛得下3K左右吧。
      

  2.   

    不合适. 由于用户数据不定长,且涉及到新增和删除操作, 很难设计出一个合理的数据结构来存储用户数据并快速定位到指定用户的数据上. 如果使用复合文档来管理, 会浪费很多内存空间, 同时使用内存映射文件虽然可以避免频繁的IO操作, 但不能保证用户数据及时存档, 如果程序或系统出现异常,或者突然断电, 会导致用户数据丢失.可以考虑使用数据库存储用户数据. 程序中只保存每个用户的ID, 根据用户ID更新相应的数据库记录.