【问题标题】:schema-less data warehouse and reporting无模式数据仓库和报告
【发布时间】:2010-11-06 17:09:25
【问题描述】:

我们的系统会根据电话/网络请求/短信/电子邮件等生成许多事件,这些事件中的每一个都需要能够存储并可供报告(用于 MI/BI 等)开,这些事件中的每一个都有许多变量,不适合任何一个特定的方案。

事件文档的结构是一个键值对列表(cdr=1&name=Paul&duration=123&postcode=l21)。目前我们有一个 SQL Server 系统,它使用动态生成的稀疏列来存储我们的(平面)文档,其中我们有针对数据运行的报告,出于许多不同的原因,我正在寻找其他解决方案。

我正在寻找一个系统(开放式或封闭式)的建议,该系统允许我们将这些事件推送到(无论架构如何)并在其之上提供报告和分析。

我见过 Pentaho 和 Jasper,但大多数似乎都连接到系统以从中获取数据然后报告它。我真的只是希望能够将文档推入并使其可供报告。

尽管我很喜欢 CouchDB,但我正在寻找一个允许无模式提交数据并在其之上进行报告的系统(很像 Pentaho、Jasper、SQL Reporting/Analytics Server 等)

【问题讨论】:

  • 这些系统是无模式的,还是只是模式尚未确定?架构是否经常更改?
  • 模式完全由客户端、应用程序和我们使用的调用脚本定义。也就是说,我们进行的调用很有可能包含非常不同的列。很容易看出,我们将在通话结束时进行 1000 多种不同的测量。
  • 我想我以前没有处理过这类问题。你实际上有多个模式。即使,为了快速存储数据,您有一个简单的键/值数据库,但要进行任何报告,每个客户端都必须有一个架构——我想每个客户端都有不同的架构!
  • 取决于客户可能正在运行的活动以及他们可能在任何时候运行的“应用程序”有一个架构,但这个架构可能只存在 20 分钟,然后客户更改它基于根据他们的要求。
  • 我不会说得这么粗暴(我已经超过了当天的配额)。然而,这听起来很准确:不充分的分析满足了过多的要求。向他们发送电子表格。

标签: reporting business-intelligence schemaless


【解决方案1】:

我认为没有任何 DBMS 可以满足您的需求并允许使用现成的报告工具。低延迟分析系统的构建并不快速且容易。非结构化数据的低延迟非常有野心。

不过,您将不得不将数据保存在某种数据库中。

我认为您可能需要仔细查看您的问题域。您是在尝试运行低延迟分析报告,还是在某些事件发生时提示业务内部采取某些行动的运营报告?对于低延迟系统,您需要对什么构成运营报告和什么构成分析非常无情。

编辑: 除非企业准备好付款,否则不鼓励“可能两者兼而有之”的心态。投资银行和对冲基金斥巨资购买超级计算机来进行“实时分析”。这不是一项微不足道的工作。当您尝试构建这样一个系统并构建它以延长正常运行时间时,它就更不简单了。

即使是在付费 SMS 服务和 .com 应用等应用上,当您对问题进行实际范围和成本分析时,企业也经常会退缩。我不能这么说。对“实时”要求真的非常无情

如果业务真的非常需要实时分析,那么您可以创建混合 OLAP 架构,在该架构中,您可以在事实表上拥有一个领先的分区。在这种架构中,事实表或多维数据集完全为历史数据编制索引,但有一个未编制索引的小型前导分区,因此插入数据的速度相对较快。

分析查询将对相对较小的前导数据分区进行表扫描,并在其他分区上使用更有效的方法。这为您提供了低延迟数据以及对历史数据运行高效分析查询的能力。

每晚运行一个进程,滚动到新的前导分区并合并/索引先前的前导分区。

当您有诸如位图索引(在数据库上)或物化聚合(在多维数据集上)之类的插入时开销很大的项目时,这很有效。前导分区相对较小且表扫描成本低,但对涓流插入很有效。翻转过程逐渐将此领先分区整合到索引历史数据中,从而可以有效地查询它以获取报告。

编辑 2: 常用字段可能是在事实表上设置为维度的候选字段(例如调用者、时间)。不太常见的领域是(大概)编码。对于一个有效的模式,您可以将可选编码移动到一个或多个'junk' dimensions.

简而言之,垃圾维度是代表两个或多个代码的每个现有组合的维度。表中的一行与单个系统实体无关,而是与编码的唯一组合有关。维度表上的每一行对应于原始数据中出现的不同组合。

为了获得任何分析值,您仍然需要组织数据,以便垃圾维度中的列包含始终有意义的内容。这可以追溯到一些要求工作,以确保来自源数据的映射有意义。您可以使用诸如零长度字符串 ('') 之类的占位符值来处理并非总是记录的项目,这可能比空值更好。

