寻求有关 Oracle 数据密集型应用程序的建议
Posted
技术标签:
【中文标题】寻求有关 Oracle 数据密集型应用程序的建议【英文标题】:Seeking Advice For Oracle Data-Intensive Application 【发布时间】:2020-05-04 21:50:53 【问题描述】:我正在努力开发一个使用 Oracle 作为数据库后端的应用程序。应用程序将从数据库中的各种表计算几个统计数据。前端很可能是一个 Web 应用程序,这个前端将显示各种图表和计算出的统计数据。现在,我想在数据库中而不是在服务层中执行计算会更有效,因为需要为每个 Web 请求执行所述计算。既然如此,我不确定使用哪种机制。 (例如存储过程、函数、视图)为了说明我的目标,假设我想保留许多学生的学生成绩统计数据。我想要一个网络界面,让我可以逐个学生查看这些统计数据,也可以查看所有数据。一些统计数据取决于所有学生成绩的汇总(例如平均值、最小值、最大值),而一些统计数据仅取决于单个学生。在这种情况下,每次添加或更新记录时,都必须重新计算聚合。所以我推测,如果我有一个特殊的表来保存我需要的所有计算值和一个触发器来在添加/更新记录时重新计算所有内容,那么我需要从 Web 请求点做所有事情-view 是让服务层从这个特殊的表中提取所需的值。我只是不确定这是否是最好的方法,所以我向社区征求任何意见/建议。注意:虽然我使用的是 Oracle,但我对使用 PostgreSQL 或 mysql 持开放态度。
提前致谢
【问题讨论】:
【参考方案1】:您所描述的场景非常适合使用物化视图。它们可以设计为在您的应用程序每次更新源数据时自动(并且增量地)刷新。计算将内置到视图定义中。不需要触发器,并且可能不需要存储过程,除非您的计算涉及多个步骤。查看此处:https://oracle-base.com/articles/misc/materialized-views 和此处:https://medium.com/oracledevs/lightning-fast-sql-with-real-time-materialized-views-12-things-developers-will-love-about-oracle-54bcc9eac358 了解更多信息。
【讨论】:
以上是关于寻求有关 Oracle 数据密集型应用程序的建议的主要内容,如果未能解决你的问题,请参考以下文章