使用 db4o 进行报告

发布于 2024-07-04 05:52:43 字数 864 浏览 9 评论 0原文

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

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

--
编辑:

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

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

I've used db4o with much success on many projects in the past. Over time it seems to have evolved greatly, and with modern trends like LINQ on everyone's tongue it has peaked my interest again, especially now that I know that it is starting to support transparent activation and persistence which intrigue me quite a bit, but a friend posed a very good question to me when I first mentioned db4o and, even with modern innovation, I'm still not sure how to answer it.

What are the best/fastest/most common methods to generate reports similar to the large cross-table complex constraint reports that can be done so effectively on platforms such as SQL? I understand quite well how much time, effort and development time are saved and even many of the performance gains, especially over ORMs, but some applications require complex reports that I'm not sure how to express using objects and object queries and I am also concerned about performance, since it can be overwhelming to optimize and maintain complex reports even on systems designed specifically for that purpose.

--
Edit:

To be more clear, object data sources and the like can be used to pull db4o into the same data-rich controls as SqlDataSource et al. I've been referred to documents on the db4o site about using it with ReportViewer as well as advised to denormalize data into a reporting database, but the question is meant to pose a conceptual challenge on what can be done to accomplish the types of queries that RDBMSs perform so well on that they hold the industry. I love db4o, but I can't think of a truly efficient means of reporting on aggregate data that exists across several different types (or tables in SQL) without pulling all of the relevant objects out of the database, activating them and performing the calculations in application-level code. I may be wrong, but this seems like it couldn't hope to compete with the optimizations possible with an RDBMS.

I'm hoping amongst the bright minds we've managed to gather here that somebody knows something I don't or has innovative ideas for future implementation that could expand the ODBMS arena. I know that various ORMs implement methodologies for complex reporting objects and I'm wondering if anybody with experience with any of these technologies might have something creative that doesn't depend on any technologies outside of my code and db4o (I can generate reports with an SQL server alone).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

心奴独伤 2024-07-11 05:52:44

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

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

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

In order to work around the performance cost of reporting via db4o, I'd suggest maintaining a highly denormalized (sqlite ?) database in parallel to your db4o container. Run reports against the db and normal app logic against db4o.

Yes it's more work, but this way you'll have high performance reporting while keeping the usefulness of db4o.

If you have properly separated your data access code, it should be easy to update any code that saves objects to also update the reporting db.

冷弦 2024-07-11 05:52:44

请参阅此页面

最好的,

德国的

Please see this page.

Best,

German

独留℉清风醉 2024-07-11 05:52:44

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

My limited understanding of the issue is that currently reporting is very difficult to do with DB4O, due to some missing functionality such as Count, Aggregate, etc. As it stands, you have to implement these yourself with all the poor performance that implies (e.g. activating all records, then doing a Count operation on the records).

我的鱼塘能养鲲 2024-07-11 05:52:44

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

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

I am not familiar with db4o. But I know some over reporting software. Some of it have a data interface that you can write your own connector like i-net Crystal-Clear. If you can query a plain list of simple objects (Strings, Numbers, ... ) then it is simple.

Another simple solution is to write a dummy JDBC driver. There is a sample for it. The queries that you want run on your db4o will be available as virtual stored procedure. With the optional parameters you can filter your data on db4o for best performance. Such dummy JDBC driver can be written 3-4 hours.

幽梦紫曦~ 2024-07-11 05:52:44

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

It may also boil down to what reporting tool you use. For example, I've implemented a project which uses Microsoft's Reporting Services client-side engine to render reports - no dependency on SQL server - just feed it objects. All of the aggregation is performed by the reporting engine, which means that your code merely needs to find and materialize the underlying objects.

旧伤还要旧人安 2024-07-11 05:52:44

对你来说太晚了。 但我建议发现这个问题的人可能想看看 Jasper Reports。 该产品有一个“商业”版本。 然而,它实际上是一个开源解决方案,可以在 sourceforge 上找到。

看来其实还不错。 甚至还有报表服务器和 BI 功能(同样,全部开源)。 因此,对于有兴趣的人来说,可能值得一看。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文