1. 程式人生 > >資料庫中介軟體——MyCat

資料庫中介軟體——MyCat

第一章 概述

11 資料庫切分概述

1-1-1 OLTP和OLAP

聯機事務處理(OLTP)也稱為面向交易的處理系統,其基本特徵是原始資料可以立即傳送到計算中心進行處理,並在很短的時間內給出處理結果。
聯機分析處理(OLAP)是指通過多維的方式對資料進行分析、查詢和報表,可以同資料探勘工具、統計分析
工具配合使用,增強決策分析功能。

1-1-2 關係型資料庫和NoSQL資料庫

0 關係型資料庫 NoSQL 資料庫
特點 -資料關係模型基於關係模型,結構化儲存,完整性約束。-基於二維表及其之間的聯絡,需要連線、並、交、差、除等資料操作。-採用結構化的查詢語言(SQL)做資料讀寫。-操作需要資料的一致性,需要事務甚至是強一致性。
    非結構化的儲存。- 基於多維關係模型。- 具有特有的使用場景。
優點
    保持資料的一致性(事務處理)- 可以進行 join 等複雜查詢。- 通用化,技術成熟。
    高併發,大資料下讀寫能力較強。- 基本支援分散式,易於擴充套件,可伸縮。- 簡單,弱結構化儲存。
缺點
    資料讀寫必須經過 sql 解析,大量資料、高併發下讀寫效能不足。- 對資料做讀寫,或修改資料結構時需要加鎖,影響併發操作。- 無法適應非結構化儲存。- 擴充套件困難。- 昂貴、複雜。
    join 等複雜操作能力較弱。- 事務支援較弱。- 通用性差。- 無完整約束複雜業務場景支援較差。

1-1-3 資料切分

資料的切分(Sharding)根據其切分規則的型別,可以分為兩種切分模式。一種是按照不同的表(或者
Schema)來切分到不同的資料庫(主機)之上,這種切可以稱之為資料的垂直(縱向)切分;另外一種則是根據
表中的資料的邏輯關係,將同一個表中的資料按照某種條件拆分到多臺資料庫(主機)上面,這種切分稱之為資料的水平(橫向)切分

垂直切分優缺點:

優點 缺點
    拆分後業務清晰,拆分規則明確。- 系統之間整合或擴充套件容易。- 資料維護簡單。
    部分業務表無法 join,只能通過介面方式解決,提高了系統複雜度。- 受每種業務不同的限制存在單庫效能瓶頸,不易資料擴充套件跟效能提高。- 事務處理複雜。

水平切分優缺點:

優點 缺點
    拆分規則抽象好,join 操作基本可以資料庫做。- 不存在單庫大資料,高併發的效能瓶頸。- 應用端改造較少。- 提高了系統的穩定性跟負載能力。
    拆分規則難以抽象。- 分片事務一致性難以解決。- 資料多次擴充套件難度跟維護量極大。- 跨庫 join 效能較差。

共同的缺點:

  • 引入分散式事物的問題。
  • 跨節點join的問題。
  • 跨節點合併排序分頁問題。
  • 多資料來源管理問題。

針對資料來源管理,目前有兩種思路:
1. 客戶端模式,在每個應用程式模組中配置管理自己需要的一個(或者多個)資料來源,直接訪問各個資料庫,在模組內完成資料的整合。
2. 通過中間代理層來統一管理所有的資料來源,後端資料庫叢集對前端應用程式透明。

由於資料切分後資料join的難度,關於資料切分的經驗:
- 第一原則:能不切分儘量不要切分
- 第二原則:如果要切分一定要選擇合適的切分規則,提前規劃好。
- 第三原則:資料切分儘量通過資料冗餘或表分組(Table Group)來降低跨庫join的可能。
- 第四原則:由於資料庫中介軟體對資料join實現的優劣難以把握,而且實現高效能難度極大,業務讀取儘量少使用多表join。

第二章 MyCat簡介

2-1 MyCat概述

Mycat 背後是阿里曾經開源的知名產品——Cobar。Cobar 的核心功能和優勢是 MySQL 資料庫分片。

2-1-1 MyCat原理

