我正在为我们的客户创建一个以mysql为中心的网站,他们想要对他们的数据进行自定义报告(通过http),比如在PHPMyAdmin中选择只读访问(*)。也许就像报道Pentaho一样,虽然我从未使用过它。
我的老板说Sphinx就是答案,但通过阅读Sphinx文档,我认为它不会让用户驱动的报告变得更容易。 Sphinx是否有助于用户驱动的报告?如果是这样,他们称之为什么?
(*)系统有大约25个可能用于报告的表,其中包含2到50个字段。报告可能每个报告最多可能需要5个联接。
更新:我发现http://code.google.com/p/sphinx-report/所以我猜Sphinx本身并没有这样做。
答案 0 :(得分:1)
我只能回答SphinxSEARCH - 对其他狮身人面像真的不太了解。
它本身并不包含特别用于编写报告的功能。它是一个通用的搜索后端。就像mysql没有特别为报告设计,但它可以这样使用。
一般认为sphinx为数据库表提供了一个非常灵活,快速且可扩展的“索引”。几乎就像在mysql中创建物化视图一样。
因为您可以非常仔细地考虑要在此索引中包含哪些数据。并且索引可以“非规范化”以包含所有数据(如果需要,可以通过复杂连接) - 然后您可以针对此索引运行非常快速的查询。
Sphinx还支持“GROUP BY”,这使得它对创建报告非常有用 - 并且因为属性数据完全保存在内存中,所以它通常非常快。
基本上,sphinx非常适合为“动态”和“交互式”报告系统提供后端。需要速度的地方 - 特别是如果结合允许用户过滤报告(通过关键字) - 那就是sphinx闪耀的地方。
由于设计此索引所需的前期工作,它不太适合“灵活”报告。在构建索引时,可能会有许多相互比较,因此可能会限制报告的可能性。 (至少没有创建大量不同的索引)
简短版本:构建系统的大量前期工作,以便快速查询。
Sphinx真的不会做任何mysql无法做到的事情。但是使用sphinx作为系统的一部分将允许性能得到改善(通过纯粹的mysql解决方案)。