規(guī)定使用date類(lèi)型。
成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),海南企業(yè)網(wǎng)站建設(shè),海南品牌網(wǎng)站建設(shè),網(wǎng)站定制,海南網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,海南網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿(mǎn)足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專(zhuān)業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶(hù)成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
1.單擊桌面上的“ManagementStudio”圖標(biāo)。
2.然后,在界面中,單擊左上角面板角落的“newquery”選項(xiàng)。
3.然后在這個(gè)接口中,輸入SQL語(yǔ)句“
創(chuàng)建表test3(idINTNOTNULL,nameNVARCHAR(50),datetypeDATE,PRIMARYKEY(id));.
4.然后在界面中,點(diǎn)擊左上角的“execute”按鈕。
5.最后,在這個(gè)界面中顯示成功創(chuàng)建的日期類(lèi)型的權(quán)重?cái)?shù)據(jù)。
Date 類(lèi)型就是年月日的,DateTime 類(lèi)型是年月日時(shí)分秒的,其實(shí)也可以定義成varchar類(lèi)型的,插入格式由程序控制,比如說(shuō)2014-10-16.
以每24小時(shí)作為一份時(shí)間(而非自然日),根據(jù)用戶(hù)的配置有兩種工作模式:帶狀模式中,用戶(hù)僅定義開(kāi)始日期時(shí),從開(kāi)始日期(含)開(kāi)始,每份時(shí)間1個(gè)分片地?zé)o限增加下去;環(huán)狀模式中,用戶(hù)定義了開(kāi)始日期和結(jié)束日期時(shí),以結(jié)束日期(含)和開(kāi)始日期(含)之間的時(shí)間份數(shù)作為分片總數(shù)(分片數(shù)量固定),以類(lèi)似取模的方式路由到這些分片里。
1. DBLE 啟動(dòng)時(shí),讀取用戶(hù)在 rule.xml 配置的 sBeginDate 來(lái)確定起始時(shí)間
2. 讀取用戶(hù)在 rule.xml 配置的 sPartionDay 來(lái)確定每個(gè) MySQL 分片承載多少天內(nèi)的數(shù)據(jù)
3. 讀取用戶(hù)在 rule.xml 配置的 dateFormat 來(lái)確定分片索引的日期格式
4. 在 DBLE 的運(yùn)行過(guò)程中,用戶(hù)訪(fǎng)問(wèn)使用這個(gè)算法的表時(shí),WHERE 子句中的分片索引值(字符串),會(huì)被提取出來(lái)嘗試轉(zhuǎn)換成 Java 內(nèi)部的時(shí)間類(lèi)型
5. 然后求分片索引值與起始時(shí)間的差,除以 MySQL 分片承載的天數(shù),確定所屬分片
1. DBLE 啟動(dòng)時(shí),讀取用戶(hù)在 rule.xml 配置的起始時(shí)間 sBeginDate、終止時(shí)間 sEndDate 和每個(gè) MySQL 分片承載多少天數(shù)據(jù) sPartionDay
2. 根據(jù)用戶(hù)設(shè)置,建立起以 sBeginDate 開(kāi)始,每 sPartionDay 天一個(gè)分片,直到 sEndDate 為止的一個(gè)環(huán),把分片串聯(lián)串聯(lián)起來(lái)
3. 讀取用戶(hù)在 rule.xml 配置的 defaultNode
4. 在 DBLE 的運(yùn)行過(guò)程中,用戶(hù)訪(fǎng)問(wèn)使用這個(gè)算法的表時(shí),WHERE 子句中的分片索引值(字符串),會(huì)被提取出來(lái)嘗試轉(zhuǎn)換成 Java 內(nèi)部的日期類(lèi)型
5. 然后求分片索引值與起始日期的差:如果分片索引值不早于 sBeginDate(哪怕晚于 sEndDate),就以 MySQL 分片承載的天數(shù)為模數(shù),對(duì)分片索引值求模得到所屬分片;如果分片索引值早于 sBeginDate,就會(huì)被放到 defaultNode 分片上
與MyCat的類(lèi)似分片算法對(duì)比
中間件
DBLE
MyCat
分片算法種類(lèi) date 分區(qū)算法 按日期(天)分片
兩種中間件的取模范圍分片算法使用上無(wú)差別
開(kāi)發(fā)注意點(diǎn)
【分片索引】1. 必須是字符串,而且 java.text.SimpleDateFormat 能基于用戶(hù)指定的 dateFormat 來(lái)轉(zhuǎn)換成 java.util.Date
【分片索引】2. 提供帶狀模式和環(huán)狀模式兩種模式
【分片索引】3. 帶狀模式以 sBeginDate(含)起,以 86400000 毫秒(24 小時(shí)整)為一份,每 sPartionDay 份為一個(gè)分片,理論上分片數(shù)量可以無(wú)限增長(zhǎng),但是出現(xiàn) sBeginDate 之前的數(shù)據(jù)而且沒(méi)有設(shè)定 defaultNode 的話(huà),會(huì)路由失敗(如果有 defaultNode,則路由至 defaultNode)
【分片索引】4. 環(huán)狀模式以 86400000 毫秒(24 小時(shí)整)為一份,每 sPartionDay 份為一個(gè)分片,以 sBeginDate(含)到 sEndDate(含)的時(shí)間長(zhǎng)度除以單個(gè)分片長(zhǎng)度得到恒定的分片數(shù)量,但是出現(xiàn) sBeginDate 之前的數(shù)據(jù)而且沒(méi)有設(shè)定 defaultNode 的話(huà),會(huì)路由失?。ㄈ绻?defaultNode,則路由至 defaultNode)
【分片索引】5. 無(wú)論哪種模式,分片索引字段的格式化字符串 dateFormat 由用戶(hù)指定
【分片索引】6. 無(wú)論哪種模式,劃分不是以日歷時(shí)間為準(zhǔn),無(wú)法對(duì)應(yīng)自然月和自然年,且會(huì)受閏秒問(wèn)題影響
運(yùn)維注意點(diǎn)
【擴(kuò)容】1. 帶狀模式中,隨著 sBeginDate 之后的數(shù)據(jù)出現(xiàn),分片數(shù)量的增加無(wú)需再平衡
【擴(kuò)容】2. 帶狀模式?jīng)]有自動(dòng)增添分片的能力,需要運(yùn)維手工提前增加分片;如果路由策略計(jì)算出的分片并不存在時(shí),會(huì)導(dǎo)致失敗
【擴(kuò)容】3. 環(huán)狀模式中,如果新舊 [sBeginDate,sEndDate] 之間有重疊,需要進(jìn)行部分?jǐn)?shù)據(jù)遷移;如果新舊 [sBeginDate,sEndDate] 之間沒(méi)有重疊,需要數(shù)據(jù)再平衡
配置注意點(diǎn)
【配置項(xiàng)】1. 在 rule.xml 中,可配置項(xiàng)為 propertyname="sBeginDate" 、 propertyname="sPartionDay" 、 propertyname="dateFormat" 、 propertyname="sEndDate" 和 propertyname="defaultNode"
【配置項(xiàng)】2.在 rule.xml 中配置 propertyname="dateFormat",符合 java.text.SimpleDateFormat 規(guī)范的字符串,用于告知 DBLE 如何解析sBeginDate和sEndDate
【配置項(xiàng)】3.在 rule.xml 中配置 propertyname="sBeginDate",必須是符合 dateFormat 的日期字符串
【配置項(xiàng)】4.在 rule.xml 中配置 propertyname="sEndDate",必須是符合 dateFormat 的日期字符串;配置了該項(xiàng)使用的是環(huán)狀模式,若沒(méi)有配置該項(xiàng)則使用的是帶狀模式
【配置項(xiàng)】5.在 rule.xml 中配置 propertyname="sPartionDay",非負(fù)整數(shù),該分片策略以 86400000 毫秒(24 小時(shí)整)作為一份,而 sPartionDay 告訴 DBLE 把每多少份放在同一個(gè)分片
【配置項(xiàng)】6.在 rule.xml 中配置 propertyname="defaultNode" 標(biāo)簽,非必須配置項(xiàng),不配置該項(xiàng)的話(huà),用戶(hù)的分片索引值沒(méi)落在 mapFile 定義