大資料量資料儲存分表例項(企業級應用系統)附原碼

2021-07-11 15:57:35 字數 1584 閱讀 4450

隨著資料不斷增長,資料庫中單錶無法滿足大資料量的儲存,所以我們就提出按照自然時間、單站點資訊分表來儲存大量秒級資料。

例如:大氣、水利、交通(gps)資訊監測系統中的實時資料進行儲存,一般時按照開始時間、結束時間、單站點、多站點、監測專案等方式進行資料查詢、分析、圖表。

如 按5分鐘單站點的資料12*24(小時)*365(天)*(監測項)10=100w ,也就是乙個站點一年資料量 100w條,100站*100w =1億條這樣的資料是無法滿足快速查詢。

所以我們就按照 」tb_5m_年_站號「建表名稱,tb_時間刻度_年份_站號建表 。 "tb_5m_2016_a0001", "tb_5m_2016_a0002", "tb_5m_2016_a0003",, "tb_5m_2016_a0004"

條張表 儲存100w,如儲存1分鐘的資料單錶就 500w條, 如1秒鐘資料:60*500w=3億條資料,這樣不行啊,我們要以在分表,分表規則中加乙個月份,tb_5m_年_月_站號,這裡就不說了。

問題來,我們如何方便快捷編寫**那?,我們還想用orm(ef)進行資料查詢,就拿我們真實專案來說吧。

思路,我們用.net開發,在資料庫建基本表(tb_5m_base)來實現ef,用 dbcontext實現資料訪問。

別的不多說了,直接來**吧,

功能5分鐘資料查詢,使用者指定開始時間、結束時間、單(多)選擇站點、單(多)選擇監測 專案,進行資料查詢功能。

**發如下:

public class tb_5m_base

public datatime time

public string pcodes 

public double values

}public partial class entityframeworkdatacontext : dbcontext

public entityframeworkdatacontext()

: base("name=entityframeworkdatacontext")

protected override void onmodelcreating(dbmodelbuilder modelbuilder)

public dbset< tb_5m_base>  tb_5m_base

public class blldataquery

);int year = starttime.year;

int num = endtime.year;

string str = string.empty;

string commandtext = string.empty;

pcodus=pcodus;

while (year <= num) //年份跨年也沒問題 

__src", year, strstationid );

commandtext = string.format("select * from where time between '' and '' and  pcodes in () ", new object );

try}

catch (exception exception)

}year++;

}return list;

}

大資料量資料儲存分表例項(企業級應用系統)附原碼

隨著資料不斷增長,資料庫中單錶無法滿足大資料量的儲存,所以我們就提出按照自然時間 單站點資訊分表來儲存大量秒級資料。例如 大氣 水利 交通 gps 資訊監測系統中的實時資料進行儲存,一般時按照開始時間 結束時間 單站點 多站點 監測專案等方式進行資料查詢 分析 圖表。如 按5分鐘單站點的資料12 2...

大資料量的儲存分表常見演算法

以下是幾種常見的分表演算法。1.按自然時間來分表 分庫 2.按數字型別hash分表 分庫 如果我們 要儲存使用者的資訊,我們應用的註冊量很大,我們用單錶是不能滿足儲存需求的,那麼我們就可以用使用者的編號來進行hash,常見的是用取餘操 作,如果我們要分30張表來儲存使用者的資訊,那麼使用者編號為1的...

大資料量的分表方法

以下是幾種常見的分表演算法。1.按自然時間來分表 分庫 2.按數字型別hash分表 分庫 如果我們要儲存使用者的資訊,我們應用的註冊量很大,我們用單錶是不能滿足儲存需求的,那麼我們就可以用使用者的編號來進行hash,常見的是用取餘操作,如果我們要分30張表來儲存使用者的資訊,那麼使用者編號為1的使用...