Mycat 的原理中最重要的一個動詞是“攔截”,它攔截了使用者傳送過來的 SQL 語句,首先對 SQL 語句做了
一些特定的分析:如分片分析、路由分析、讀寫分離分析、快取分析等,然後將此 SQL 發往後端的真實資料庫,
並將返回的結果做適當的處理,最終再返回給使用者。
myCat查詢過程

執行過程:
上述圖片裡,Orders 表被分為三個分片 datanode(簡稱 dn),這三個分片是分佈在兩臺 MySQL Server 上
(DataHost),即 [email protected] 方式,因此你可以用一臺到 N 臺伺服器來分片,分片規則為
(sharding rule)典型的字串列舉分片規則,一個規則的定義是分片欄位(sharding column)+分片函式(rule
function),這裡的分片欄位為 prov 而分片函式為字串列舉方式。

當 Mycat 收到一個 SQL 時,會先解析這個 SQL,查詢涉及到的表,然後看此表的定義,如果有分片規則,
則獲取到 SQL 裡分片欄位的值,並匹配分片函式,得到該 SQL 對應的分片列表,然後將 SQL 發往這些分片去執
行,最後收集和處理所有分片返回的結果資料,並輸出到客戶端。以 select * from Orders where prov=?語句為
例,查到 prov=wuhan,按照分片函式,wuhan 返回 dn1,於是 SQL 就發給了 MySQL1,去取 DB1 上的查詢
結果,並返回給使用者。

如果上述 SQL 改為 select * from Orders where prov in (‘wuhan’,‘beijing’),那麼,SQL 就會發給
MySQL1與MySQL2 去執行,然後結果集合並後輸出給使用者。但通常業務中我們的 SQL 會有Order By 以及Limit 翻頁語法,此時就涉及到結果集在 Mycat 端的二次處理,這部分的程式碼也比較複雜,而最複雜的則屬兩個表的 Jion 問題,

為此,Mycat 提出了創新性的 ER 分片全域性表、**HBT(Human Brain Tech)人工智慧的
Catlet**、以及結合 Storm/Spark 引擎等十八般武藝的解決辦法,從而成為目前業界最強大的方案,這就是開源的力量!

2-1-2 應用場景

  • 單純的讀寫分離,此時配置最為簡單,支援讀寫分離,主從切換
  • 分表分庫,對於超過1000萬的表進行分片,最大支援1000億的單表分片
  • 多租戶應用,每個應用一個庫,但應用程式
  • 報表系統,藉助於Mycat的分表能力,處理大規模報表的統計
  • 替代Hbase,分析大資料
  • 作為海量資料實時查詢的一種簡單有效方案,比如100億條頻繁查詢的記錄需要在3秒內查詢出來結果,除了基於主鍵的查詢,還可能存在範圍查詢或其他屬性查詢

第三章 MyCat中的概念

3-1 資料庫中介軟體

MyCat是一個開源的分散式資料庫系統,但是它並沒有儲存引擎,並不是完全意義的分散式資料庫系統,MyCat是資料庫中介軟體,就是介於資料庫與應用之間,進行資料處理與互動的中間服務。

MyCat原理

如上圖所表示,資料被分到多個分片資料庫後,應用如果需要讀取資料,就要需要處理多個數據源的資料。
如果沒有資料庫中介軟體,那麼應用將直接面對分片叢集,資料來源切換、事務處理、資料聚合都需要應用直接處
理,原本該是專注於業務的應用,將會花大量的工作來處理分片後的問題,最重要的是每個應用處理將是完全的
重複造輪子。

所以有了資料庫中介軟體,應用只需要集中與業務處理,大量的通用的資料聚合,事務,資料來源切換都由中介軟體來處理,中介軟體的效能與處理能力將直接決定應用的讀寫效能,所以一款好的資料庫中介軟體至關重要。

3-2 邏輯庫(schema)

在雲端計算時代,資料庫中介軟體可以以多租戶的形式給一個或多個應用提供服務,每個應用訪問的可能是一個
獨立或者是共享的物理庫,常見的如阿里雲資料庫伺服器 RDS。

MyCat邏輯庫

3-3 邏輯表(table)

3-3-1 邏輯表

邏輯表,可以是資料切分後,分佈在一個或多個分片庫中,也可以不做資料切分,不分片,只有一個表構成。

