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