【发布时间】:2012-11-23 02:42:58
【问题描述】:
我有一个带有 Postgresql 后端的 Web 应用程序。为了简单起见,假设它是一个带有 Web 服务器日志的表(实际上是表和引用的混合)。由于我的用户对该表中的不同数据有不同的需求,我正在考虑实施一个 Web 前端,他们可以在其中按需运行自己的报告(即启动后台作业来为他们运行它......有些查询可能很慢,因为实例子选择同一个表、聚合等)。
是否有实施此类自定义报告工具的最佳实践?
我正在考虑以下方案作为可能的解决方案:
- 用户构建查询并选择他/她想要的字段,该字段被翻译成 SQL 查询
- SQL 将查询结果选择到一个名为“report_randomname479472984”的新表中,该表作为后台作业运行,甚至可能将该表名添加到包含有关报告的一些元信息的报告表中。
- Web 界面将名称以“report_”开头的所有表列为可用报告或查询有关可用报告表的元信息表。
- 当用户显示报告时,网页会构建为 html 表,其中数据库中的每个可用列都是 html 表中的列
这是从 SQL 后端创建动态按需报告的一种不错的方法吗?执行此操作时我需要注意什么(SQL 注入除外)?
有什么方法可以强制元表的完整性,以便每个报告始终存在一行_,并且元表中的所有行实际上都指向一个有效的报告_桌子?
【问题讨论】:
-
对于“元表”,您可以使用
VIEW而不是 postgresqlpg_catalog。比如:select c.relname FROM pg_class c WHERE c.relkind = 'r' AND c.relname LIKE 'report_%'。它将始终保持一致。
标签: postgresql report