[閒聊] 新聞一則
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
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章
15
19