在过去的许多项目中,我使用db4o都取得了很大的成功。随着时间的推移,它似乎发生了很大的变化,随着像LINQ这样的现代趋势在每个人的舌头上,它再次达到了我的兴趣的顶峰,特别是现在我知道它开始支持透明的激活和持久性,这让我很感兴趣,但当我第一次提到db4o时,一个朋友向我提出了一个非常好的问题,即使是现代的创新,我仍然不确定如何回答它。
生成类似于大型交叉表复杂约束报告的报告的最佳/最快/最常见的方法是什么,这些报告可以在SQL等平台上有效地完成?我非常了解节省了多少时间、精力和开发时间,甚至是许多性能收益,特别是在ORM上,但是一些应用程序需要复杂的报告,我不确定如何使用对象和对象查询来表达这些报告,我还关心性能,因为即使在专门为此目的设计的系统上,优化和维护复杂的报告也可能是压倒性的。
--
编辑:
更清楚地说,可以使用对象数据源等将db4o拉入与SqlDataSource等人相同的数据丰富的控件中。有人向我推荐了db4o站点上有关将其与ReportViewer一起使用的文档,以及建议将数据反规范化到报告数据库中的文档,但这个问题的目的是提出一个概念上的挑战,即如何才能完成RDBMS执行得如此之好的查询类型,从而使RDBMS保持行业地位。我喜欢db4o,但我想不出一种真正有效的方法来报告存在于几种不同类型(或SQL中的表)中的聚合数据,而不是从数据库中取出所有相关的对象,激活它们并在应用程序级代码中执行计算。我可能错了,但这似乎不能与RDBMS的优化竞争。
我希望在我们聚集在这里的聪明人中,有人知道我不知道的事情,或者对未来的实现有创新的想法,可以扩展ODBMS的竞技场。我知道不同的ORM为复杂的报表对象实现了方法,我想知道是否任何有这些技术经验的人可能会有一些创造性的东西,而不依赖于我的代码和db4o之外的任何技术(我可以单独使用SQL server生成报表)。
发布于 2008-09-17 15:03:35
为了解决通过db4o进行报告的性能成本,我建议保持高度非规范化(sqlite ?)数据库与您的db4o容器并行。针对数据库运行报告,并针对db4o运行正常的应用程序逻辑。
是的,这是更多的工作,但这样你将有高性能报告,同时保持db4o的有用性。
如果您已正确分隔数据访问代码,则更新保存对象的任何代码以同时更新报告数据库应该很容易。
发布于 2008-10-04 06:08:11
请参阅this page。
最好的
德语
发布于 2008-09-17 14:29:35
我对这个问题的有限理解是,目前使用DB4O报告非常困难,因为缺少一些功能,如计数、聚合等。按照目前的情况,您必须自己实现这些功能,这意味着所有糟糕的性能(例如,激活所有记录,然后对记录执行计数操作)。
https://stackoverflow.com/questions/79953
复制相似问题