OLAP 多维数据集 - PHP 和 MongoDB
Posted
技术标签:
【中文标题】OLAP 多维数据集 - PHP 和 MongoDB【英文标题】:OLAP cube - PHP and MongoDB 【发布时间】:2012-03-23 10:06:50 【问题描述】:我需要创建一个分析系统。我已经使用 MognoDB 和 php 构建了系统,但没有使用 OLAP。现在我的查询确实是我能得到的最好的,但是系统真的很慢,因为没有立方体。加载过去 7 天的报告可能需要一分钟。我真的需要立方体的选项 - 切片和骰子。
那么我的解决方案是什么?是否有一个使用 MongoDB 构建的好的多维数据集系统,并且可以通过 PHP 插入和查看数据?也许 MongoDB 对我没有好处?我应该使用另一个数据库并从 0 启动所有系统吗?有哪些使用 PHP 的 OLAP 解决方案?
编辑:更多信息—— 嗯,这个系统就像谷歌分析。需要能够知道每天有多少观看次数,需要能够仅从指定的流量来源和国家/地区报告。该系统每天需要处理 1,000,000 个独特的视图。 但不仅是观看次数,还需要能够看到有多少用户返回,每个用户的平均时间是多少等。
谢谢。
【问题讨论】:
您没有说任何关于数据类型、记录数量、主数据、数据来源、报告要求可能是什么、您使用什么聚合。我们如何在不被猜测的情况下回答这个问题?您需要提供更多信息,我非常怀疑答案是否只是立方体 + olap 引擎。 谢谢。对不起,补充。你能多解释一下这个 cube + olap 引擎吗?我怎样才能使用 PHP 做到这一点?我的mongodb呢?我应该使用另一个数据库吗? 我不确定您对 PHP 和 mongoDB 的痴迷程度。您需要的所有事情都可以在任何数据库中完成。听起来您要么没有正确加载数据,要么您的 SQL 不够好。请提供您认为表现不佳的代码、数据库结构等。 让我们在这里稍微集中一下:您有 1 分钟的加载时间来分析 700 万条记录。我不知道一个简单的 mysql 设置是否可以做得更好,但我相信可以在 4 到 6 小时 + 安装 mysql 的时间内编写一个针对该用例的简单测试。你内存不足吗? RAM 可能是 MySQL 和 Mongo 的问题。您是否考虑过缓存统计数据按天/按小时/按访问? (并将 7 天的统计数据基于这些子统计数据?) @Eli_Rozen 你明白了吗? 【参考方案1】:MongoDB 不是为 OLAP 多维数据集类型的应用程序构建的。我可以想到两种方法:
1) 提前确定您需要执行哪些查询,并提前以最佳格式存储您的数据。例如,如果您想知道每个国家/地区每天的访问量,那么在每次访问发生时执行以下操作:
db.visits.update('country':country, 'day':current_day(), $inc:visits:1)
对每个指标重复。从您的应用程序到分析数据库的即发即弃更新将增加向访问者提供请求的最小开销。那么您的查询将在很大程度上被预先计算。
2) 试试 JasperSoft 的 MongoDB 后端。
【讨论】:
【参考方案2】:为了更新一些回复,icCube 现在提供对MongoDB 的访问权限。您应该能够设置一些 MongoDB 查询来创建 icCube 将用于报告和分析的表。
【讨论】:
以上是关于OLAP 多维数据集 - PHP 和 MongoDB的主要内容,如果未能解决你的问题,请参考以下文章