在我正在处理的应用程序中,我需要一个后写数据日志。也就是说,应用程序将数据累积在内存中,并且可以将所有数据保存在内存中。但是,它必须坚持,容忍合理的错误,并允许备份。
显然,我可以写一个SQL数据库;德比可以轻松嵌入。我并不是非常喜欢处理SQL API(JDBC,但是有口红),我不需要任何查询,索引或其他装饰。记录消失了,重启后我需要把它们全部读回来。
还有其他合适的替代品吗?
答案 0 :(得分:3)
尝试使用一个简单的日志文件。
随着数据的进入,存储在内存中并写入(追加)到文件中。 write()
后跟fsync()
将保证(在大多数系统上,仔细阅读您的系统和文件系统文档)数据被写入持久存储(光盘)。这些是任何数据库引擎用于在持久存储中获取数据的相同机制。
重新启动时,重新加载日志。有时,修剪日志文件的前面,以便数据使用不会无限增长。或者,将日志文件建模为循环缓冲区,其大小与内存中可容纳的大小相同。
答案 1 :(得分:1)
你看过(现在的Oracle)Berkeley DB for Java吗? “直接持久层”实际上非常简单易用。 DPL的文档here。
备份的不同选项带有一些实用程序。运行嵌入式。
(许可:我相信的BSD许可证的一种形式。)