在老天我们用于访问的数据库通过存储程序。他们被看作是`好'的方式管理的数据。我们保持数据库中的数据,以及任何语言/平台可以访问它通过JDBC/ODBC/等。

然而,近年来运行时间反省/元数据存储检索机制,例如休眠/DataNucleus已成为受欢迎的。最初,我们担心他们将会是缓慢的,因为额外的步骤所涉及的(反射是昂贵的)和如何检索不必要的数据(全体)时,我们需要的是一个领域。

我开始规划一个大型数据库项目,该项目使用J2EE,但我有点不确定是否要用于存储程序或被创建/访问用户等。最近,我一直在工作与休眠,并且可以很诚实,我不会错过编写污物存储程序!

它基本上可以归结为:

存储程序
+可以优化服务器上的(虽然只有查询)
-有可能会超过一千存储程序:添加、删除、更新、getById,等等,对于每一个表中。

被创建
我不会在接下来的几个月编写的参数。添加("@firstNames",客户。getFirstName());...
-会慢于SPs(但最大支持的呼)

你会怎么丰满在我的情况。在这种情况下,我认为这是一个大同小异

谢谢,

约翰

没有正确的解决方案

其他提示

"被创建将慢于SPs(但最大支持的呼)"

这种假设往往是错误的。没有理由SP的特别快。我已经做了一些测量及他们在没有更快的比码以外的数据库。

数据仓库的特征是,通过插入只载荷和长期运行的 SELECT...GROUP BY... 查询。

你不是在写只读事务的处理。你不使用3NF作为一种方式,以防止异常更新关于更新/删除的交易。

因为你正在做的大容量插入,SP肯定会慢于一个大容量加载工具。散装载机往往是多线程,并将占用所有可用的CPU资源。SP是部分数据库和可以只分享有限的DB资源。

因为你多做 SELECT GROUP BY, 一SP不会有太大的帮助在这里。选择声明不受益于被包裹在一个过程。

你不需要他们。他们不帮助。

你可以很容易地基准的散装载和查询证明SP的不是帮助。

棒约翰逊在他的"J2EE设计和发展"写了一个非常明确分析关于奥姆/StoredProcedures.他说,

存储程序只应用于J2EE系统执行的行动将始终使用的数据库很大,他们是否正在实施的数据库或在Java代码交流的一个很大的数据与数据库。

作为你的计划实施一个数据仓库,我认为,储存程序的做法是正确的选择。

我建议使用的元数据生成的脚本用于装载进数据仓库。这可以让你获得绩效好处使用的专门负载工具以及或许从存储程序(如果你使用一个充分古老的数据库)。此外,您可能会最终手编码至少一些SQL。具有一般脚本作为存放处将能让你安排的所有他们以同样的方式,而不必担心改变他们是如何援引当你重写某些产生的代码,以使其更好地运行。

作为用于获取的数据,如果什么你是在建设J2EE是一个报告工具,然后你可以更好地使用被创建.虽然我不是非常熟悉的报告方面的事情,一个益处是我可以看到的是,它会更容易让你的最终用户定制的报告,你没有预料到的提前(虽然你仍然要有一些限制他们怎么可以这样做,他们不取下来的数据库在处理)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top