作者laechan (小太保)
看板mud_sanc
标题[闲聊] 新闻一则
时间Fri Jun 10 21:25:19 2011
http://www.ithome.com.tw/itadm/article.php?c=68023
面对资料快速成长以及非结构性资料的增加,中华电信资讯处第四科
科长杨秀一表示,中华电信近来利用Hadoop云端运算技术自行开发了
一个专门用来分析非结构化资料的巨量资料(Big Data)运算平台,
尝试在资料进到资料仓储系统之前,先进行资料的分析与处理以减少
资料仓储的资料量。
.
.
举例来说,同样打一通5分钟的电话,每一通经过的基地台数量与路
径完全不同,导致每一笔资料的长度并不一样。因此,在处理资料时
,先订出可让资料长度相同的规则,就能将相同长度的资料放在同一
个栏位,进行结构化的分析。
杨秀一表示,将资料在进入资料仓储之前就先放进另一个平台分析,
而不是将所有资料放进资料库後,再将资料取出分析,可以减少一次
资料库的I/O负担。
============================================================
第一段的部份,laechan 已经把它用在某个系统了。该系统很多 mud
也有,但是圣殿的可以运作的很庞大。(目前是刻意缩小规模)
第二、三段的部份,它的主要用意,就是在「取」资料时loading 可
以尽可能地减小。
所以它有很多做法。就纯粹的「存」跟「取」这部份,它的重点是摆
在「如何设计资料结构」。我举个例,例如底下的资料结构..
//第一种格式
mapping student=([
// 数学 物理 化学
"nahceal":({ 90 , 80 , 70 }),
"highelf":({ 80 , 90 , 70 }),
"laechan":({ 20 , 20 , 20 }),
]);
那麽,一种「可变」的储存方式就如下..
//第二种格式
mapping student=([
// 数-物-化
"nahceal":"90-80-70", <= 把原先阵列储存的资料改成只需一个字串就搞定
"highelf":"80-90-70", 这就是所谓的先对资料做处理、再储存资料的做法
"laechan":"20-20-20",
]);
甚至上面的变态型式也可能如下..
mixed student=({ <= 把整个 mapping 资料改成阵列资料,同样是资料前处理
"nahceal-90-80-70",
"highelf-80-90-70",
"laechan-20-20-20",
});
然後圣殿常用的做法就是如下..
//第三种格式
mapping student=({
// 数-物-化
"nahceal 90 80 70", <= 已经先格式化过资料
"highelf 80 90 70",
"laechan 20 20 20",
});
然後我们的程式码就可以这样写..
str="大家的成绩如下\n"+
implode(student,"\n")+"\n"; <= 这样超快的
如果是第二种格式就会变底下..
string tmp,str;
mixed tmps=({});
str="大家的成绩如下\n";
foreach(names in keys_student)
{
tmp=student[names];
tmp=substr(tmp,"-"," ");
str+=sprintf("%-11s %s\n",names,tmp);
}
laechan 也早已实作这个概念,基本上就是有遇过相关困扰,
才产生相关做法的一种演进。圣殿以前在线角色数一超过某个
数字(<300),就无法成功显示 who 的结果,当初也是因为这样
才对 who 指令做了改良,同样是运用资料前处理的做法。据上
次实验的结果即使是 10XX 人也能正常显示。
Belldandy.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.117.3.82