db4o 如何保持性能

Posted

技术标签:

【中文标题】db4o 如何保持性能【英文标题】:How does db4o maintain the performance 【发布时间】:2011-09-15 11:24:58 【问题描述】:

我读过here(搜索字符串键“核心以单线程模式运行”),db4o 核心本质上是单线程的,那么当多个用户尝试同时访问数据库时它如何保持性能/吞吐量?

【问题讨论】:

你能添加这种单线程的证据吗? @Kees 这里是来自 ETH Zurich globis.ethz.ch/education/oodb/slides/03-db4o-part-1.pdf 的链接,并在字符串键上搜索“核心以单线程模式运行” 【参考方案1】:

是的,db4o 本质上是单线程的。它使用一把大锁来保护它的所有操作。它在代码中很容易看到。

如何保持吞吐量?好吧,它根本没有! db4o 从未为执行大量并发操作的应用程序(如 webapps)而构建。它真的是为嵌入桌面/移动应用程序而构建的。它无法处理服务器负载。要获得高吞吐量,您需要使用更大的数据库。

除了单线程之外,db4o 也没有提供任何好的并发控制来检测不同事务的冲突变化。

【讨论】:

你能给我推荐一个很好的面向对象的数据库,它可以很好地与 ASP.NET Web 应用程序结合使用。有人用 db4o 对 SQL Server 进行过性能基准测试吗? 我个人可以推荐RavenDB。然而,它不是一个面向对象的数据库,而是一个非常适合 webapps 的非常好的文档数据库。

以上是关于db4o 如何保持性能的主要内容,如果未能解决你的问题,请参考以下文章

db4o 客户端/服务器似乎一次只能处理一个查询?

db4o这个对象数据库有很多优点,但为什么不是很火? 大家有没有用过db4o的?

你如何在 Java 中写入磁盘(使用刷新)并保持性能?

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

如何让Oracle数据库保持优良性能的方法

如何提高 db4o 中的查询速度?