【讨论】:

  • 可能两者兼有——目前,需要低延迟(业务使用实时,但我们知道它不是)分析和报告。然而,在操作上,我们可以在经常被截断的“其他”数据库中对最近的操作做出决定。不幸的是,可用于运营决策的相同数据也需要通过分析提供给我们的客户。
  • 目前,我认为这将是两个阶段。专用于存储数据的数据库(本质上是呼叫详细记录)以及报告/分析系统。
  • 好的,很酷,感谢您的编辑。如果我现在可以忽略实时方面。我们有一个案例,事实和维度可以是“动态的”,因为需要一个更好的词——也就是说没有固定的模式(除了一些公共变量),所以我正在寻找的是一个可以处理的东西这。目前,我们有一个单独的呼叫详细记录表,每一行代表一个呼叫,列代表该呼叫中设置的变量(其中的列可以动态创建,99% 的时间可能不会填充)跨度>
  • 查看第二个编辑以讨论带有一些扇出的垃圾尺寸。这可能是维护大量编码字段的最佳方式。
【解决方案2】:

现在我想我看到了基本要求。这是一个带有自定义调查的在线或电话调查应用程序。处理此要求的方法是将分析转移到客户端。没有任何在线工具能让您在 20 分钟内完成架构更改。

我以前见过这种类型的要求,归结为客户想要对特定调查进行一些统计。如果您可以根据他们特定调查中的字段(即带有命名标题列)为他们提供 CSV,他们可以将其导入 excel 并从那里进行透视。

应该通过可配置的在线调查系统很容易实现,因为您应该能够阅读调查配置。客户会很高兴他们可以在 Excel 中使用他们的数字,因为他们不必担心第三方工具。任何称职的销售人员都应该能够将其作为一件好事转给客户。您可以使用类似于 “您可以使用熟悉的工具(如 Excel)来分析您的数字”。(如果他们倾向于使用 SAS)

将导出器包装在网页中,以便他们可以自行下载并获取最新数据。

请注意,如果您在每次调查中拥有超过 65535 名受访者的较大数据量,则轮子将会脱落,因为这不适合电子表格标签。 Excel 2007 将此限制增加到 1048575。但是,具有这种响应量的调查可能是少数。一种可能的解决方法是提供一种方法来获取数据的随机样本,这些样本足够小,可以在 Excel 中使用。

编辑:我认为没有其他解决方案对这种类型的应用程序足够灵活。您已经描述了调查统计数据的圣杯。

我仍然认为基本策略是给他们一个数据转储。您可以通过使用 OLE 自动化来构建数据透视表并提供部分消化的内容,从而在一定程度上对其进行预打包。 Excel 中用于数据透视表的 API 有点复杂,但这当然是可行的。我过去曾编写过以编程方式创建数据透视表的 VBA 代码,因此我可以根据个人经验说这是可行的。

如果您想计算和报告(比如说)响应时间的分布,因为您必须构建显示,那么问题会变得更加复杂。如有必要,您可以通过编程方式构建数据透视图,但以这种方式通过 excel 自动构建报表将是一项相当大的工作。

您可能会从 R (www.r-project.org) 获得一些好处,因为您可以构建一个框架,让您可以使用 R 代码导入数据并生成定制报告。这不是最终用户工具,但您的客户群听起来他们无论如何都想要预制报告。

【讨论】:

  • 它很接近,它是一个 IVR 系统,可以运行任何脚本,而不仅仅是调查。例如,一个基本脚本可以从调用中测量多达 500 个变量,包括响应问题提示的时间、问题的结果等,在基本层面上是的,我们已经提供了一个 CSV 结果表,但带有硬编码的列(这真的难以管理),实体值模式不是高性能的,所以我们打折了——这就是我们选择 SQL Server 动态列(通过稀疏列)的原因,我正在尝试确定是否有其他解决方案 :)跨度>
  • 另外一点是(对我们的客户来说,这听起来很粗鲁)是他们要么无法分析我们已经提供的数据,我们必须以汇总的形式为他们管理报告;或者他们根本不想操作我们已经提供的 CSV 导出。
  • (以下内容几乎超出了我当天的直率配额):如果他们无法分析他们的数据,那么他们的交易是什么?您是否提供了他们似乎没有的领域专业知识?你知道他们的剧本是关于什么的吗?真的,在某些时候,有人必须弄清楚他们想要什么以及这意味着什么。如果这种情况不断变化,那么可能还需要一些流程更改,但 GIGO。
  • John,我想要表达的主要观点是:他们的系统是否适合存储和分析无模式数据?也就是说,架构不固定。我见过的大多数分析系统似乎都有一个针对大多数缓慢变化的系统的非常特定的模式。我并不是要人们质疑在通话中选择哪些数据并提供给我们的客户群。如果我们的客户不这样做,我们将使用这些数据,我们确实提供领域专业知识,而且客户群的广度意味着无法为所有客户提供大量数据,许多客户的调用脚本大不相同。
  • 大概该记录具有各种事件的时间戳或(如您所说)对某些问题的响应时间-如果是这样,它可能可以转换为相关的时间序列以及任何静态变量都是必要的.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多