3-3-2 分片表

分片表,是指那些原有的很大資料的表,需要切分到多個數據庫的表,這樣,每個分片都有一部分資料,所以由分片構成了完整的資料。

例如在mycat配置中的t_node就屬於分片表,資料按照規則被分到dn1,dn2兩個分片節點(dataNode)上。

<table name="t_node" primaryKey="vid" autoIncrement="true" dataNode="dn1,dn2" rule="rule1" />

3-3-3 非分片表

一個數據庫中並不是所有的表都很大,某些表是可以不用進行切分的,非分片是相對分片表來說的,就是那
些不需要進行資料切分的表。

如下配置中t_node,只存在於分片節點(dataNode)dn1上。

<table name="t_node" primaryKey="vid" autoIncrement="true" dataNode="dn1" />

3-3-4 ER表

關係型資料庫是基於實體關係模型(Entity-Relationship Model)之上,通過其描述了真實世界中事物與關係,Mycat 中的 ER 表即是來源於此。根據這一思路,提出了基於 E-R 關係的資料分片策略,子表的記錄與所關聯的父表記錄存放在同一個資料分片上,即子表依賴於父表,通過表分組(Table Group)保證資料 Join 不會跨庫操作。

3-3-5 全域性表

一個真實的業務系統中,往往存在大量的類似字典表的表,這些表基本上很少變動,字典表具有以下幾個特
性:
- 變動不頻繁
- 資料量總體變化不大
- 資料規模不大,很少有超過數十萬條記錄。

對於這類的表,在分片的情況下,當業務表因為規模而進行分片以後,業務表與這些附屬的字典表之間的關
聯,就成了比較棘手的問題,所以 Mycat中通過資料冗餘來解決這類表的join,即所有的分片都有一份資料的拷貝,所有將字典表或者符合字典表特性的一些表定義為全域性表

3-4 分片節點(dataNode)

資料切分後,一個大表被分到不同的分片資料庫上面,每個表分片所在的資料庫就是分片節點(dataNode)。

3-5 節點主機(dataHost)

資料切分後,每個分片節點(dataNode)不一定都會獨佔一臺機器,同一機器上面可以有多個分片資料庫,
這樣一個或多個分片節點(dataNode)所在的機器就是節點主機(dataHost),為了規避單節點主機併發數限
制,儘量將讀寫壓力高的分片節點(dataNode)均衡的放在不同的節點主機(dataHost)。

3-6 分片規則

前面講了資料切分,一個大表被分成若干個分片表,就需要一定的規則,這樣按照某種業務規則把資料分到
某個分片的規則就是分片規則,資料切分選擇合適的分片規則非常重要,將極大的避免後續資料處理的難度。

3-7 全域性序列號(sequence)

資料切分後,原有的關係資料庫中的主鍵約束在分散式條件下將無法使用,因此需要引入外部機制保證資料
唯一性標識,這種保證全域性性的資料唯一標識的機制就是全域性序列號(sequence)。

3-8 多租戶

多租戶技術或稱多重租賃技術,是一種軟體架構技術,它是在探討與實現如何於多使用者的環境下共用相同的系統或程式元件,並且仍可確保各使用者間資料的隔離性。在雲端計算時代,多租戶技術在共用的資料中心以單一系統架構與服務提供多數客戶端相同甚至可定製化的服務,並且仍然可以保障客戶的資料隔離。目前各種各樣的雲端計算服務就是這類技術範疇,例如阿里雲資料庫服務(RDS)、阿里雲伺服器等等。多租戶在資料儲存上存在三種主要的方案,分別是:

3-8-1 獨立資料庫

一個租戶一個數據庫,這種方案的使用者資料隔離級別最高,安全性最好,但成本也高。

優點:

  • 為不同的租戶提供獨立的資料庫,有助於簡化資料模型的擴充套件設計,滿足不同租戶的獨特需求;
  • 如果出現故障,恢復資料比較簡單。

缺點:

  • 增大了資料庫的安裝數量,隨之帶來維護成本和購置成本的增加。

