7

过去,我在许多项目中都使用过 db4o,并取得了很大的成功。随着时间的推移,它似乎有了很大的发展,随着每个人的舌头上像 LINQ 这样的现代趋势,它再次激发了我的兴趣,尤其是现在我知道它开始支持透明的激活和持久性,这让我很感兴趣,但是朋友当我第一次提到 db4o 时向我提出了一个非常好的问题,即使有了现代创新,我仍然不知道如何回答。

生成类似于大型跨表复杂约束报告的报告的最佳/最快/最常用方法是什么,可以在 SQL 等平台上如此有效地完成?我非常了解节省了多少时间、精力和开发时间,甚至获得了许多性能提升,尤其是在 ORM 上,但有些应用程序需要复杂的报告,我不知道如何使用对象和对象查询来表达,我也是担心性能,因为即使在专门为此目的设计的系统上优化和维护复杂的报告也可能是压倒性的。

--
编辑:

更清楚地说,对象数据源等可用于将 db4o 拉入与 SqlDataSource 等人相同的数据丰富的控件中。我在 db4o 站点上被提到了关于将它与 ReportViewer 一起使用的文档,并建议我将数据非规范化到报告数据库中,但这个问题意味着对如何完成查询类型提出概念挑战RDBMS 表现如此出色,以至于它们占据了整个行业。我喜欢 db4o,但如果不将所有相关对象从数据库中拉出、激活它们并执行计算,我想不出一种真正有效的方法来报告存在于几种不同类型(或 SQL 中的表)中的聚合数据在应用程序级代码中。我可能错了,但这似乎不可能

我希望在我们设法聚集在这里的聪明才智中,有人知道我不知道的事情,或者对未来的实施有创新的想法,可以扩展 ODBMS 领域。我知道各种 ORM 实现了复杂报告对象的方法,我想知道是否有任何具有这些技术经验的人可能有一些创造性的东西,不依赖于我的代码和 db4o 之外的任何技术(我可以使用单独的 SQL 服务器)。

4

6 回答 6

2

为了解决通过 db4o 报告的性能成本问题,我建议与 db4o 容器并行维护一个高度非规范化的(sqlite ?)数据库。针对 db 运行报告,针对 db4o 运行正常的应用程序逻辑。

是的,这需要更多的工作,但这样您将获得高性能报告,同时保持 db4o 的实用性。

如果您已正确分离数据访问代码,则应该很容易更新任何保存对象的代码以更新报告数据库。

于 2008-09-17T15:03:35.223 回答
2

请看这个页面

最好的,

德语

于 2008-10-04T06:08:11.347 回答
1

我对这个问题的有限理解是,由于缺少一些功能,例如 Count、Aggregate 等,目前使用 DB4O 很难进行报告。就目前而言,您必须自己实现这些,而这意味着性能不佳(例如激活所有记录,然后对记录执行计数操作)。

于 2008-09-17T14:29:35.447 回答
1

我不熟悉 db4o。但我知道一些过度报告软件。其中一些具有数据接口,您可以编写自己的连接器,例如i-net Crystal-Clear。如果您可以查询简单对象(字符串、数字、...)的简单列表,那么它很简单。

另一个简单的解决方案是编写一个虚拟 JDBC 驱动程序。有一个样本。您希望在 db4o 上运行的查询将作为虚拟存储过程提供。使用可选参数,您可以过滤 db4o 上的数据以获得最佳性能。这样的虚拟 JDBC 驱动程序可以编写 3-4 小时。

于 2008-09-19T22:41:52.473 回答
1

也可能归结为您使用的报告工具。例如,我实施了一个项目,该项目使用 Microsoft 的 Reporting Services 客户端引擎来呈现报告——不依赖于 SQL 服务器——只需为其提供对象。所有的聚合都由报告引擎执行,这意味着您的代码只需要查找和具体化底层对象。

于 2010-09-28T20:14:07.953 回答
0

Far too late to be useful to you. But I suggest that people who find this question might want to look at Jasper Reports. There is a "commercial" version of the product. However, it's actually an open source solution and can be found on sourceforge.

Seems it's actually pretty good. There's even a report server and BI functionality (again, all open source). So it might be worth a look for somebody who is a bit interested.

于 2011-07-21T12:45:08.500 回答