使用 Command 模式实现事务。
Vista 以上版本 OS 支持文件事务,如果不依赖 OS 提供的事务的话,你需要自己实现文件读写的事务操作。
是的,目前我是在考虑自己实现事务,我觉得可以实现很高灵活性的事务,我用Command实现简单的Undo,Redo操作,不过我的事务如何管理呢,在内存中管理似乎并不可靠,是否应该和日志结合,让日志既起到记录操作的作用,同时依据日志来完成事务呢,这个路子是否性的通呢?....谢谢。。
@阔洋: 如果不依赖OS的事务机制,你的确需要使用日志来实现(数据库也是通过日志来回滚),命令一定要最小化(保证最大限度的原子操作),通过文件系统实现一个 command stack,用 Memory-Mapped Files 来提高写入性能,如果需要更严谨的话,你还需要考虑磁盘缓存的问题,防止断电后数据没有写入的情况发生。个人建议你用一种成熟的产品来实现 Command Stack,比如 sqlite3,Berkeley DB等。我在做升级程序时使用了 Windows INI 来实现 Command Stack,性能虽然差,好歹程序升级需要操作的文件并不算多。你也可以根据你的实际需求做出选择。
文件操作和数据库操作哪能放到一个事务中?如果要保证写文件和写数据库一致。一般可以先写文件再写数据库
路过