4

我工作的公司生产一个内容管理系统 (CMS),其中包含用于出版、电子商务、在线打印等的各种附加组件。我们现在正在添加“报告模块”,我需要调查应该采用哪种策略被关注。“报告模块”也称为商业智能或 BI。

该模块应该能够跟踪项目下载、执行的搜索并从中生成各种报告。实际上,搅动什么样的数据并不重要,因为从长远来看,我们可能希望能够推送我们认为需要的任何内容并从中获取报告。

粗略地说,我们有两种选择。

选项 1是基于 Apache Solr 编写解决方案(特别是使用https://issues.apache.org/jira/browse/SOLR-236)。这种方法的优点:

  • 免费/开源/优质
  • 我们在其他地方使用 Solr/Lucene,所以我们非常了解这个领域
  • 由于我们可以获取传入数据(以 XML 格式),通过 XSLT 推送并将其提供给 Solr,因此对索引的内容具有完全的灵活性
  • 如何显示搜索结果的完全灵活性。与上述步骤类似,我们可以自定义 XSLT 搜索模板并以我们认为必要的任何格式显示结果
  • 我们的前端开发人员精通 XSLT,因此为不同的客户安装这种机制应该相对容易
  • Solr 提供对我们来说绝对必要的实时/全文/分面搜索。一个快速原型(基于 Solr,1M 记录)能够在 55 毫秒内提供搜索结果。我们估计的最大记录数约为 10 亿行(这对于典型的 BI 应用程序来说并不算多),如果情况变得更糟,我们可以随时查看 SolrCloud 等。
  • 有些公司使用 Solr 做非常相似的事情(例如,Honeycomb Lexicon)

这种方法的缺点:

  • SOLR-236 可能稳定也可能不稳定,此外,尚不清楚何时/是否将其作为官方发布的一部分发布
  • 我们可能需要编写一些东西才能使某些特定于 BI 的功能正常工作。这听起来有点像重新发明轮子
  • 最大的问题是我们不知道将来可能需要什么(例如与某些 BI 软件集成,导出到 Excel 等)

选项 2是与一些免费或商业的 BI 软件集成。到目前为止,我已经查看了Wabit并将查看QlikView,可能还有其他人。这种方法的优点:

  • 无需重新发明轮子,软件(希望)经过尝试和测试
  • 将节省我们的时间,我们可以花在解决我们擅长的问题上

缺点:

  • 因为我们是一家 Java 商店,而且我们的解决方案是跨平台的,所以我们必须消除市场上的很多选择
  • 我不确定 BI 软件能有多灵活。一些 BI 产品需要时间来查看它们是否可以进行灵活的索引、实时/全文搜索、完全可定制的结果等。
  • 有人告诉我,开源 BI 产品还不够成熟,而商业 BI(SAP 等)成本很高,它们的许可证从数万英镑/美元开始。虽然我本身并不反对商业选择,但它会增加整体价格,很容易变得太大
  • 不确定 BI 处理无模式数据的效果如何

我绝对不是在市场上找到最合适的集成选项的最佳人选(主要是因为缺乏 BI 领域的知识),但是需要快速做出决定。

有没有人遇到过类似的情况,可以建议采取哪条路线,甚至更好 - 就选项#2的可能利弊提供建议?这里最大的问题是我不知道我不知道什么;)

4

3 回答 3

3

我花了一些时间玩QlikViewWabit,不得不说,我很失望。

我曾期望整个 BI 行业实际上都有一些科学,但据我发现这只是一个流行词。这篇 MSDN 文章实际上令人大开眼界。BI 的整个业务包括从规范化的模式(他们称之为OLTP)中获取数据,将其放入不太规范化的模式(OLAP雪花型或星型)中,并为您想要的每个方面创建索引(行业术语这是数据立方体)。剩下的只是一些脚本来获得漂亮的图表。

好的,我知道我在这里过于简单化了。我知道我可能错过了许多不同的方面(漂亮的报告?导出到 Excel?预测?),但从计算机科学的角度来看,除了数据库索引之外,我根本看不到任何东西。

有人告诉我,一些 BI 工具支持压缩。Lucene 也支持这一点。有人告诉我,一些 BI 工具能够将所有索引保存在内存中。为此,有一个 Lucene 缓存。

说到这两个候选者(Wabit 和 QlikView)——第一个是不成熟的(当我试图超出他们演示中的建议时,我遇到了几十个例外)而另一个只能在 Windows 下工作(不是很好,但是我可以忍受)并且集成可能需要我编写一些 VBScript(糟糕!)。我不得不在 QlikView 论坛上花费几个小时,只是为了让一个简单的日期范围控制正常工作,但失败了,因为我的个人版不支持他们网站上提供的可下载演示项目。不要误会我的意思,它们都是构建它们的好工具,但我根本看不到与它们集成的任何意义,因为我不会获得太多收益。

为了解决 Solr 的(有争议的)不成熟问题,我将定义一个抽象 API,以便在出现任何问题时将所有数据移动到支持全文查询的数据库中。如果情况变得更糟,如果需要,我总是可以在 Solr/Lucene 之上编写东西。

于 2010-12-02T16:27:49.210 回答
1

首先,您应该明确报告应该显示的内容。您需要哪种报告功能?您想要哪种输出格式?您想在浏览器 (HTML) 或 PDF 或交互式查看器 (Java/Flash) 中显示它。数据(数据库、Java 等)在哪里?您需要临时报告还是只需要一些硬编码报告?这只是一些问题。

没有这个问题的答案很难给出真正的建议,但我的一般建议是i-net Clear Reports(以前称为 i-net Crystal-Clear)。它是一个 Java 工具。它是一种商业工具,但成本比 SAP 和 co 低。

于 2010-12-04T23:22:53.210 回答
1

如果您确实处于不确定自己不知道什么的情况,我认为最好在深入研究自己的实现之前探索一个开源工具并评估其有用性。使用开源解决方案很可能会帮助您进一步明确自己的理解和所需的功能。我以前曾使用名为Pentaho
的开源解决方案工作过。我真的觉得通过学习使用 Pentaho 的功能来完成我的工作,我理解了很多。当然,就像使用大多数开源解决方案一样,Pentaho 一开始似乎有点吓人,但我设法在一个月的时间内掌握了它。我们还使用了Kettle ETL工具和Mondrian立方体——我认为现在大多数严肃的 BI 工具都建立在它之上。
早些时候,所有这些组件都是独立的,但我相信 Pentaho 拥有所有这些项目的所有权。

但是,一旦您对自己需要什么和不需要什么充满信心,我建议您在 mondrian 实现之上构建一些您自己的基本报告工具。定制一个复杂的开源工具确实是一个大问题。此外,还有一些许可证需要警惕。我相信 Pentaho 是 GPL,尽管你可能想检查一下。

于 2010-11-30T18:56:38.467 回答