最近在維護公司專案過程中,學習了很多後端的東西,包括go語言以及資料庫的操作。同時站在全域性的角度去體會了高額資料量情況下後端的應對策略,為今後在前端方面如何配合後端處理高併發提供了參考。技術背景:
xorm:xorm是乙個簡單而強大的go語言orm庫. 通過它可以使資料庫操作非常簡便。
可以簡單理解成golang裡面封裝了sql語句的框架,可以幫助我們更方便快速的運算元據庫。
廢話不多說,直接進入正文。
資料庫中的資料量不一定是可控的,在未進行分庫分表的情況下,隨著時間和業務的發展,庫中的表會越來越多,表中的資料量也會越來越大,相應地,資料操作,增刪改查的開銷也會越來越大;另外,由於無法進行分布式式部署,而一台伺服器的資源(cpu、磁碟、記憶體、io等)是有限的,最終資料庫所能承載的資料量、資料處理能力都將遭遇瓶頸。
正如事情都有兩面性,任何表面看上去是捷徑的路不一定都好走。分表也是一樣
1. 如何定時的在每個月月初會自動建立乙個新錶
2. 如何解決golang類去建立乙個以時間結尾為表名的資料庫表
3. 如何解決golang類和表的對映問題,若對映不對,則影響資料插入操作
1. 利用 cron 解決月初建立新錶
func newdbengine(dburl string) (*dbengine, error)
err = db.ping()
if err != nil
db.setmaxopenconns(10)
db.showsql(false)
log.infof("connect to database(%v) server ok!", dburl)
engine := dbengine
engine.dbengine
engine.cron = cron.new()
engine.cron
.addfunc(spec, engine.inittable)
engine.commparam = make(chan commparam, get_cache_data)
init(&engine)
return &engine, nil
}
func (db *dbengine) inittable() else
for key, v := range tableprefix
if i***ist else }}
}
var tableprefix = map[string]inte***ce{},
"gw_tx": model.gw_tx{},
"gw_stats": model.gw_stats{},
"mac_tx": model.mac_tx{},
"mac_rx": model.mac_rx{},
"mac_error": model.mac_error{},
"rxinfo": model.rxinfo{},
"txinfo": model.txinfo{},
}
programming is an art form.
基於 xorm 的服務端框架 XGoServer
掘金 部落格 github 你可以使用它 具備的如果你想直接輸出一條 json 給客戶端,這樣子 結果 與資料庫互動 affect,core.engine.insert item 執行插入,傳入 struct 引用 m map string inte ce if affect 0 else retu...
基於SpringBoot的快速開發框架分享
首先github 介紹一下我的這個專案,這個專案我是去年開始做的,斷斷續續寫了差不多4 5個月 而完善功能之後,也是很久沒有修改過了。這個框架基於rest風格開發,適合做前後端分離的專案,用到的技術也特別注重開發效率,都是選擇了一些可以高效開發並且使用簡單的技術。前段時間使用過thinkphp,自認...
實現基於springboot的RPC框架(序)
rpc框架大家或多或少都用過,出自於阿里系的就有dubbo,hsf,sofarpc等。但是,要深入理解rpc的原理卻不容易,其中光是核心部分,就涉及到動態 netty,服務註冊與發現,序列化,多執行緒等等。筆者為了弄清楚rpc框架的大致呼叫實現原理,自己造了個輪子 zrpc.首先,筆者寫這個rpc框...