亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

題庫分庫分表架構(gòu)方案

kohoh_ / 900人閱讀

摘要:個人博客地址方案項(xiàng)目背景在現(xiàn)在題庫架構(gòu)下,針對新購買的多道數(shù)據(jù)進(jìn)行整合,不影響現(xiàn)有功能。數(shù)據(jù)切分盡量通過數(shù)據(jù)冗余或表分組來降低跨庫的可能。

個人博客地址 https://www.texixi.com/2019/0...
方案 項(xiàng)目背景

在現(xiàn)在題庫架構(gòu)下,針對新購買的1300W多道數(shù)據(jù)進(jìn)行整合,不影響現(xiàn)有功能。由于數(shù)據(jù)量偏多,需要進(jìn)行數(shù)據(jù)的切分

目標(biāo)場景

兼容舊的功能

對1300多W數(shù)據(jù)進(jìn)行分庫分表

需要對舊的數(shù)據(jù)進(jìn)行整合

老師端選題組卷 可以根據(jù) 學(xué)段、學(xué)科、知識點(diǎn)、難度、題型 來篩選

學(xué)生端根據(jù)老師端所選題目獲取對應(yīng)的題目

對3年內(nèi)以后擴(kuò)展的增量數(shù)據(jù)預(yù)留數(shù)量空間

數(shù)據(jù)樣例
學(xué)段 數(shù)據(jù)量
小學(xué) 1285336
初中 6655780
高中 6144072
學(xué)段學(xué)科 數(shù)據(jù)量
初中數(shù)學(xué) 1869524
初中化學(xué) 1356224
初中英語 288440
切分方案一

切分為3個庫, 分別是小學(xué)、初中、高中 數(shù)據(jù)占比如上

每個庫切分10個表 根據(jù) (學(xué)科+首級知識點(diǎn))%10

每個庫一個總表

缺點(diǎn):例:用到不同知識點(diǎn)時,需要多表獲取數(shù)據(jù)

優(yōu)點(diǎn):數(shù)據(jù)分布較為平均

切分方案二 (采用)

切分為3個庫, 分別是小學(xué)、初中、高中 數(shù)據(jù)占比如上

每個庫切分10個表(全部10個學(xué)科) 根據(jù) 學(xué)科區(qū)分, 例: 數(shù)學(xué)表、物理表

每個庫一個總表

缺點(diǎn):數(shù)據(jù)不大平均, 數(shù)據(jù)量多的例數(shù)學(xué)有186W多、英語28W多

優(yōu)點(diǎn):當(dāng)有用到組卷等需要篩選多知識點(diǎn)題目時,不用多表查詢

數(shù)據(jù)id 自增區(qū)間劃分

小學(xué) 1-2億

中學(xué) 2-3億

高中 3億起

關(guān)聯(lián)關(guān)系圖

根據(jù)知識點(diǎn)獲取題目流程

自增id

對原有的id區(qū)間段不做處理

對切分后的id自增段進(jìn)行規(guī)劃

兼容舊功能
解決的問題

新舊數(shù)據(jù)有重復(fù)的知識點(diǎn)、題目

新舊數(shù)據(jù)的結(jié)構(gòu)不一樣

對舊的題庫功能代碼的修改

兩套題庫合并主鍵沖突問題

兼容舊功能 方案一 (個人推薦)

有操作的舊的數(shù)據(jù)洗入新的結(jié)構(gòu),舊的數(shù)據(jù)只為兼容原有的功能數(shù)據(jù),不做顯示。

優(yōu)點(diǎn):
不用變動數(shù)據(jù)結(jié)構(gòu),最新的購買的數(shù)據(jù)結(jié)構(gòu)較為清晰。 易維護(hù)擴(kuò)展,因?yàn)槟壳芭f的數(shù)據(jù)已經(jīng)整合了兩套數(shù)據(jù)

缺點(diǎn):
需要修改全部舊有的功能代碼(針對新的數(shù)據(jù)結(jié)構(gòu))

兼容舊功能 方案二