這種方案與傳統的一個客戶、一套資料、一套部署類似,差別只在於軟體統一部署在運營商那裡。如果面對
的是銀行、醫院等需要非常高資料隔離級別的租戶,可以選擇這種模式,提高租用的定價。如果定價較低,產品
走低價路線,這種方案一般對運營商來說是無法承受的。

3-8-2 共享資料庫,隔離資料架構

多個或所有租戶共享 Database,但是每個租戶一個 Schema。

優點:

  • 為安全性要求較高的租戶提供了一定程度的邏輯資料隔離,並不是完全隔離;每個資料庫可以支援更多的租
    戶數量。

缺點:

  • 如果出現故障,資料恢復比較困難,因為恢復資料庫將牽扯到其他租戶的資料;
  • 如果需要跨租戶統計資料,存在一定困難。

3-8-3 共享資料庫,共享資料架構

租戶共享同一個 Database、同一個Schema,但在表中通過 TenantID 區分租戶的數
據。這是共享程度最高、隔離級別最低的模式。

優點:

  • 三種方案比較,第三種方案的維護和購置成本最低,允許每個資料庫支援的租戶數量最多。

缺點:
- 隔離級別最低,安全性最低,需要在設計開發時加大對安全的開發量;
- 資料備份和恢復最困難,需要逐表逐條備份和還原。

第四章 MyCat安裝

4-1 配置檔案

conf目錄下存放配置檔案:
- server.xml是MyCat伺服器引數調整和使用者授權的配置檔案
- schema.xml是邏輯庫定義和表以及分片定義的配置檔案
- rule.xml是分片規則的配置檔案

日誌存放在logs/mycat.log中,每天一個檔案,日誌的配置在conf/log4j.xml中,根據自己的需要,可以調整輸出級別為debug,debug級別下,會輸出更多的資訊,方便排查問題。

4-2 schema.xml

schema標籤

schema標籤用於定義MyCat例項中的邏輯庫,MyCat可以有多個邏輯庫,每個邏輯庫都有自己的相關配置,可以使用schema標籤來劃分這些不同的邏輯庫。

<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100"></schema>
屬性值 描述
dataNode 用於繫結邏輯庫到某個具體的database上
checkSQLschema row 2 col 2
sqlMaxLimit 當該值設定為某個數值時。每條執行的 SQL 語句,如果沒有加上 limit 語句,MyCat 也會自動的加上所對應的值。需要注意的是,如果執行的 schema 為非拆分庫的,那麼該屬性不會生效。需要手動新增 limit 語句。

table標籤

<table name="travelrecord" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" ></table>
屬性值 描述
name 邏輯表的表名
dataNode 節點名稱
rule 規則名稱
ruleRequired 是否繫結分片規則
primaryKey 該邏輯表對應的真實表的主建
type 邏輯表的型別:全域性表:global;普通表
autoIncrement 自動增長主建
subTables
needAddLimit 指定表是否需要自動的在每個語句後面加上limit限制
childTable 用於定義E-R分片的子表,通過標籤上的屬性與父表進行關聯

dataNode標籤

dataNode標籤定義了MyCat中的資料節點,即資料分片,一個dataNode標籤就是一個獨立的資料分片

<dataNode name="dn1" dataHost="lch3307" database="db1" ></dataNode>

dataHost標籤

作為 Schema.xml 中最後的一個標籤,該標籤在 mycat 邏輯庫中也是作為最底層的標籤存在,直接定義了具體的資料庫例項讀寫分離配置心跳語句

4-3 server.xml

server.xml 幾乎儲存了所有 mycat 需要的系統配置資訊。其在程式碼內直接的對映類為 SystemConfig 類。

user標籤

用於定義登入 mycat 的使用者和許可權

system標籤

這個標籤內巢狀的所有 property 標籤都與系統配置有關

rule.xml

rule.xml 裡面就定義了我們對錶進行拆分所涉及到的規則定義。

第五章 MyCat的分片join

第六章 MyCat防火牆配置

白名單和SQL黑名單:

<firewall>
 <whitehost>
  <host user="mycat" host="127.0.0.1"></host> ip 白名單 使用者對應的可以訪問的 ip 地址
 </whitehost>
 <blacklist check="true">
  <property name="selelctAllow">false</property> 黑名單允許的 許可權 後面為預設
 </blacklist>
