我使用EMF进行RCP应用程序。该模型非常复杂,我有很大的xml文件,因此加载模型需要更多时间。使用 Eclipse CDO 模型存储库和 EMF 将模型存储在数据库中从而减少加载时间是一个不错的选择。
性能是否随着CDO模型存储库的使用而提高? 那些已经使用过CDO的人会提供您宝贵的反馈。
CDO 可能会提高性能,但这一切都取决于您在应用程序中的使用情况和数据访问模式。
CDO 支持延迟加载,这可能会提高响应能力,尤其是当请求使用小块数据时。
如果尝试加载大型数据块,并且还知道在应用程序和数据源之间引入了额外的层,则 in 也可能会降低性能,因此可能会增加延迟。
事实上,如果您已经有一个基于 EMF 内存模型的应用程序,那么如果您只是迁移到 CDO,而不对应用程序代码进行任何调整,以充分利用 CDO 和数据被延迟加载的事实,您可能会遇到性能下降。
选择使用 CDO 的参数应该与可伸缩性、并发性和事务支持更相关。从您描述的问题来看,大型模型可能会出现可伸缩性问题。但如果不是这种情况,那么CDO将无济于事。默认生成的 EMF 代码经过高度优化以访问内存中的数据,当您简单地引入像 CDO 这样的附加层时,很难提高性能。
请记住,EMF 还支持在不使用 CDO 的情况下延迟加载资源(使用默认生成模式)。您需要定义较小的资源,并在资源(代理)之间具有交叉引用。
silmarx所说的都是真的,包括"EMF也支持资源的延迟加载"。但是,如果没有CDO,互连资源的卸载是非常成问题的。要了解原因,您可能需要阅读我的文章 我的模型如何可扩展?。
顺便说一句,使用 CDO,您可以通过配置预取选项来优化更深层次对象树(silmarx 称之为"大数据块")的加载。