把新購買的數(shù)據(jù)整合進(jìn)老的數(shù)據(jù)結(jié)構(gòu),同時保留三批數(shù)據(jù),需要處理所有表的主鍵沖突、三批各表數(shù)據(jù)去重

優(yōu)點(diǎn):

舊有代碼只修改數(shù)據(jù)結(jié)構(gòu)切分的部分,不用全部修改功能代碼

缺點(diǎn):

數(shù)據(jù)較亂,三套不同的數(shù)據(jù)同時存在數(shù)據(jù)庫

需要處理新的結(jié)構(gòu)整合進(jìn)舊的數(shù)據(jù)結(jié)構(gòu),同時需要處理主鍵沖突,

代碼上需要處理對應(yīng)的數(shù)據(jù)

問題點(diǎn)

測試環(huán)境和正式環(huán)境圖片存放在那里?100多G,上傳cdn需要幾十天時間,有4000多W張,目前cdn不支持打包上傳

解決方案:購買多帶帶服務(wù)器,主備,存放圖片

測試db 正式db 1300多w 目前占用100G左右, 需要存放空間

解決方案:測試環(huán)境新加硬盤,新加db實(shí)例端口3307,正式環(huán)境db存放在圖片服務(wù)器

代碼設(shè)計模式

采用適配器模式(原先的代碼結(jié)構(gòu)不變)

類圖

調(diào)研內(nèi)容 中間件MYCAT(未使用)
什么是MYCAT

一個徹底開源的,面向企業(yè)應(yīng)用開發(fā)的大數(shù)據(jù)庫集群

支持事務(wù)、ACID、可以替代MySQL的加強(qiáng)版數(shù)據(jù)庫

一個可以視為MySQL集群的企業(yè)級數(shù)據(jù)庫,用來替代昂貴的Oracle集群

一個融合內(nèi)存緩存技術(shù)、NoSQL技術(shù)、HDFS大數(shù)據(jù)的新型SQL Server

結(jié)合傳統(tǒng)數(shù)據(jù)庫和新型分布式數(shù)據(jù)倉庫的新一代企業(yè)級數(shù)據(jù)庫產(chǎn)品

一個新穎的數(shù)據(jù)庫中間件產(chǎn)品

MYCAT特性

==支持庫內(nèi)分表(1.6)==

==支持單庫內(nèi)部任意join,支持跨庫2表join,甚至基于caltlet的多表join==

支持全局序列號,解決分布式下的主鍵生成問題。

==分片規(guī)則豐富==,插件化開發(fā),易于擴(kuò)展。

基于Nio實(shí)現(xiàn),有效管理線程,解決高并發(fā)問題。

==支持通過全局表,ER關(guān)系的分片策略,實(shí)現(xiàn)了高效的多表join查詢==

支持分布式事務(wù)(弱xa)。

支持SQL黑名單、sql注入攻擊攔截

==支持MySQL、Oracle、DB2、SQL Server、PostgreSQL等DB的常見SQL語法==

==遵守Mysql原生協(xié)議==,跨語言,跨平臺,跨數(shù)據(jù)庫的通用中間件代理。

==基于心跳的自動故障切換,支持讀寫分離,支持MySQL主從,==以及galera cluster集群。

可以大幅降低開發(fā)難度,提升開發(fā)速度

具體看 mycat 官網(wǎng)

Mycat 注意事項(xiàng)

全局表一致性檢測 1.6版本開始支持(一致性的定時檢測)

分片 join(盡量避免使用 Left join 或 Right join,而用 Inner join)

Mycat 原理

應(yīng)用要面對很多個數(shù)據(jù)庫的時候,這個時候就需要對數(shù)據(jù)庫層做一個抽象,來管理這些數(shù)據(jù)庫,而最上面的應(yīng)用只需要面對一個數(shù)據(jù)庫層的抽象或者說數(shù)據(jù)庫中間件就好了,這就是Mycat的核心作用。

分片分析、路由分析、讀寫分離分析、緩存分析等,然后將此SQL發(fā)往后端的真實(shí)數(shù)據(jù)庫,并將返回的結(jié)果做適當(dāng)?shù)奶幚?,最終再返回給用戶。

Mycat 應(yīng)用場景

讀寫分離,配置簡單

分表分庫,對于超過1000萬的表進(jìn)行分片,最大支持1000億的單表分片

報表系統(tǒng),借助于Mycat的分表能力,處理大規(guī)模報表的統(tǒng)計

文章整理

應(yīng)用場景 那些適合,那些不適合 https://www.cnblogs.com/barry...

使用說明 https://juejin.im/post/59c325...

總表使用mysql MERGE 引擎(不考慮)

合并的表使用的必須是MyISAM引擎

表的結(jié)構(gòu)必須一致,包括索引、字段類型、引擎和字符集

對于增刪改查,直接操作總表即可。

數(shù)據(jù)切分原則

能不切分盡量不要切分。

如果要切分一定要選擇合適的切分規(guī)則,提前規(guī)劃好。

數(shù)據(jù)切分盡量通過數(shù)據(jù)冗余或表分組(Table Group)來降低跨庫 Join 的可能。

由于數(shù)據(jù)庫中間件對數(shù)據(jù) Join 實(shí)現(xiàn)的優(yōu)劣難以把握,而且實(shí)現(xiàn)高性能難度極大,業(yè)務(wù)讀取盡量少使用多表 Join。

盡可能的比較均勻分布數(shù)據(jù)到各個節(jié)點(diǎn)上

該業(yè)務(wù)字段是最頻繁的或者最重要的查詢條件。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/30062.html

相關(guān)文章

  • 金幣(積分)商城架構(gòu)漫談

    摘要:開篇金幣積分商城下稱商城是眾多內(nèi)的一個產(chǎn)品,隨著使用的用戶越來越多,商城對于用戶留存的提升,扮演著重要的角色做為提高用戶黏性的核心產(chǎn)品,在擁有很好用戶體驗(yàn)的同時,也必須存在著一個高效穩(wěn)定的系統(tǒng)。分析上述兩點(diǎn),得到結(jié)論按用戶進(jìn)行分庫分表。 開篇 金幣(積分)商城(下稱商城)是眾多App內(nèi)的一個產(chǎn)品,隨著App使用的用戶越來越多,商城對于用戶留存的提升,扮演著重要的角色;做為提高用戶黏性的...

    Ethan815 評論0 收藏0
  • 【最全】Java 進(jìn)階面試總結(jié)

    摘要:這里有一份面試題相關(guān)總結(jié),涉及高并發(fā)分布式高可用相關(guān)知識點(diǎn),在此分享給大家,希望大家能拿到一份理想的知識點(diǎn)會陸續(xù)更新在上,覺得還算湊和的話可以關(guān)注一下噢高并發(fā)架構(gòu)消息隊列為什么使用消息隊列消息隊列有什么優(yōu)點(diǎn)和缺點(diǎn)都有什么優(yōu)點(diǎn)和缺點(diǎn)如何保證消 這里有一份面試題相關(guān)總結(jié),涉及高并發(fā)、分布式、高可用相關(guān)知識點(diǎn),在此分享給大家,希望大家能拿到一份理想的 Offer! 知識點(diǎn)會陸續(xù)更新在 Git...

    nifhlheimr 評論0 收藏0
  • 數(shù)據(jù)庫的分庫分表

    摘要:如成千上萬的螞蟻完成一項(xiàng)搬運(yùn)工作縱向擴(kuò)展又叫垂直擴(kuò)展,擴(kuò)展一個點(diǎn)的能力支撐更大的請求。如利用個人的能力,如蜘蛛俠逼?;疖噮⒖挤謳旆直淼幕舅枷? 一 概念:什么是分庫分表(sharding) 1 將集中于單一節(jié)點(diǎn)的數(shù)據(jù)拆分并分別存儲到多個數(shù)據(jù)庫或表,稱為分庫分表 2 數(shù)據(jù)切分分為兩種方式,垂直切分和水平切分 3 分庫:因?yàn)楸矶鄬?dǎo)致數(shù)據(jù)過多使用垂直切分,垂直切分就是根據(jù)業(yè)務(wù)的耦合性,將關(guān)聯(lián)...

    elarity 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<