</firewall>

黑名單攔截明細配置

配置項 預設值 描述
selelctAllow true 是否允許執行 SELECT 語句
selectAllColumnAllow true 是否允許執行 SELECT * FROM T 這樣的語句。
selectIntoAllow true SELECT 查詢中是否允許 INTO 字句
deleteAllow true 是否允許執行 DELETE 語句
updateAllow true 是否允許執行 UPDATE 語句
insertAllow true 是否允許執行 INSERT 語句
replaceAllow true 是否允許執行 REPLACE 語句
mergeAllow true 是否允許執行 MERGE語句,這個只在 Oracle 中有用
callAllow true 是否允許通過 jdbc 的 call 語法呼叫儲存過程
setAllow true 是否允許使用 SET 語法
truncateAllow true truncate 語句是危險,預設開啟,若需要自行關閉
createTableAllow true 是否允許建立表
alterTableAllow true 是否允許執行 Alter Table 語句
dropTableAllow true 是否允許修改表
commentAllow false 是否允許語句中存在註釋,Oracle 的使用者不用擔心,Wall 能夠識別 hints和註釋的區別
noneBaseStatementAllow false 是否允許非以上基本語句的其他語句,預設關閉,通過這個選項就能夠遮蔽 DDL。
multiStatementAllow false 是否允許一次執行多條語句,預設關閉
useAllow true 是否允許執行 mysql 的 use 語句,預設開啟
describeAllow true 是否允許執行 mysql 的 describe 語句,預設開啟
showAllow true 是否允許執行 mysql 的 show 語句,預設開啟
commitAllow true 是否允許執行 commit 操作
rollbackAllow true 是否允許執行 roll back 操作

攔截配置 - 永真條件

配置項 預設值 描述
selectWhereAlwayTrueCheck true 檢查 SELECT 語句的 WHERE 子句是否是一個永真條件
selectHavingAlwayTrueCheck true 檢查 SELECT 語句的 HAVING 子句是否是一個永真條件
deleteWhereAlwayTrueCheck true 檢查 DELETE 語句的 WHERE 子句是否是一個永真條件
deleteWhereNoneCheck false 檢查 DELETE 語句是否無 where 條件,這是有風險的,但不是 SQL 注入型別的風險
updateWhereAlayTrueCheck true 檢查 UPDATE 語句的 WHERE 子句是否是一個永真條件
updateWhereNoneCheck false 檢查 UPDATE 語句是否無 where 條件,這是有風險的,但不是SQL 注入型別的風險
conditionAndAlwayTrueAllow false 檢查查詢條件(WHERE/HAVING 子句)中是否包含 AND 永真條件
conditionAndAlwayFalseAllow false 檢查查詢條件(WHERE/HAVING 子句)中是否包含 AND 永假條件
conditionLikeTrueAllow true 檢查查詢條件(WHERE/HAVING 子句)中是否包含 LIKE 永真條件

其他攔截配置

配置項 預設值 描述
selectIntoOutfileAllow false SELECT … INTO OUTFILE 是否允許,這個是 mysql 注入攻擊的常見手段,預設是禁止的
selectUnionCheck true 檢測 SELECT UNION
selectMinusCheck true 檢測 SELECT MINUS
selectExceptCheck true 檢測 SELECT EXCEPT
selectIntersectCheck true 檢測 SELECT INTERSECT
mustParameterized false 是否必須引數化,如果為 True,則不允許類似 WHERE ID = 1 這種不引數化的 SQL
strictSyntaxCheck true 是否進行嚴格的語法檢測,Druid SQL Parser 在某些場景不能覆蓋所有的SQL 語法,出現解析 SQL 出錯,可以臨時把這個選項設定為 false,同時把 SQL 反饋給 Druid 的開發者。
conditionOpXorAllow false 查詢條件中是否允許有 XOR 條件。XOR 不常用,很難判斷永真或者永假,預設不允許。
conditionOpBitwseAllow true 查詢條件中是否允許有”&”、”~”、”
conditionDoubleConstAllow false 查詢條件中是否允許連續兩個常量運算表示式
minusAllow true 是否允許 SELECT * FROM A MINUS SELECT * FROM B 這樣的語句
intersectAllow true 是否允許 SELECT * FROM A INTERSECT SELECT * FROM B 這樣的語句
constArithmeticAllow true 攔截常量運算的條件,比如說 WHERE FID = 3 - 1,其中”3 - 1”是常量運算表示式。
limitZeroAllow false 是否允許 limit 0 這樣的語句

