淘宝数据魔方技术架构解析

131 views
Skip to first unread message

Q

unread,
Aug 3, 2011, 11:13:28 PM8/3/11
to ttnn
 
 

Sent to you by Q via Google Reader:

 
 


(本文首发于《程序员》8月刊,略有调整。你可通过pengchun#taobao.com联系到作者。)


淘宝网拥有国内最具商业价值的海量数据。截至当前,每天有超过30亿的店铺、商品浏览记录,10亿在线商品数,上千万的成交、收藏和评价数据。如何从这些数据中挖掘出真正的商业价值,进而帮助淘宝、商家进行企业的数据化运营,帮助消费者进行理性的购物决策,是淘宝数据平台与产品部的使命。

为此,我们进行了一系列数据产品的研发,比如为大家所熟知的量子统计、数据魔方和淘宝指数等。尽管从业务层面来讲,数据产品的研发难度并不高;但在“海量”的限定下,数据产品的计算、存储和检索难度陡然上升。本文将以数据魔方为例,向大家介绍淘宝在海量数据产品技术架构方面的探索。

淘宝海量数据产品技术架构

数据产品的一个最大特点是数据的非实时写入,正因为如此,我们可以认为,在一定的时间段内,整个系统的数据是只读的。这为我们设计缓存奠定了非常重要的基础。

图1 淘宝海量数据产品技术架构

按照数据的流向来划分,我们把淘宝数据产品的技术架构分为五层(如图1所示),分别是数据源、计算层、存储层、查询层和产品层。位于架构顶端的是我们的数据来源层,这里有淘宝主站的用户、店铺、商品和交易等数据库,还有用户的浏览、搜索等行为日志等。这一系列的数据是数据产品最原始的生命力所在。

在数据源层实时产生的数据,通过淘宝自主研发的数据传输组件DataX、DbSync和Timetunnel准实时地传输到一个有1500个节点的Hadoop集群上,这个集群我们称之为“云梯”,是计算层的主要组成部分。在“云梯”上,我们每天有大约40000个作业对1.5PB的原始数据按照产品需求进行不同的MapReduce计算。这一计算过程通常都能在凌晨两点之前完成。相对于前端产品看到的数据,这里的计算结果很可能是一个处于中间状态的结果,这往往是在数据冗余与前端计算之间做了适当平衡的结果。

不得不提的是,一些对实效性要求很高的数据,例如针对搜索词的统计数据,我们希望能尽快推送到数据产品前端。这种需求再采用“云梯”来计算效率将是比较低的,为此我们做了流式数据的实时计算平台,称之为“银河”。“银河”也是一个分布式系统,它接收来自TimeTunnel的实时消息,在内存中做实时计算,并把计算结果在尽可能短的时间内刷新到NoSQL存储设备中,供前端产品调用。

容易理解,“云梯”或者“银河”并不适合直接向产品提供实时的数据查询服务。这是因为,对于“云梯”来说,它的定位只是做离线计算的,无法支持较高的性能和并发需求;而对于“银河”而言,尽管所有的代码都掌握在我们手中,但要完整地将数据接收、实时计算、存储和查询等功能集成在一个分布式系统中,避免不了分层,最终仍然落到了目前的架构上。

为此,我们针对前端产品设计了专门的存储层。在这一层,我们有基于MySQL的分布式关系型数据库集群MyFOX和基于HBase的NoSQL存储集群Prom,在后面的文字中,我将重点介绍这两个集群的实现原理。除此之外,其他第三方的模块也被我们纳入存储层的范畴。

存储层异构模块的增多,对前端产品的使用带来了挑战。为此,我们设计了通用的数据中间层——glider——来屏蔽这个影响。glider以HTTP协议对外提供restful方式的接口。数据产品可以通过一个唯一的URL获取到它想要的数据。

以上是淘宝海量数据产品在技术架构方面的一个概括性的介绍,接下来我将重点从四个方面阐述数据魔方设计上的特点。

关系型数据库仍然是王道

关系型数据库(RDBMS)自20世纪70年代提出以来,在工业生产中得到了广泛的使用。经过三十多年的长足发展,诞生了一批优秀的数据库软件,例如Oracle、MySQL、DB2、Sybase和SQL Server等。

图2 MyFOX中的数据增长曲线

尽管相对于非关系型数据库而言,关系型数据库在分区容忍性(Tolerance to Network Partitions)方面存在劣势,但由于它强大的语义表达能力以及数据之间的关系表达能力,在数据产品中仍然占据着不可替代的作用。

淘宝数据产品选择MySQL的MyISAM引擎作为底层的数据存储引擎。在此基础上,为了应对海量数据,我们设计了分布式MySQL集群的查询代理层——MyFOX,使得分区对前端应用透明。

图3 MyFOX的数据查询过程

目前,存储在MyFOX中的统计结果数据已经达到10TB,占据着数据魔方总数据量的95%以上,并且正在以每天超过6亿的增量增长着(如图2所示)。这些数据被我们近似均匀地分布到20个MySQL节点上,在查询时,经由MyFOX透明地对外服务(如图3所示)。

图4 MyFOX节点结构

值得一提的是,在MyFOX现有的20个节点中,并不是所有节点都是“平等”的。一般而言,数据产品的用户更多地只关心“最近几天”的数据,越早的数据,越容易被冷落。为此,出于硬件成本考虑,我们在这20个节点中分出了“热节点”和“冷节点”(如图4所示)。

顾名思义,“热节点”存放最新的、被访问频率较高的数据。对于这部分数据,我们希望能给用户提供尽可能快的查询速度,所以在硬盘方面,我们选择了每分钟15000转的SAS硬盘,按照一个节点两台机器来计算,单位数据的存储成本约为4.5W/TB。相对应地,“冷数据”我们选择了每分钟7500转的SATA硬盘,单碟上能够存放更多的数据,存储成本约为1.6W/TB。

将冷热数据进行分离的另外一个好处是可以有效降低内存磁盘比。从图4可以看出,“热节点”上单机只有24GB内存,而磁盘装满大约有1.8TB(300 * 12 * 0.5 / 1024),内存磁盘比约为4:300,远远低于MySQL服务器的一个合理值。内存磁盘比过低导致的后果是,总有一天,即使所有内存用完也存不下数据的索引了——这个时候,大量的查询请求都需要从磁盘中读取索引,效率大打折扣。

NoSQL是SQL的有益补充

在MyFOX出现之后,一切都看起来那么完美,开发人员甚至不会意识到MyFOX的存在,一条不用任何特殊修饰的SQL语句就可以满足需求。这个状态持续了很长一段时间,直到有一天,我们碰到了传统的关系型数据库无法解决的问题——全属性选择器(如图5所示)。

图5 全属性选择器

这是一个非常典型的例子。为了说明问题,我们仍然以关系型数据库的思路来描述。对于笔记本电脑这个类目,用户某一次查询所选择的过滤条件可能包括“笔记本尺寸”、“笔记本定位”、“硬盘容量”等一系列属性(字段),并且在每个可能用在过滤条件的属性上,属性值的分布是极不均匀的。在图5中我们可以看到,笔记本电脑的尺寸这一属性有着10个枚举值,而“蓝牙功能”这个属性值是个布尔值,数据的筛选性非常差。

在用户所选择的过滤条件不确定的情况下,解决全属性问题的思路有两个:一个是穷举所有可能的过滤条件组合,在“云梯”上进行预先计算,存入数据库供查询;另一个是存储原始数据,在用户查询时根据过滤条件筛选出相应的记录进行现场计算。很明显,由于过滤条件的排列组合几乎是无法穷举的,第一种方案在现实中是不可取的;而第二种方案中,原始数据存储在什么地方?如果仍然用关系型数据库,那么你打算怎样为这个表建立索引?

这一系列问题把我们引到了“创建定制化的存储、现场计算并提供查询服务的引擎”的思路上来,这就是Prometheus(如图6所示)。

图6 Prom的存储结构

从图6可以看出,我们选择了HBase作为Prom的底层存储引擎。之所以选择HBase,主要是因为它是建立在HDFS之上的,并且对于MapReduce有良好的编程接口。尽管Prom是一个通用的、解决共性问题的服务框架,但在这里,我们仍然以全属性选择为例,来说明Prom的工作原理。这里的原始数据是前一天在淘宝上的交易明细,在HBase集群中,我们以属性对(属性与属性值的组合)作为row-key进行存储。而row-key对应的值,我们设计了两个column-family,即存放交易ID列表的index字段和原始交易明细的data字段。在存储的时候,我们有意识地让每个字段中的每一个元素都是定长的,这是为了支持通过偏移量快速地找到相应记录,避免复杂的查找算法和磁盘的大量随机读取请求。

图7 Prom查询过程

图7用一个典型的例子描述的Prom在提供查询服务时的工作原理,限于篇幅,这里不做详细描述。值得一提的是,Prom支持的计算并不仅限于求和SUM运算,统计意义上的常用计算都是支持的。在现场计算方面,我们对Hbase进行了扩展,Prom要求每个节点返回的数据是已经经过“本地计算”的局部最优解,最终的全局最优解只是各个节点返回的局部最优解的一个简单汇总。很显然,这样的设计思路是要充分利用各个节点的并行计算能力,并且避免大量明细数据的网络传输开销。

用中间层隔离前后端

上文提到过,MyFOX和Prom为数据产品的不同需求提供了数据存储和底层查询的解决方案,但随之而来的问题是,各种异构的存储模块给前端产品的使用带来了很大的挑战。并且,前端产品的一个请求所需要的数据往往不可能只从一个模块获取。

举个例子,我们要在数据魔方中看昨天做热销的商品,首先从MyFOX中拿到一个热销排行榜的数据,但这里的“商品”只是一个ID,并没有ID所对应的商品描述、图片等数据。这个时候我们要从淘宝主站提供的接口中去获取这些数据,然后一一对应到热销排行榜中,最终呈现给用户。

图8 glider的技术架构

有经验的读者一定可以想到,从本质上来讲,这就是广义上的异构“表”之间的JOIN操作。那么,谁来负责这个事情呢?很容易想到,在存储层与前端产品之间增加一个中间层,它负责各个异构“表”之间的数据JOIN和UNION等计算,并且隔离前端产品和后端存储,提供统一的数据查询服务。这个中间层就是glider(如图8所示)。

缓存是系统化的工程

除了起到隔离前后端以及异构“表”之间的数据整合的作用之外,glider的另外一个不容忽视的作用便是缓存管理。上文提到过,在特定的时间段内,我们认为数据产品中的数据是只读的,这是利用缓存来提高性能的理论基础。

在图8中我们看到,glider中存在两层缓存,分别是基于各个异构“表”(datasource)的二级缓存和整合之后基于独立请求的一级缓存。除此之外,各个异构“表”内部可能还存在自己的缓存机制。细心的读者一定注意到了图3中MyFOX的缓存设计,我们没有选择对汇总计算后的最终结果进行缓存,而是针对每个分片进行缓存,其目的在于提高缓存的命中率,并且降低数据的冗余度。

大量使用缓存的最大问题就是数据一致性问题。如何保证底层数据的变化在尽可能短的时间内体现给最终用户呢?这一定是一个系统化的工程,尤其对于分层较多的系统来说。

图9 缓存控制体系

图9向我们展示了数据魔方在缓存控制方面的设计思路。用户的请求中一定是带了缓存控制的“命令”的,这包括URL中的query string,和HTTP头中的“If-None-Match”信息。并且,这个缓存控制“命令”一定会经过层层传递,最终传递到底层存储的异构“表”模块。各异构“表”除了返回各自的数据之外,还会返回各自的数据缓存过期时间(ttl),而glider最终输出的过期时间是各个异构“表”过期时间的最小值。这一过期时间也一定是从底层存储层层传递,最终通过HTTP头返回给用户浏览器的。

缓存系统不得不考虑的另一个问题是缓存穿透与失效时的雪崩效应。缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个存在的数据每次请求都要到存储层去查询,失去了缓存的意义。

有很多种方法可以有效地解决缓存穿透问题,最常见的则是采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被这个bitmap拦截掉,从而避免了对底层存储系统的查询压力。在数据魔方里,我们采用了一个更为简单粗暴的方法,如果一个查询返回的数据为空(不管是数据不存在,还是系统故障),我们仍然把这个空结果进行缓存,但它的过期时间会很短,最长不超过五分钟。

缓存失效时的雪崩效应对底层系统的冲击非常可怕。遗憾的是,这个问题目前并没有很完美的解决方案。大多数系统设计者考虑用加锁或者队列的方式保证缓存的单线程(进程)写,从而避免失效时大量的并发请求落到底层存储系统上。在数据魔方中,我们设计的缓存过期机制理论上能够将各个客户端的数据失效时间均匀地分布在时间轴上,一定程度上能够避免缓存同时失效带来的雪崩效应。

结束语

正是基于本文所描述的架构特点,数据魔方目前已经能够提供压缩前80TB的数据存储空间,数据中间层glider支持每天4000万的查询请求,平均响应时间在28毫秒(6月1日数据),足以满足未来一段时间内的业务增长需求。

尽管如此,整个系统中仍然存在很多不完善的地方。一个典型的例子莫过于各个分层之间使用短连接模式的HTTP协议进行通信。这样的策略直接导致在流量高峰期单机的TCP连接数非常高。所以说,一个良好的架构固然能够在很大程度上降低开发和维护的成本,但它自身一定是随着数据量和流量的变化而不断变化的。我相信,过不了几年,淘宝数据产品的技术架构一定会是另外的样子。


 
 

Things you can do from here:

 
 

Jerry Wu

unread,
Aug 3, 2011, 11:28:17 PM8/3/11
to tt...@googlegroups.com

技术不是关键,关键是有价值的信息还应该更多点。 我看我们公司的淘宝数据魔方,有价值的分析还是太少。

Li Peng

unread,
Aug 4, 2011, 2:00:24 AM8/4/11
to tt...@googlegroups.com
技术是基础,怎么会不重要呢,技术不过硬,1.2p的数据如何处理都是问题,更谈不上价值了

在 2011年8月4日 下午12:28,Jerry Wu <innov...@gmail.com> 写道:
> 技术不是关键,关键是有价值的信息还应该更多点。 我看我们公司的淘宝数据魔方,有价值的分析还是太少。
>
> --
> 订阅地址:ttnn+su...@googlegroups.com
> 退订地址:ttnn+uns...@googlegroups.com
>

Jerry Wu

unread,
Aug 4, 2011, 4:03:07 AM8/4/11
to tt...@googlegroups.com
目前还没听说哪家公司因为数据量大而搞不定的事情,即使自己搞不定,请外部团队,云计算已经普及,我想问题不是很大吧?
 
这个是基础,我也没说不重要,我只是说技术不是关键,而在应用。就这么大的数据量,我只看了10多分钟,数据魔方的数据就看完了。
 
不过我跑题了,大家继续聊相关技术架构,毕竟现在技术架构远比海量分析的应用热门。

2011/8/4 Li Peng <voyage...@gmail.com>

wind wail

unread,
Aug 5, 2011, 2:42:41 AM8/5/11
to ttnn BI 观点
对话:大数据时代我们如何做处理与分析
http://cloud.csdn.net/a/20110804/302689.html

On Aug 3, 8:13 pm, Q <happys...@gmail.com> wrote:
> Sent to you by Q via Google Reader: 淘宝数据魔方技术架构解析 via 淘宝数
> 据平台与产品部官方博客 tbdata.org by 朋春 on 8/3/11
>
> (本文首发于《程序员》8月刊,略有调整。你可通过pengchun#taobao.com联系到
> 作者。)
>
> 淘宝网拥有国内最具商业价值的海量数据。截至当前,每天有超过30亿的店铺、商
> 品浏览记录,10亿在线商品数,上千万的成交、收藏和评价数据。如何从这些数据
> 中挖掘出真正的商业价值,进而帮助淘宝、商家进行企业的数据化运营,帮助消费
> 者进行理性的购物决策,是淘宝数据平台与产品部的使命。
>
> 为此,我们进行了一系列数据产品的研发,比如为大家所熟知的量子统计、数据魔
> 方和淘宝指数等。尽管从业务层面来讲,数据产品的研发难度并不高;但在"海量
> "的限定下,数据产品的计算、存储和检索难度陡然上升。本文将以数据魔方为
> 例,向大家介绍淘宝在海量数据产品技术架构方面的探索。
>
> 淘宝海量数据产品技术架构
> 数据产品的一个最大特点是数据的非实时写入,正因为如此,我们可以认为,在一
> 定的时间段内,整个系统的数据是只读的。这为我们设计缓存奠定了非常重要的基
> 础。
>

> 图1 淘宝海量数据产品技术架构
>
> 按照数据的流向来划分,我们把淘宝数据产品的技术架构分为五层(如图1所
> 示),分别是数据源、计算层、存储层、查询层和产品层。位于架构顶端的是我们
> 的数据来源层,这里有淘宝主站的用户、店铺、商品和交易等数据库,还有用户的
> 浏览、搜索等行为日志等。这一系列的数据是数据产品最原始的生命力所在。
>
> 在数据源层实时产生的数据,通过淘宝自主研发的数据传输组件DataX、DbSync和
> Timetunnel准实时地传输到一个有1500个节点的Hadoop集群上,这个集群我们称之
> 为"云梯",是计算层的主要组成部分。在"云梯"上,我们每天有大约40000个作业


> 对1.5PB的原始数据按照产品需求进行不同的MapReduce计算。这一计算过程通常都
> 能在凌晨两点之前完成。相对于前端产品看到的数据,这里的计算结果很可能是一
> 个处于中间状态的结果,这往往是在数据冗余与前端计算之间做了适当平衡的结
> 果。
>
> 不得不提的是,一些对实效性要求很高的数据,例如针对搜索词的统计数据,我们

> 希望能尽快推送到数据产品前端。这种需求再采用"云梯"来计算效率将是比较低
> 的,为此我们做了流式数据的实时计算平台,称之为"银河"。"银河"也是一个分布
> 式系统,它接收来自TimeTunnel的实时消息,在内存中做实时计算,并把计算结果


> 在尽可能短的时间内刷新到NoSQL存储设备中,供前端产品调用。
>
> 容易理解,"云梯"或者"银河"并不适合直接向产品提供实时的数据查询服务。这是

> 因为,对于"云梯"来说,它的定位只是做离线计算的,无法支持较高的性能和并发
> 需求;而对于"银河"而言,尽管所有的代码都掌握在我们手中,但要完整地将数据
> 接收、实时计算、存储和查询等功能集成在一个分布式系统中,避免不了分层,最
> 终仍然落到了目前的架构上。
>
> 为此,我们针对前端产品设计了专门的存储层。在这一层,我们有基于MySQL的分
> 布式关系型数据库集群MyFOX和基于HBase的NoSQL存储集群Prom,在后面的文字
> 中,我将重点介绍这两个集群的实现原理。除此之外,其他第三方的模块也被我们
> 纳入存储层的范畴。
>
> 存储层异构模块的增多,对前端产品的使用带来了挑战。为此,我们设计了通用的
> 数据中间层----glider----来屏蔽这个影响。glider以HTTP协议对外提供restful方式
> 的接口。数据产品可以通过一个唯一的URL获取到它想要的数据。
>
> 以上是淘宝海量数据产品在技术架构方面的一个概括性的介绍,接下来我将重点从
> 四个方面阐述数据魔方设计上的特点。
> 关系型数据库仍然是王道
> 关系型数据库(RDBMS)自20世纪70年代提出以来,在工业生产中得到了广泛的使


> 用。经过三十多年的长足发展,诞生了一批优秀的数据库软件,例如Oracle、
> MySQL、DB2、Sybase和SQL Server等。
>

> 图2 MyFOX中的数据增长曲线
>
> 尽管相对于非关系型数据库而言,关系型数据库在分区容忍性(Tolerance to
> Network Partitions)方面存在劣势,但由于它强大的语义表达能力以及数据之间
> 的关系表达能力,在数据产品中仍然占据着不可替代的作用。
>
> 淘宝数据产品选择MySQL的MyISAM引擎作为底层的数据存储引擎。在此基础上,为

> 了应对海量数据,我们设计了分布式MySQL集群的查询代理层----MyFOX,使得分区对
> 前端应用透明。
>
> 图3 MyFOX的数据查询过程
>
> 目前,存储在MyFOX中的统计结果数据已经达到10TB,占据着数据魔方总数据量的
> 95%以上,并且正在以每天超过6亿的增量增长着(如图2所示)。这些数据被我们
> 近似均匀地分布到20个MySQL节点上,在查询时,经由MyFOX透明地对外服务(如图
> 3所示)。


>
> 图4 MyFOX节点结构
>
> 值得一提的是,在MyFOX现有的20个节点中,并不是所有节点都是"平等"的。一般

> 而言,数据产品的用户更多地只关心"最近几天"的数据,越早的数据,越容易被冷


> 落。为此,出于硬件成本考虑,我们在这20个节点中分出了"热节点"和"冷节点
> "(如图4所示)。
>
> 顾名思义,"热节点"存放最新的、被访问频率较高的数据。对于这部分数据,我们
> 希望能给用户提供尽可能快的查询速度,所以在硬盘方面,我们选择了每分钟
> 15000转的SAS硬盘,按照一个节点两台机器来计算,单位数据的存储成本约为

> 4.5W/TB。相对应地,"冷数据"我们选择了每分钟7500转的SATA硬盘,单碟上能够
> 存放更多的数据,存储成本约为1.6W/TB。
>
> 将冷热数据进行分离的另外一个好处是可以有效降低内存磁盘比。从图4可以看
> 出,"热节点"上单机只有24GB内存,而磁盘装满大约有1.8TB(300 * 12 * 0.5 /


> 1024),内存磁盘比约为4:300,远远低于MySQL服务器的一个合理值。内存磁盘比

> 过低导致的后果是,总有一天,即使所有内存用完也存不下数据的索引了----这个时


> 候,大量的查询请求都需要从磁盘中读取索引,效率大打折扣。
> NoSQL是SQL的有益补充
> 在MyFOX出现之后,一切都看起来那么完美,开发人员甚至不会意识到MyFOX的存
> 在,一条不用任何特殊修饰的SQL语句就可以满足需求。这个状态持续了很长一段

> 时间,直到有一天,我们碰到了传统的关系型数据库无法解决的问题----全属性选择
> 器(如图5所示)。
>
> 图5 全属性选择器
>
> 这是一个非常典型的例子。为了说明问题,我们仍然以关系型数据库的思路来描
> 述。对于笔记本电脑这个类目,用户某一次查询所选择的过滤条件可能包括"笔记
> 本尺寸"、"笔记本定位"、"硬盘容量"等一系列属性(字段),并且在每个可能用
> 在过滤条件的属性上,属性值的分布是极不均匀的。在图5中我们可以看到,笔记
> 本电脑的尺寸这一属性有着10个枚举值,而"蓝牙功能"这个属性值是个布尔值,数
> 据的筛选性非常差。
>
> 在用户所选择的过滤条件不确定的情况下,解决全属性问题的思路有两个:一个是
> 穷举所有可能的过滤条件组合,在"云梯"上进行预先计算,存入数据库供查询;另
> 一个是存储原始数据,在用户查询时根据过滤条件筛选出相应的记录进行现场计
> 算。很明显,由于过滤条件的排列组合几乎是无法穷举的,第一种方案在现实中是
> 不可取的;而第二种方案中,原始数据存储在什么地方?如果仍然用关系型数据


> 库,那么你打算怎样为这个表建立索引?
>
> 这一系列问题把我们引到了"创建定制化的存储、现场计算并提供查询服务的引擎
> "的思路上来,这就是Prometheus(如图6所示)。
>

> 图6 Prom的存储结构
>
> 从图6可以看出,我们选择了HBase作为Prom的底层存储引擎。之所以选择
> HBase,主要是因为它是建立在HDFS之上的,并且对于MapReduce有良好的编程接
> 口。尽管Prom是一个通用的、解决共性问题的服务框架,但在这里,我们仍然以全
> 属性选择为例,来说明Prom的工作原理。这里的原始数据是前一天在淘宝上的交易
> 明细,在HBase集群中,我们以属性对(属性与属性值的组合)作为row-key进行存
> 储。而row-key对应的值,我们设计了两个column-family,即存放交易ID列表的
> index字段和原始交易明细的data字段。在存储的时候,我们有意识地让每个字段
> 中的每一个元素都是定长的,这是为了支持通过偏移量快速地找到相应记录,避免
> 复杂的查找算法和磁盘的大量随机读取请求。
>
> 图7 Prom查询过程
>
> 图7用一个典型的例子描述的Prom在提供查询服务时的工作原理,限于篇幅,这里
> 不做详细描述。值得一提的是,Prom支持的计算并不仅限于求和SUM运算,统计意
> 义上的常用计算都是支持的。在现场计算方面,我们对Hbase进行了扩展,Prom要 ...
>
> read more >>

ke yuan

unread,
Aug 30, 2011, 11:15:24 PM8/30/11
to tt...@googlegroups.com

不是问题是不是问题,存储和计算需要多少成本呢?别老是提云,你懂云么?知道里面的成本么?
别老是瞎说。。。。别老提BI只需要业务,技术的投入不需要么?没有基础谈别的可能么?

Jerry Wu

unread,
Aug 31, 2011, 10:14:45 AM8/31/11
to tt...@googlegroups.com
对客户来说,价值就是价值,少数成本不成本,成本高就别说得太大。我一直说数据魔方有市场方面的作用,但对于企业来说,价值非常有限,并没说他没价值。
 
BI现在的现象,就是技术投入远大于对业务的投入,导致技术与业务不平衡。我在TTNN也转发了国外网站的BI架构文章,我想很多公司的BI的设计中压根没分析模型设计,我在微博中说的技术没有分析模型里产出,而是以技术的角度产出,价值的产出完全没可比性,这点在微博中有很多人赞许,没人有异议。
 
所以既然你技术成本已经投入了,为何不多产生些业务价值呢,存储与计算和业务有矛盾么?信不信就数据魔方现有的指标(不需要额外投入存储和计算,就是指标在不同角度的组合展示),我可以组合产出很多新的对企业客户有价值的分析?
 
我看很多朋友完全没理解我的初衷,我的初衷就是,既然你知道技术投入的大成本,为何不把技术的价值实现做得更好呢?而很多人以为我在说技术不重要,就是去搞业务就行了,这完全就是死脑筋往一处钻,非A即B的思维。做BI更符合中国的“中庸思想”,必须吸收各方面之长,才能发挥BI极致的作用。
 
很多朋友以为做了2年分布式数据库,就以为比别人懂云,连业务应用都不清楚的,只能说懂云的某种技术,谈何懂云?


 
2011/8/31 ke yuan <ke.yu...@gmail.com>

G

unread,
Aug 31, 2011, 10:24:17 AM8/31/11
to tt...@googlegroups.com

何苦码农相轻,还是回到讨论手艺的阳光大道上来吧!

wind wail

unread,
Aug 31, 2011, 12:28:29 PM8/31/11
to ttnn BI 观点
不错啦
真正涉及商业价值的东西,谁会在微博这种地方谈论啊

On Aug 31, 7:14 am, Jerry Wu <innovate...@gmail.com> wrote:
> 对客户来说,价值就是价值,少数成本不成本,成本高就别说得太大。我一直说数据魔方有市场方面的作用,但对于企业来说,价值非常有限,并没说他没价值。
>

> BI现在的现象,就是技术投入远大于对业务的投入,导致技术与业务不平衡。我在TTNN也转发了国外网站的BI架构文章,我想很多公司的BI的设计中压根没分析-模型设计,我在微博中说的技术没有分析模型里产出,而是以技术的角度产出,价值的产出完全没可比性,这点在微博中有很多人赞许,没人有异议。
>
> 所以既然你技术成本已经投入了,为何不多产生些业务价值呢,存储与计算和业务有矛盾么?信不信就数据魔方现有的指标(不需要额外投入存储和计算,就是指标在不同-角度的组合展示),我可以组合产出很多新的对企业客户有价值的分析?
>
> 我看很多朋友完全没理解我的初衷,我的初衷就是,既然你知道技术投入的大成本,为何不把技术的价值实现做得更好呢?而很多人以为我在说技术不重要,就是去搞业务-就行了,这完全就是死脑筋往一处钻,非A即B的思维。做BI更符合中国的"中庸思想",必须吸收各方面之长,才能发挥BI极致的作用。


>
> 很多朋友以为做了2年分布式数据库,就以为比别人懂云,连业务应用都不清楚的,只能说懂云的某种技术,谈何懂云?
>

> 2011/8/31 ke yuan <ke.yuan....@gmail.com>


>
>
>
>
>
> > 不是问题是不是问题,存储和计算需要多少成本呢?别老是提云,你懂云么?知道里面的成本么?
> > 别老是瞎说。。。。别老提BI只需要业务,技术的投入不需要么?没有基础谈别的可能么?
>

> > 在 2011年8月4日 上午11:28,Jerry Wu <innovate...@gmail.com>写道:
>
> >> 技术不是关键,关键是有价值的信息还应该更多点。 我看我们公司的淘宝数据魔方,有价值的分析还是太少。
>
> >> --
> >> 订阅地址:ttnn+su...@googlegroups.com
> >> 退订地址:ttnn+uns...@googlegroups.com
>
> > --
> > 订阅地址:ttnn+su...@googlegroups.com

> > 退订地址:ttnn+uns...@googlegroups.com- Hide quoted text -
>
> - Show quoted text -

Delin He

unread,
Aug 31, 2011, 11:08:18 PM8/31/11
to tt...@googlegroups.com
首先魔方是个好东西,把数据作为一种服务,能帮助没机会没实力没资源的没玩过数据化运营的淘宝商家们进行初步的数据化运营,这本身已经是BI应用草根化的一个崭新的阶段,对于众多淘宝商家来说,有用;但是魔方的现有前端应用,相对TTNN这帮人来说,还是太小儿科了,魔方现在也在不断增加深度应用, 魔方这种模式还是很值得传统行业BI去学习
 
 
 
 
 
 

--
Best regards!

    He Delin(何德琳)
    ----------------------------------   
        Mailto: beij...@gmail.com
1.jpg

darcy007007

unread,
Sep 1, 2011, 3:59:43 AM9/1/11
to tt...@googlegroups.com
我理解老WU说的意思是:BIer技术咖与其说我要做什么什么新技术;还不如多想想以我现有的技术,是不是能帮助业务部门解答更多的业务问题,实现更多的业务价值。
讨论这个有点像鸡和蛋的问题,个人认为业务和技术是相互驱动的,不存在一定是谁牵着谁走。当然技术发展最终的目标还是为了更好的回答和帮助解决业务问题,这是不能本末倒置的。
现在有太多的BIer会陷入一种迷思吧,一味去说我要做什么什么,而不去管是否这是业务需要的,最终被束之高阁或用者寥寥也是很正常的。
换一种思维也许更好:技术上我能做什么什么,去帮助业务更好的解决某方面的问题。技术的价值应该体现于它是否被业务所需要
--
订阅地址:ttnn+subs...@googlegroups.com
退订地址:ttnn+unsub...@googlegroups.com


Jerry Wu

unread,
Sep 1, 2011, 4:40:01 AM9/1/11
to tt...@googlegroups.com
恩,这是其中一个思路,算是当前解决方案。
 
其实我在规划的时候,有当前方案和中远期方案。当前方案则是在现有人力、技术条件下,我能把技术发挥到极致,为用户所用。而中远期方案,则是随着深入业务需求、技术的发展,我们需要用什么技术升级、多少人力来满足规划中的较为深入的、满足未来战略目标的业务分析需求?
 
我想很多一直从事偏技术工作的朋友会认为这样总有点说不出来的问题。其实不用纠结,这就像当年INMON与KIMBALL之争,一个想在比较完美的技术平台下,再做BI应用(现实证明绝大多数企业内行不通的),一个是以满足业务需求来建模,现建现卖(现实证明,绝大多数这类项目是要重构的)。
 
就在当年我还注重DW领域的时候,我就提出不要非INMON既KIMBALL,他们两各有特点,为啥不取所长呢?也就是说,你可以逐步建设EDW,保证数据平台的完整性和先进性,但是同时有一只力量来做KIMBALL思路,快速实现业务分析!


 
2011/9/1 darcy007007 <darcy...@163.com>

darcy007007

unread,
Sep 1, 2011, 6:17:50 AM9/1/11
to tt...@googlegroups.com
我理解这是另外一个话题了,本身公司所处的业务环境和业务现状决定了你说的哪种思路会占上风。
当在一个业务边界还在无限延伸的公司,BIer每天会面对无数新的业务需求,见招拆招先解决当前问题也是无奈之举;
等到了公司业务边界较为稳定,或者说大量业务需求中有很多共性时候,BIer的紧急需求才会减少,那么才有可能去深入规划重量级的战略。
毕竟一个公司不可能在BI无限的投入。当然你要说我有足够的人手,在完成紧急业务需求同时还能有余力去深入规划长远的未来战略,这肯定是最理想的完美状态了

Jerry Wu

unread,
Sep 1, 2011, 11:55:05 AM9/1/11
to tt...@googlegroups.com
我现在完全没足够人手,我跟上头说,年入几亿电商的BI团队常常就10来人,我们的电商依托传统零售的优势,达到几亿并不难,不说10来人,5、6人总要吧,我好有时间深入传统零售和电商终端及供应链分析,以及他们的整合分析。
 
即便如此,我在满足用户需求的时候,尽量比他们考虑得更多更周全,否则见招拆招,永远是被动跟着打拼,不知道什么时候需求变了,可能还再变,做很多无用功和重复劳动。在企业内部做BI,完全可以避免这些。
 
首先BI人要主动询问业务战略方向、战术的思想,了解用户的想法,通过交流过程中,对用户提出个人见解和解决方案想法,不但可以达到与用户平起平坐谈业务的目的,还可以让用户尊重你的业务能力,主动把很多需求的缘由整盘托出。这个时候用户提出的表面需求,你就有能力和条件去补充、修缮,增加BI的快速、高效应用的效果,而且可以引导用户利用交流对BI更深入理解,让他们把BI用得更好。
 
有的朋友有能力却不想这么做,因为他觉得这样是干涉业务,其实不然,你提出个人见解和业务方案想法,只是在套用户的本质需求,并让他们充分理解BI能帮他们什么,而不是干涉他们的业务运作。这就需要沟通技巧了。


 
2011/9/1 darcy007007 <darcy...@163.com>

Jerry Wu

unread,
Sep 1, 2011, 11:58:15 AM9/1/11
to tt...@googlegroups.com
另外,BI技术架构和分析应用架构的规划和设计,与需求繁忙没有必然关联。这些规划和设计,只要对相关技术和业务有足够理解,是可以事先设计和规划的。对于埋头忙着满足需求的人们,更是一个方向的引导,可以经常抬头看看自己是否迷失在繁杂的需求开发中。


 
2011/9/1 darcy007007 <darcy...@163.com>

darcy007007

unread,
Sep 1, 2011, 9:19:15 PM9/1/11
to tt...@googlegroups.com
其实你也说出了一个优秀BIer所必备的一些素质:
1.我在满足用户需求的时候,尽量比他们考虑得更多更周全------对整个公司的业务有很深的理解
2.通过沟通:让用户尊重你的业务能力,主动把很多需求的缘由整盘托出------需要较强的业务咨询与沟通能力
3.有的朋友有能力却不想这么做,因为他觉得这样是干涉业务------愿意改变自己心智模式
同时具备这几项素质的BIer,且本身技术又过硬的人少之又少吧,呵呵,当然这应该是一个值得努力的方向与目标

Q

unread,
Sep 1, 2011, 11:37:16 PM9/1/11
to tt...@googlegroups.com
大c,你是不是还有隐而未发的话?

2011/9/2 darcy007007 <darcy...@163.com>



--
ttnn
telno: 13514984944

Jerry Wu

unread,
Sep 2, 2011, 1:26:01 AM9/2/11
to tt...@googlegroups.com
技术过硬这个很难讲,BI涉及到技术太多,从数据平台到数据挖掘,还有OLAP,要咋样才算过硬呢?我的理解是,技术都要懂,知道原理,至少会使用和开发,应该就算OK了,做到精通,没看过谁样样技术都精通的,哈哈。


 
2011/9/2 darcy007007 <darcy...@163.com>
Reply all
Reply to author
Forward
0 new messages