如何规避大型嵌入式 db4o 数据库的大文件

Posted

技术标签:

【中文标题】如何规避大型嵌入式 db4o 数据库的大文件【英文标题】:How to circumvent huge files for large embedded db4o databases 【发布时间】:2013-07-18 08:56:45 【问题描述】:

我正在考虑使用嵌入式 db4o 数据库来存储模拟工具的计算结果。模拟结果可能非常大(单次运行可达几 GB,因此数据库的实际大小可能在 10 GB 到 100 GB 的范围内)。

据我了解,db4o 将整个数据库存储在一个文件中。虽然我知道 db4o 支持数据库 up to 254 GB,但我仍然担心我可能会遇到不喜欢大文件的文件系统的问题(我正在开发的应用程序将在多种架构上运行,所以我无法真正预测哪些文件系统将到位...)。那么,是否有任何最佳实践可以帮助我避免使用大文件,同时仍然保持嵌入式数据库的优势?

编辑:我刚刚发现this 帖子通常处理 db4o 中的(真的)大量数据。但是,它没有详细说明他们如何在不强调文件系统的情况下实现这一目标......

【问题讨论】:

您有什么理由不想依赖传统数据库? 是的,最重要的原因是我将在其上运行该软件的 (HPC) 系统的管理员不允许我在他们的机器上运行数据库服务器。这些机器上的计算通常只能作为批处理作业(通过作业调度程序)启动,这进一步使真实数据库服务器的使用变得复杂...... 好的。我只是对此感到好奇。我在这方面没有太多经验(当无法依赖文件时,我会转向(传统)数据库),因此无法提供帮助。 【参考方案1】:

在不创建太大文件的情况下处理大量数据的方法是使用多个容器。您应该将数据模型切割成多个容器(也称为文件)。

每个文件都将包含模型的某些部分。然后通过查询好的容器,你应该能够检索到你的对象;连接(如果需要)必须手动完成。

如果您的模型中的类太少以至于将其删除没有意义,那么我不确定 db4o 是否是您需要的方式。也许一个带有非常小的序列化的简单文件最适合您的需求。

【讨论】:

嗯,这是我的怀疑,但我希望有一个更优雅的方法......不过,谢谢你的回答:)

以上是关于如何规避大型嵌入式 db4o 数据库的大文件的主要内容,如果未能解决你的问题,请参考以下文章

db4o - 线程安全、嵌入式服务器、事务...一般问题

嵌入式软件容易犯的错误和规避方法总结

QT能开发大型软件吗?

小巧嵌入式平台“玩转”大型的数据库管理系统

编写大型 Excel 电子表格

Linux下轻量级数据库-SQLite3(嵌入式设备)