禁用物件檢測配置

配置項 預設值 描述
tableCheck true 檢測是否使用了禁用的表
schemaCheck true 檢測是否使用了禁用的 Schema
functionCheck true 檢測是否使用了禁用的函式
objectCheck true 檢測是否使用了“禁用對物件”
variantCheck true 檢測是否使用了“禁用的變數”
readOnlyTables 指定的表只讀,不能夠在 SELECT INTO、DELETE、UPDATE、INSERT、MERGE 中作為”被修改表”出現

相關推薦

開源資料庫中介軟體- MyCat 學習筆記

1、簡介        MyCat 曾是阿里開源產品Cobar,Cobar核心功能和優勢是 MySQL 資料庫分片。Mycat 是基於 cobar 演變而來,對 cobar 的程式碼進行了徹底的重構,使用 NIO 重構了網路模組,並且優化了 Buffer

資料庫中介軟體-mycat快速入門

準備工作 下載以後的檔案目錄結構如下: 快速入門 配置mycat/conf的server.xml <user name="root"> <property name="password"&

資料庫中介軟體MyCat(二)-mysql實現主從複製

前言:          我們考慮到一些大型的資料庫資料庫讀寫分離對於大型系統或者訪問量很高的網際網路應用來說,是必不可少的一個重要功能。從資料庫的角度來說,對於大多數應用來說,從集中到分佈,最基本的一個需求不是資料儲存的瓶頸,而是在於計算的

資料庫中介軟體MyCat(一)

一.開源資料庫中介軟體MyCat 1.簡介: 如今隨著網際網路的發展,資料的量級也是成指數的增長,從 GB 到 TB 到 PB。對資料的各種操作也是愈加的困難,傳統的關係性資料庫已經無法滿足快速查詢與插入資料的需求。這個時候 NoSQL 的出現暫時解決了這一危機。它通過降低資料的安全性,

分庫分表學習總結(2)——資料庫中介軟體MyCat學習總結之MyCat-Web原理介紹

