
引子:什么才算大數(shù)據(jù)?
自從寫(xiě)了上一篇《大數(shù)據(jù)應(yīng)用之雙色球算獎(jiǎng)平臺(tái)總體設(shè)計(jì)大綱篇一》,受到許多園友的關(guān)注和指導(dǎo),在此表示感謝,尤其是園友個(gè)人知識(shí)管理給出的一個(gè)評(píng)論,讓我深思,原文如下“雙色球算獎(jiǎng)這么簡(jiǎn)單的活,也稱(chēng)大數(shù)據(jù)。先生:不是數(shù)據(jù)多,叫大數(shù)據(jù)。雙色球算獎(jiǎng),用Oracle數(shù)據(jù)庫(kù)的索引,1分鐘內(nèi)就算完。關(guān)鍵是人家不想這么快”。話(huà)不太好聽(tīng),尤其是稱(chēng)我為先生那句,但卻發(fā)人深思,是啊:到底什么是大數(shù)據(jù)呢?選擇雙色球算獎(jiǎng)作為大數(shù)據(jù)應(yīng)用的切入點(diǎn)是否合適呢?然后就是讓我詫異的1分鐘理論很是嚇了我一跳的。
說(shuō)一下自己的理解吧,大數(shù)據(jù)是指那些很大的數(shù)據(jù)集,大到傳統(tǒng)的數(shù)據(jù)庫(kù)軟件工具已經(jīng)無(wú)法采集、存儲(chǔ)、管理和分析。大數(shù)據(jù)既有存儲(chǔ)規(guī)模方面的考慮,同時(shí)也涉及到分析計(jì)算規(guī)模的考慮。之所以選擇雙色球算獎(jiǎng)平臺(tái)作為大數(shù)據(jù)應(yīng)用的案例,也正是考慮到這兩個(gè)方面的問(wèn)題。其一,歷史投注明細(xì)信息的存儲(chǔ),如果采用傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù),肯定是不合適,無(wú)論是分區(qū)還是分表,都無(wú)法解決根本問(wèn)題。其二、當(dāng)前投注規(guī)模的情況下,進(jìn)行快速算獎(jiǎng),所要進(jìn)行的計(jì)算規(guī)模肯定也不是一個(gè)傳統(tǒng)方式能輕易解決的問(wèn)題。
當(dāng)然關(guān)于具體多大規(guī)模的數(shù)據(jù)才算大數(shù)據(jù),目前為止尚未有一個(gè)官方的界定閾值的存在,規(guī)定超過(guò)多少算大數(shù)據(jù),低于多少不算大數(shù)據(jù)的說(shuō)法。既然沒(méi)有標(biāo)準(zhǔn),也就無(wú)所謂是與不是,見(jiàn)仁見(jiàn)智,不一而足。
一、概述業(yè)務(wù)規(guī)則
雙色球獎(jiǎng)項(xiàng)設(shè)置和兌獎(jiǎng)規(guī)則如下所示:
“雙色球”彩票以投注者所選單注投注號(hào)碼(復(fù)式投注按所覆蓋的單注計(jì))與當(dāng)期開(kāi)出中獎(jiǎng)號(hào)碼相符的球色和個(gè)數(shù)確定中獎(jiǎng)等級(jí):
一等獎(jiǎng):7個(gè)號(hào)碼相符(6個(gè)紅色球號(hào)碼和1個(gè)藍(lán)色球號(hào)碼)(紅色球號(hào)碼順序不限,下同)
二等獎(jiǎng):6個(gè)紅色球號(hào)碼相符;
三等獎(jiǎng):5個(gè)紅色球號(hào)碼和1個(gè)藍(lán)色球號(hào)碼相符;
四等獎(jiǎng):5個(gè)紅色球號(hào)碼或4個(gè)紅色球號(hào)碼和1個(gè)藍(lán)色球號(hào)碼相符;
五等獎(jiǎng):4個(gè)紅色球號(hào)碼或3個(gè)紅色球號(hào)碼和1個(gè)藍(lán)色球號(hào)碼相符;
六等獎(jiǎng):1個(gè)藍(lán)色球號(hào)碼相符(有無(wú)紅色球號(hào)碼相符均可)。
二、數(shù)據(jù)對(duì)象分析
既然是數(shù)據(jù)規(guī)模的評(píng)估,我們要解決的首先就是數(shù)據(jù)對(duì)象的確認(rèn)。針對(duì)雙色球算獎(jiǎng)平臺(tái),我們需要關(guān)注那些數(shù)據(jù)對(duì)象呢?按照矛盾論的觀點(diǎn),事物的矛盾分為主要矛盾和次要矛盾,其中主要矛盾起決定性作用。所以在這里我們只考慮雙色球算獎(jiǎng)平臺(tái)涉及的最主要的數(shù)據(jù)對(duì)象,而不考慮其他細(xì)節(jié)問(wèn)題。
數(shù)據(jù)對(duì)象主要包括以下幾個(gè)方面:
(1)銷(xiāo)量統(tǒng)計(jì):包括全國(guó)、分省市、銷(xiāo)售網(wǎng)點(diǎn)的銷(xiāo)量匯總統(tǒng)計(jì)數(shù)據(jù)。
(2)中獎(jiǎng)統(tǒng)計(jì):包括全國(guó)、分省市、銷(xiāo)售網(wǎng)點(diǎn)的各獎(jiǎng)項(xiàng)的中獎(jiǎng)注數(shù)匯總統(tǒng)計(jì)數(shù)據(jù)。
(3)開(kāi)獎(jiǎng)號(hào)碼:包括每一期開(kāi)獎(jiǎng)號(hào)碼信息。
(4)獎(jiǎng)金信息:包括每一期次各獎(jiǎng)項(xiàng)獎(jiǎng)金多少的統(tǒng)計(jì)數(shù)據(jù)。
(5)選注明細(xì):當(dāng)前期次選注明細(xì)數(shù)據(jù)。
(6)選注歷史明細(xì):歷史期次選注明細(xì)數(shù)據(jù)。
(7)中獎(jiǎng)選注明細(xì):當(dāng)前期中獎(jiǎng)選注明細(xì)數(shù)據(jù)。
(8)中獎(jiǎng)選注歷史明細(xì):歷史中獎(jiǎng)選注明細(xì)數(shù)據(jù)。
如果從存儲(chǔ)規(guī)模和計(jì)算規(guī)模兩個(gè)維度分別考慮,針對(duì)銷(xiāo)量統(tǒng)計(jì)、中獎(jiǎng)統(tǒng)計(jì)和獎(jiǎng)金信息,我們需要關(guān)注的是計(jì)算規(guī)模;針對(duì)選注明細(xì)、選注歷史我們要關(guān)注的則是存儲(chǔ)規(guī)模。
三、存儲(chǔ)規(guī)模評(píng)估
3.1 數(shù)據(jù)結(jié)構(gòu)
針對(duì)雙色球算獎(jiǎng)平臺(tái)而言,所有需要存儲(chǔ)的數(shù)據(jù)中,選注歷史明細(xì)信息的存儲(chǔ)是規(guī)模最大的,根據(jù)目前雙色球每一期次的平均銷(xiāo)量來(lái)看,需要存儲(chǔ)的每一期次選注明細(xì)信息約為2億條記錄。每一選注需要存儲(chǔ)的信息包括:站號(hào)、操作員、流水號(hào)、銷(xiāo)售期、有效期、銷(xiāo)售時(shí)間、金額、投注明細(xì)(多條)、開(kāi)獎(jiǎng)時(shí)間和附加碼。具體如下圖所示:

為簡(jiǎn)化我們的分析,我們將復(fù)式投注和膽拖投注明細(xì)拆分成單式投注進(jìn)行存儲(chǔ),具體數(shù)據(jù)結(jié)構(gòu)如下:

按照簡(jiǎn)化后的數(shù)據(jù)存儲(chǔ),單注明細(xì)需要的存儲(chǔ)空間=35字節(jié),每一期次需要存儲(chǔ)的絕對(duì)數(shù)據(jù)規(guī)模=200000000*35/1024 /1024=6675.7M。如果單從這個(gè)角度來(lái)看,數(shù)據(jù)存儲(chǔ)規(guī)模還真的不算大。但是考慮到RDMS表的存儲(chǔ)和訪(fǎng)問(wèn),無(wú)論是采用分區(qū),還是分表,能夠?qū)崿F(xiàn)的其實(shí)只是把數(shù)據(jù)塞進(jìn)去,至于,讀出來(lái),如何讀出來(lái)則將會(huì)是一個(gè)悲劇。不要告訴我用索引,用索引需要付出的代價(jià)是什么,我想有更多的人比我清楚。
3.2 測(cè)試環(huán)境

3.3 測(cè)試結(jié)果-無(wú)索引插入

3.4 數(shù)據(jù)庫(kù)空間-1000w記錄數(shù)據(jù)庫(kù)空間

四、計(jì)算規(guī)模評(píng)估
這部分設(shè)計(jì)到具體采用的算法,但是無(wú)論采用何種算法,2億次規(guī)模的數(shù)據(jù)遍歷是必須的,之前園友提到的方法其實(shí)很好,根據(jù)開(kāi)獎(jiǎng)號(hào)碼,設(shè)計(jì)中獎(jiǎng)選注表,利用待兌獎(jiǎng)數(shù)據(jù)進(jìn)行組合ID比較,然后得出目標(biāo)選注。然后進(jìn)行獎(jiǎng)項(xiàng)層次的細(xì)分,思路很好,可是有沒(méi)有想到過(guò)2億次乘以目標(biāo)中獎(jiǎng)選注表項(xiàng)個(gè)數(shù)的計(jì)算規(guī)模有是多少次呢。如果采用SQL的方式,時(shí)間呢,又需要多少的時(shí)間?有數(shù)據(jù)有真相,正在跑相關(guān)的測(cè)試案例。至少目前看到的結(jié)果,很不理想。
作者:張子良

