我想构建一个类似于Google Analytics的系统(仅用于内部使用,流量较少,功能较少),主要关注
>通过用户人口统计信息的不同维度实时计算唯一URI访问/ PV,例如,用户代理,操作系统,国家等
>实时计算平均用户会话长度(如果来自同一IP的两个请求之间的差异小于1分钟)
附:我目前正在测试InfiDB.
解决方法:
无论平台如何,都可以构建快速实时分析.我已经使用Microsoft Analysis Services完成了这项工作,但您也可以在其他平台上使用类似的技术.
诀窍是拥有一个可以填充近实时数据的主导分区和为快速查询优化的历史分区(或分区).如果保持前导分区足够小,也可以快速查询.
要对此进行管理,您的ETL处理将填充前导分区,并构建一个补充过程,定期将分区转换为快速查询优化格式.此过程的确切性质因您的平台而异.
在MS Analysis Services上,前导分区作为ROLAP分区完成,该分区直接从表中读取.使用聚合将尾随分区转换为MOLAP.其他OLAP系统的工作方式类似.在Oracle上,您可以在尾随分区上创建位图索引和物化视图分区,以加快查询速度.其他一些系统也有这种类型的功能,虽然我不知道MysqL支持它.
据我所知,我认为最便宜的主流平台是MS Analysis Services,它只能与sql Server捆绑销售,不能单独购买.对于使用2008 R2进行分区,您将需要sql Server企业版,其在英国的每个cpu插槽中运行大约22,000英镑,在池塘的另一侧运行少一点.微软将在2012年发布一个新的“商业智能”版本的sql Server.一旦这个版本在RTM上发布了B.I.该产品的版本确实支持分区立方体,并且比企业版便宜得多.根据您的预算和时间限制,您可以使用它.
您必须解决的问题的另一个方面是更改数据捕获 – 有效识别并将新的或更改的数据行推送到ETL流程中.大多数DBMS供应商的CDC功能仅适用于他们自己的数据库,因此如果您需要CDC解决方案,则可能需要转到第三方应用程序或触发源.
>各种第三方将CDC应用程序迁移到数据库平台.可以在wikipedia entry on the subject.上看到CDC产品列表.请注意,您可能仍然遇到集成问题.例如,IBM Infosphere CDC只能按行而不是按批次触发外部进程,这可能会导致大数据量的效率问题.
>您可以在源表上创建一组触发器,将更改推送到暂存区域.这将要求您具有对源数据库的足够访问权限,因此它可能不是供应商支持的数据库上的选项.
>如果数据来自文件(例如Web服务器日志),则必须编写一个客户端进程来监视文件的尾部以获取新记录.
您很可能最终必须实现轮询数据源的拉入过程.在这种情况下,您必须计算出可容忍的延迟并编写您的过程,以便在检测更改时足够有效,以便可以足够快地运行.有一句古老的谚语,有时在嵌入式系统圈子中发现,效果如下:’你知道他们在开始投票时对可靠性越来越认真’
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。