nosql适合OLAP吗 ?

开发运营者 2016-08-25 09:50:26
求指教:nosql适合OLAP吗 ?谢谢!
...全文
1416 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
dingybin 2016-09-12
  • 打赏
  • 举报
回复
使用OLAP有三个过程。一是定义一个立方体(定义CUBE),然后填充数据(打CUBE),最后查询数据(使用MDX或其他语言)。 定义立方体的时候可以设计一个XML的配置文件,通过这个文件来定义一个CUBE。需要的要素包括CUBE的名称,存储的HBASE的表名,维度信息,度量信息等,完善点的话可能还有权限信息和其他管理性内容。 然后就是打CUBE了。需要从关系数据库中将包含维度和度量的笛卡尔宽表通过SQOOP软件或者其他数据库提供的接口导入到HDFS上,并通过PIG或者HIVE来完成立方体的棱的计算。原始信息和计算后的信息填充到HBASE的表中供访问。当然另外一种可能的方法是计算不要放在Hadoop中,而是在数据库中做好,具体那种方式更加高效低成本也许需要放到实际的项目中才知道,但是我直观上认为在Hadoop上做更好,因为简单嘛。 最后是查询CUBE了。通过一个解释器将前台发来的MDX或其他查询语言进行翻译,然后通过API去HBASE数据库中取得对应的结果,最后返回。这个方式看起来简单,其实还是有一些需要考虑的。那就是是否所有的查询在之前都预先计算过了,如果是,那直接取得那一个单元格即可,如果没有,还需要将对应的维度的数据全部取出来,重新预计算一次,再返回。这个时候或许可以考虑将计算后的结果写会HBASE,供下次查询的时候使用。其实Mondrian的方法类似于此。到底哪些要预计算,哪些不要,则取决于需求,可以在设计立方体的时候制定,或者系统自动调整。 以最简单的两个维度一个度量来举例。具体的打CUBE的流程可能如下: 1、在事实表中,可能有如下数据: 时间 地域 收入 2009 北京 1W 2009 上海 2W 2010 北京 3W 2010 上海 4W 2、这些数据被按照代码的方式抽取到HDFS上,然后进行预先计算,第一层预计算添加了如下行 2009 ALL 3W 2010 ALL 7W ALL 北京 4W ALL 上海 6W 3、第二层预计算添加了如下行 ALL ALL 10W 4、由于只有两个维度,预计算结束,然后原始数据和两次预先计算后的数据一并录入到HBASE中,KEY为时间+地区,VALUE为收入。 在查询的时候按照进行返回,没有在WHERE条件中的维度用ALL代替就可以了,很简单的不是。如果没有预计算的,那么就需要返回所有满足条件的度量,然后自己聚合起来。 通过这样的方式将需要大量聚合的查询通过预计算的方式转移成了几乎单条的查询,可以充分利用HBASE低时延和高吞吐的能力。而预计算本省则通过Hadoop的MapReduce来实现高效处理,自己实现MR如果困难的话,也可以用PIG嘛,那个简单,搞个脚本就行,上面指出的一个开源软件似乎就是使用的PIG脚本生成器然后解释执行的。 只不过这是最简单的方法而已,如果需要考虑动态维度的话,恐怕是将共性维度作为KEY,然后再用一个COLUMN FAMILY来存动态的维度,对于动态维度的预计算也需要考虑,因为查询语言的翻译可能会根据CUBE的定义而变得复杂一些。具体的我还没有进行过仔细的思考。 最后在设计上,有一个细节需要考虑,我们可能会面临很多的度量,我们系统中的指标可能有成百上千。这些指标可能本身就是“稀疏”的。所以我们应该设计一个指标维度的维度,而仅保留两个度量即可,一可以累加的,二不可累加的。也就是增加一个KPI_NAME的维度,其中的值就是KPI_ID。这样可能更加简单一些。 通过上述的方法,在NOSQL数据库上可以构建一个提供指标库访问服务的OLAP系统。既可以直接为指标库服务,也可以提供标准的MDX服务,为原来那些前台软件的多维分析服务。
1 序 2 思想篇 2 CAP 2 最终一致性 2 变体 2 BASE 2 其他 2 I/O的五分钟法则 2 不要删除数据 2 RAM是硬盘,硬盘是磁带 2 Amdahl定律和Gustafson定律 2 万兆以太网 3 手段篇 3 一致性哈希 3 亚马逊的现状 3 算法的选择 3 Quorum NRW 3 Vector clock 3 Virtual node 3 gossip 3 Gossip (State Transfer Model) 3 Gossip (Operation Transfer Model) 3 Merkle tree 3 Paxos 3 背景 3 DHT 3 Map Reduce Execution 3 Handling Deletes 3 存储实现 3 节点变化 3 列存 3 描述 3 特点 4 软件篇 4 亚数据库 4 MemCached 4 特点 4 内存分配 4 缓存策略 4 缓存数据库查询 4 数据冗余与故障预防 4 Memcached客户端(mc) 4 缓存式的Web应用程序架构 4 性能测试 4 dbcached 4 Memcached 和 dbcached 在功能上一样吗? 4 列存系列 4 Hadoop之Hbase 4 耶鲁大学之HadoopDB 4 GreenPlum 4 FaceBook之Cassandra 4 Cassandra特点 4 Keyspace 4 Column family(CF) 4 Key 4 Column 4 Super column 4 Sorting 4 存储 4 API 4 Google之BigTable 4 Yahoo之PNUTS 4 特点 4 PNUTS实现 4 Record-level mastering 记录级别主节点 4 PNUTS的结构 4 Tablets寻址与切分 4 Write调用示意图 4 PNUTS感悟 4 微软之SQL数据服务 4 非云服务竞争者 4 文档存储 4 CouchDB 4 特性 4 Riak 4 MongoDB 4 Terrastore 4 ThruDB 4 Key Value / Tuple 存储 4 Amazon之SimpleDB 4 Chordless 4 Redis 4 Scalaris 4 Tokyo cabinet / Tyrant 4 CT.M 4 Scalien 4 Berkley DB 4 MemcacheDB 4 Mnesia 4 LightCloud 4 HamsterDB 4 Flare 4 最终一致性Key Value存储 4 Amazon之Dynamo 4 功能特色 4 架构特色 4 BeansDB 4 简介 4 更新 4 特性 4 性能 4 Nuclear 4 两个设计上的Tips 4 Voldemort 4 Dynomite 4 Kai 4 未分类 4 Skynet 4 Drizzle 4 比较 4 可扩展性 4 数据和查询模型 4 持久化设计 5 应用篇 5 eBay 架构经验 5 淘宝架构经验 5 Flickr架构经验 5 Twitter运维经验 5 运维经验 5 Metrics 5 配置管理 5 Darkmode 5 进程管理 5 硬件 5 代码协同经验 5 Review制度 5 部署管理 5 团队沟通 5 Cache 5 云计算架构 5 反模式 5 单点失败(Single Point of Failure) 5 同步调用 5 不具备回滚能力 5 不记录日志 5 无切分的数据库 5 无切分的应用 5 将伸缩性依赖于第三方厂商 5 OLAP 5 OLAP报表产品最大的难点在哪里? 5 NOSQL们背后的共有原则 5 假设失效是必然发生的 5 对数据进行分区 5 保存同一数据的多个副本 5 动态伸缩 5 查询支持 5 使用 Map/Reduce 处理汇聚 5 基于磁盘的和内存中的实现 5 仅仅是炒作? 6 附 6 感谢 6 版本志 6 引用

742

社区成员

发帖
与我相关
我的任务
社区描述
该论坛主要探讨Linux系统在IBM Power平台的安装、部署、应用开发等话题,并为网友们提供自由交流的平台。
社区管理员
  • Power Linux社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