Mycat是一個分庫分表的基於java開發的資料庫中介軟體,使用過程中需要有一個監控系統,mycat-web應運而生。mycat-web是一個使用SpringMVC + Mybatis的監控平臺,使用常用的監控系統協議SNMP-簡單網路管理協議(Simple Network

資料庫中介軟體——MyCat

第一章 概述 11 資料庫切分概述 1-1-1 OLTP和OLAP 聯機事務處理(OLTP)也稱為面向交易的處理系統,其基本特徵是原始資料可以立即傳送到計算中心進行處理,並在很短的時間內給出處理結果。 聯機分析處理(OLAP)是指通過多維的

資料庫中介軟體---Mycat入門

入門宣言:不怕從零開始,只怕從未開始。 2013 年阿里的 Cobar 在社群使用過程中發現存在一些比較嚴重的問題,及其使用限制,經過 Mycat 發 人第一次改良,第一代改良版——Mycat 誕生。 Mycat 開源以後,一些 Cobar 的使用者

分散式資料庫中介軟體 MyCat 搞起來!

關於 MyCat 的鋪墊文章已經寫了三篇了: MySQL 只能做小專案?鬆哥要說幾句公道話! 北冥有 Data,其名為鯤,鯤之大,一個 MySQL 放不下! What?Tomcat 竟然也算中介軟體? 今天終於可以迎接我們的大 Boss 出場了! MyCat 簡介 前面文章我們提到,如果資料量比較大的話

手把手帶你用資料庫中介軟體Mycat+SpringBoot完成分庫分表

一、背景 隨著時間和業務的發展,資料庫中的資料量增長是不可控的,庫和表中的資料會越來越大,隨之帶來的是更高的磁碟、IO、系統開

資料庫中介軟體MyCat

什麼是MyCat? 檢視官網的介紹是這樣說的 一個徹底開源的,面向企業應用開發的大資料庫叢集 支援事務、A

分散式資料庫中介軟體 MyCat | 分庫分表實踐

### MyCat 簡介 `MyCat` 是一個功能強大的分散式資料庫中介軟體,是一個實現了 `MySQL` 協議的 `Server`,前端人員可以把它看做是一個數據庫代理中介軟體,用 `MySQL` 客戶端工具和命令列訪問;而後端人員可以用 `MySQL` 原生協議與多個 `MySQL` 伺服器通訊,也可

資料庫路由中介軟體MyCat - 使用篇(3)上篇

此文已由作者張鎬薪授權網易雲社群釋出。 歡迎訪問網易雲社群,瞭解更多網易技術產品運營經驗。 全域性序列號 資料切分後,原有的關係資料庫中的主鍵約束在分散式條件下將無法使用,因此需要引入外部機制保證資料唯一性標識,這種保證全域性性的資料唯一標識的機制就是全域性序列號(sequence)。 1. 本地檔案方式 c

資料庫路由中介軟體MyCat - 使用篇(3)下篇

此文已由作者張鎬薪授權網易雲社群釋出。 歡迎訪問網易雲社群,瞭解更多網易技術產品運營經驗。 2. 配置conf/server.xml server.xml幾乎儲存了所有mycat需要的系統配置資訊。其在程式碼內直接的對映類為SystemConfig類。 參考完整配置: <?xml versi

資料庫路由中介軟體MyCat - 使用篇(6)

此文已由作者張鎬薪授權網易雲社群釋出。 歡迎訪問網易雲社群,瞭解更多網易技術產品運營經驗。 配置MyCat 4. 配置schema.xml schema.xml裡面管理著MyCat的邏輯庫、表,每張表使用的分片規則、分佈在哪個DataNode以及DataSource上。 之前的例子: ```xml<

資料庫路由中介軟體MyCat - 原始碼篇(2)

此文已由作者張鎬薪授權網易雲社群釋出。 歡迎訪問網易雲社群,瞭解更多網易技術產品運營經驗。 2. 前端連線建立與認證 Title:MySql連線建立以及認證過程client->MySql:1.TCP連線請求  MySql->client:2.接受TCP連線client->MySq

MyCat:開源分散式資料庫中介軟體

為什麼需要MyCat? 雖然雲端計算時代,傳統資料庫存在著先天性的弊端,但是NoSQL資料庫又無法將其替代。如果傳統資料易於擴充套件,可切分,就可以避免單機(單庫)的效能缺陷。 MyCat的目標就是:低成本地將現有的單機資料庫和應用平滑遷移到“雲”端,解決資料儲存和業務規模迅速

資料庫路由中介軟體MyCat - 原始碼篇(3)

此文已由作者張鎬薪授權網易雲社群釋出。 歡迎訪問網易雲社群,瞭解更多網易技術產品運營經驗。 2. 前端連線建立與認證 Title:MySql連線建立以及認證過程client->MySql:1.TCP連線請求  MySql->client:2.接受TCP連線client->MySql

資料庫路由中介軟體MyCat - 原始碼篇(8)

此文已由作者張鎬薪授權網易雲社群釋出。 歡迎訪問網易雲社群,瞭解更多網易技術產品運營經驗。 3. 連線模組 3.5 後端連線 對於後端連線,我們只關心MySQL的。 從後端連線工廠開始MySQLConnectionFactory.java: public MySQLConnection 

資料庫路由中介軟體MyCat - 原始碼篇(7)

此文已由作者張鎬薪授權網易雲社群釋出。 歡迎訪問網易雲社群,瞭解更多網易技術產品運營經驗。 3. 連線模組 3.4 FrontendConnection前端連線 構造方法: public FrontendConnection(NetworkChannel channel) th

資料庫路由中介軟體MyCat - 原始碼篇(10)

此文已由作者張鎬薪授權網易雲社群釋出。 歡迎訪問網易雲社群,瞭解更多網易技術產品運營經驗。 3. 連線模組 3.5 後端連線 3.5.2 後端連接獲取與維護管理 還是那之前的流程, st=>start: MyCat接受客戶端連線併為之建立唯一繫結的Session e=>end: