我想保留人们在我的应用程序中执行的一些操作的日志,在某些情况下,如果需要可以撤消.
最好将这些日志存储在文件或数据库中吗?我完全不知道它的优点和缺点是什么,除了它是另一个设置表.
是否有第三个(或第四个等)选项,我不知道我应该研究和了解?
至少有一个明确的理由要存储在数据库中.您可以在MySQL(或其他数据库中的类似结构)中使用INSERT DELAYED,它会立即返回.您不会使用这些类型的查询从数据库中获取任何返回数据,并且不保证它们不会被应用.
通过使用INSERT DELAYED,您不会因为日志记录而减慢应用程序的速度.数据库可以随时将INSERT写入磁盘,因此可以将一堆插入捆绑在一起.
您需要注意使用MySQL的内置时间戳函数(如CURRENT_TIMESTAMP或CUR_DATE()),因为只要查询实际执行,它们就会被调用.因此,您应确保在您的编程语言中生成数据,而不是由数据库生成.(此段可能是特定于MySQL的)
您几乎肯定希望使用数据库进行灵活的基于记录的访问,并利用数据库处理并发数据访问的能力.如果您需要跟踪可能需要撤消的信息,那么以结构化格式获取信息是一种好处,因为它能够更新指示某个特定事务已撤消的时间和人员的行.
如果性能非常高,或者每个记录中存在非结构化或大量数据(可能非常难以存储在数据库中),您可能只想写入文件.请注意,除非您的应用程序具有非常大量的事务,否则数据库速度不太可能成为问题.另请注意,如果您正在处理文件,则需要非常小心地处理并发访问(读/写/锁定),这可能不是您想要处理的.