目前公司數(shù)據(jù)量已經(jīng)上來,單表較大已經(jīng)5千萬,之前使用分區(qū)表,用起來有很多需要注意的地方,以及坑等。
所以就在年后準備做分庫分表,篩選了N多中間件、框架,似乎都不滿足。主要在以下幾點。
比如用阿里的myCat,需要學習、研究,因為我們目前有點急,需要安排人去研究,而且需要深入研究,結果就是搞了幾天沒啥頭緒。但是原理就是做代理,這個了解透了。
在看當當網(wǎng)提供的sharding-jdbc分庫分表案例,也是同樣問題,沒那么多時間研究,而且這幾家提供的東西,居然官網(wǎng)都是英文/中文,中文文檔也是按照老外風格寫,盡量給你增加門檻?。?!
于是乎就萌生自己寫分庫分表。
廢話不多說。
1、首先是老數(shù)據(jù)問題,這個是網(wǎng)上所有文章沒有提到的,沒有提到這個問題的文章,可以說**沒玩過分庫分表。
對于5000萬的數(shù)據(jù)量,做切分,一張表控制在100萬,你手動去復制粘貼???,每隔一段時間手動建庫???
據(jù)說當當是手動,應該是寫的程序手動的。。。。傷不傷???
其實很簡單,我用JDBC寫的,查到老庫所有表名,create table newTableName like oldTableName;這樣可以把表結構、索引結構都拷貝過來到新庫,但是不會拷貝數(shù)據(jù),網(wǎng)上有另一條SQL,我想大家已經(jīng)玩過了,那個索引、主鍵不會拷貝。。
2、如何做數(shù)據(jù)分散存儲
很多人肯定看過文章,ID取模呀。那如果數(shù)據(jù)量又達到瓶頸咋搞?阿里的單表12年就已經(jīng)100億了。。。。
所以說ID取模并不是僅僅這么簡單,還需要數(shù)據(jù)量控制,我這里有個較好辦法,其實就是簡單數(shù)據(jù)量控制。
達到100萬就Next,ID是自增的,出去100萬,余數(shù)為0則Next。當然ID取模這么流行的方法都是阿里、58、京東這些架構師出來講培訓說的,其實你實際去操作,有其他N多方法,沒有必要照搬。。。。
3、多表、關聯(lián)關系如何建立?
你怎么知道User表包含哪些Order表呢?,如果一個user出的訂單既有在N庫,也有在N+1、N+2庫里面呢?
通過user_id查詢order。一般單庫做關聯(lián)查詢,其實多庫也可以,只是索引會失效而已了。然后2千萬*5千萬掃描。。。。
我看過唯品會的解決方案,他們是Order_id中間一段是user_id,**不,很**。。。。
但是,我們已經(jīng)有5000萬數(shù)據(jù)了,人家唯品會有的是錢,拉500人團隊搞唄。。。2個月搞完。
我們幾個人?就是我一個人。。。。傷不傷吧。。
所以這個方案不行,唯品會文章中丟棄的一個方案就是建立中間對應關系。
就是user_id和order_聯(lián)合加上order_id所在庫。他們丟棄的原因是中間表會巨大,確實。
但是如果放在redis緩存中就沒有這個問題了,redis緩存只要空間足夠大,性能2~3個億沒問題。
redis緩存還可以做切分啊,也算是**符合我們這種小公司了吧。
4、如何取數(shù)據(jù)?
對于一對一查詢,以前關聯(lián)查詢、子查詢,現(xiàn)在都用子查詢,分為兩次查詢。這個時間上只是毫秒差異。不用聯(lián)合多庫查詢。(題外話,做互聯(lián)網(wǎng)公司項目,幾乎不會需要用外鍵、關聯(lián)查詢的。。。一般都是分多次查詢,或者通過緩存系統(tǒng)拿空間換時間,怎么玩?比如微博一個用戶發(fā)文章,不做文章表,所有文章放在user的下面,每個user下面都是自己的,那么查詢起來就是查user就OK。)
對于一對多查詢,就是2里面提到的,已經(jīng)知道庫了,那么具體查詢方案我們還是多次查詢。
對于多對多,較簡單了,中間關系建立好,比以前多對多查詢較簡單了。這會還是一對多查詢。
以上就是我們對于分庫分表的解決方案。其實分庫分表非常簡單。我一個人搞了一個月吧。。。
如果你需要電商,B2B2C商城系統(tǒng),并且支持分布式、分庫分表,可以聯(lián)系我探討。
其實有N多解決方案,較好是團隊討論,較方便溝通,文章也不能全部說出來,我寫的過程遇到過N多有意思的事情以及各個框架急需提供對于擴展大數(shù)據(jù)量的問題。。。
無錫紅豬網(wǎng)絡科技有限公司專注于java,b2b2c,多用戶商城等
詞條
詞條說明
其實集群說起來是很簡單的,無非就是server部署在多臺機器上,DB、session、文件等在做個機器、CDN加速就OK了。但是實際上需要做的事還有非常多,并且在過程中需要填非常多的坑。這里說一個很多人都不太了解的,就是虛擬IP,比如你訪問,多少年還是那個IP,并且?guī)缀鯖]有掛過。這個IP就是虛擬IP,用戶不會實際訪問這臺服務器,這臺服務器是運營商提供的,用戶訪問后會通過各種技術手
較近公司要開發(fā)商城,讓我多方咨詢,最后看了很多,要不就是代碼、表字段注釋不全,要不就是bug多,要么就是文檔缺少,最后決定自己開發(fā)一套商城。下面是開發(fā)的一些心得體會,權且記錄下來,給自己做個記錄把。之**直都是在從事電商相關和互聯(lián)網(wǎng)金融開發(fā),處理過億級數(shù)據(jù)量,所以被目前這家公司看重。由于Java是開源的,較近幾年Hadoop等開源產品越來越成熟,而且是基于Java的,所以較終選擇Java最后后臺開
B2B2C商城系統(tǒng)解決方案,多種模式讓平臺運營較靈活多變
摘要: RedPigMall B2B2C綜合商城系統(tǒng)是專為企業(yè)級客戶研發(fā)支持多供貨商、多商戶店鋪入駐的綜合商城平臺,集團購、電商零售、批發(fā)于一體,提供給供應商商品售賣服務,對用戶提供購買服務,支持運營、聯(lián)營、招商等多種運營模式,讓企業(yè)低成本快速構建在線商城,開啟電子商... RedPigMall B2B2C綜合商城系統(tǒng)是專為企業(yè)級客戶研發(fā)支持多供貨商、多商戶店鋪入駐的綜合商城平臺,集團購、電商零售
(十一)Java springcloud B2B2C o2o多用戶商城 springcloud架構- - SSO單點登錄之OAuth2.0登錄流程(2)
之前寫了很多關于spring cloud的文章,今天我們對OAuth2.0的整合方式做一下筆記,首先我從網(wǎng)上找了一些關于OAuth2.0的一些基礎知識點,幫助大家回顧一下知識點:?一、oauth中的角色client:調用資源服務器API的應用Oauth 2.0 Provider:包括Authorization Server和Resource Server(1)Authorization
公司名: 無錫紅豬網(wǎng)絡科技有限公司
聯(lián)系人: 周慶達
電 話:
手 機: 17503009512
微 信: 17503009512
地 址: 江蘇無錫濱湖區(qū)222號
郵 編: 123123
網(wǎng) 址: redpigmall.b2b168.com
公司名: 無錫紅豬網(wǎng)絡科技有限公司
聯(lián)系人: 周慶達
手 機: 17503009512
電 話:
地 址: 江蘇無錫濱湖區(qū)222號
郵 編: 123123
網(wǎng) 址: redpigmall.b2b168.com
¥300000.00
生產企業(yè) 河北創(chuàng)新的設備運行維護管理解決方案
¥12800.00
¥1386.00
嘉科科技PCB板行業(yè)質量追溯系統(tǒng)定制開發(fā)
¥300000.00
¥10000.00