TDDL鍔ㄦ佹暟鎹簮涓昏鍒嗕負2灞?姣忎竴灞傞兘瀹炵幇浜?strong style="word-wrap: break-word;">jdbc瑙勮寖,浠ユ柟渚垮湴闆嗘垚鍒板悇縐峯rm妗嗘灦鎴栬呯洿鎺ヤ嬌鐢?姣忎竴灞傞兘鍚勫徃鍏惰亴.
鏁翠綋緇撴瀯濡備笂鍥?TGroupDataSource(tddl group ds)榛樿鎯呭喌涓嬩緷璧?strong style="word-wrap: break-word;">TAtomDataSource(tddl atom ds),浣嗘槸鍙互鎵╁睍渚濊禆鏅氭暟鎹簮.榪欎竴灞備富瑕佺殑鑱岃矗鏄В鍐寵鍐欏垎紱諱互鍙婁富澶囧垏鎹㈢殑闂,褰撶劧鏄湪綰挎墽琛岃繖浜涘姩浣?鏃犻渶閲嶅惎.涓涓猅GroupDataSource搴曚笅浼氭寕澶氫釜TAtomDataSource,姣忎釜TAtomDataSource閮芥湁鐩稿搴旂殑璇誨啓鏉冮噸.
TAtomDataSource(tddl atom ds)榪欎竴灞傚茍娌℃湁瀹炵幇鐪熸鐨勬暟鎹簮閫昏緫,鑰屾槸渚濊禆浜嗕竴涓繎浼肩涓夋柟鐨勫寘-鎴戜滑浠?/strong>jboss鍓ョ鍑烘潵鐨刣atasource,榪欎竴灞傜殑鑱岃矗涓昏鏄皢鍗曚釜鏁版嵁婧愮殑閰嶇疆鏀劇疆鍒癲iamond鏈嶅姟鍣ㄤ腑,瀹炵幇鏁版嵁婧愰厤緗殑闆嗕腑綆$悊鍜屽姩鎬佸彉鏇?鍑忓皯榪愮淮鎴愭湰. TAtomDataSource瀹為檯瀵瑰簲浜嗕竴涓湡姝g殑鏁版嵁婧?
Tddl鍔ㄦ佹暟鎹簮鏆傛椂鏀寔mysql鍜宱racle ,浣嗘槸鍥犱負姣忎竴灞傞兘鏄痡dbc鐨勫疄鐜?鎵浠ュ緢瀹規槗鎵╁睍鏀寔鍏朵粬瀹炵幇jdbc瑙勮寖鐨勬暟鎹簮.
(1) 涓誨鏁版嵁搴撳姩鎬佸鐏懼垏鎹?/p>
鏀寔榪涜涓誨鐨勫璋冨垏鎹紝鐘舵佸璋冨悗澶囧簱鍙樹負涓誨簱錛屼富搴撳彉涓哄搴?/p>
(2) 鐩稿悓鏁版嵁鍒嗙墖璇誨啓鍒嗙
閽堝mysql replication鏈哄埗榪涜鐨勬暟鎹富澶囧鍒訛紝鍙互鐩存帴浣跨敤group datasource鏉ユ敮鎸佽鍐欏垎紱匯傝鍐欏垎紱繪敮鎸佹潈閲嶈緗紝鍏佽瀵逛笉鍚屽簱浣跨敤涓嶅悓鐨勬潈閲嶃?/p>
(3) 璇婚噸璇?/p>
涓鍙版暟鎹簱鎸傛帀鍚庯紝濡傛灉鏄釜fatal exception(鏈夊畾涔?錛岄偅涔堜細榪涘叆璇婚噸璇曪紝浠ョ‘淇濆敖鍙兘澶氱殑鏁版嵁璁塊棶鍙互鍦ㄦ甯告暟鎹簱涓闂?/p>
(4) 鏁版嵁搴撴寕鎺夋帓闄?鍗曠嚎紼嬮噸璇?/p>
浣跨敤try – lock鏈哄埗鏉ヨ繘琛岀嚎紼嬩繚鎶わ紝鍦ㄧ涓嬈℃崟鎹夊埌fatal exception浠ュ悗錛屽彧鍏佽涓涓嚎紼嬭繘鍏ユ暟鎹簱榪涜鏁版嵁璁塊棶錛岀洿鍒版暟鎹簱鍙互姝e父鐨勫伐浣滀負姝?/p>
(5) 嫻侀噺鎺у埗,鏁版嵁搴撲繚鎶?/p>
(1) 鎸囧畾鏁版嵁搴撹闂?ThreadLocal)
涓緇勫絳夋暟鎹簱涓?鍐欏簱涓鑸彧閰嶇疆涓涓?鍏朵綑鏁版嵁搴撻兘涓哄搴?鍥犱負閫氳繃澶嶅埗鏈哄埗,鎵浠ヤ富澶囦富閿湁寤惰繜,瀵逛簬鍚勭綾誨瀷鐨勮(瀹炴椂璇誨拰寤惰繜璇?,鍙互浣跨敤GroupDataSourceRouteHelper.executeByGroupDataSourceIndex(int dataSourceIndex)鎸囧畾闇瑕佽闂殑鏁版嵁搴?
(2) 鎸囧畾鏁版嵁搴撹闂?Hint)
榪欐槸鎸囧畾鏁版嵁搴撹闂殑鍙﹀涓縐嶆柟寮? 榪欑鏂瑰紡鏄湪sql涔嬪墠鍔犳敞閲?鍛婄煡tddl鍔ㄦ佹暟鎹簮璇ラ夋嫨絎嚑涓暟鎹簱.綾諱技: /*+TDDL_GROUP({groupIndex:0})*/select * from normaltbl_0001 where pk = ? 鍙樺夠groupIndex鐨勬暟瀛楀嵆鍙寚瀹氬叿浣撶殑絎嚑涓簱,浠?寮濮?
(1) 鏁版嵁婧愰厤緗泦涓鎺?/p>
(2) 瀹氭湡瀵嗙爜鍙樻洿
(3) Jboss鏁版嵁婧愯繛鎺ユ睜鐨勯厤緗鐞嗗拰鎺ㄩ?/p>
(1) 鍔ㄦ佸垱寤猴紝娣誨姞錛屽噺灝戞暟鎹簮
(2) 鏁版嵁搴揜,W,NA鐘舵侀氱煡錛屼互鍙婅鍐欒闂帶鍒訛紝濡傜疆涓篘A鍒欐暟鎹簱鎵鏈夎闂細鐩存帴鎶涘嚭SQLException
(3) 鏁版嵁搴撲繚鎶?/p>
Tddl鐨勫姩鎬佹暟鎹簮閰嶇疆閮芥斁緗湪diamond閰嶇疆涓績,鑰屼竴鏉iamond閰嶇疆鍖呮嫭涓涓叏灞鍞竴鐨刣ataId鍜孏ROUP, tddl鐨勯厤緗暟鎹篃涓嶄緥澶?浠ヤ笅涓昏璇存槑tddl鍔ㄦ佹暟鎹簮鐨刣ataId鎷煎啓浠ュ強姣忎竴涓猟ataId涓嬫暟鎹殑鍐呭.(璇︾粏紺轟緥璇峰弬鑰冪ず渚嬩嬌鐢ㄨ鏄庢枃妗?
Group涓殑閰嶇疆涓昏鏄厤緗竴緇勫絳夌殑鏁版嵁鐨勮鍐欐潈閲?/p>
dataId緇勬垚瑙勮寖:“com.taobao.tddl.jdbc.group_V2.4.1_”+dbGroupKey
閰嶇疆鍐呭(紺轟緥):tddl_sample_0:r10w10p0,tddl_sample_0_bac:r10w0p0
鍏朵腑tddl_sample_0鍜宼ddl_sample_0_bak灝辨槸涓嬩竴灞傞渶瑕佺殑dbKey,鍚庨潰r涓鴻鏉冮噸錛寃涓哄啓鏉冮噸
atom ds涓殑閰嶇疆鍒嗕負浜?閮ㄥ垎錛坓lobal,app,user錛?閰嶇疆鍐呭鍏ㄩ儴涓簀ava鐨刾roperties鏍煎紡
Global
dataId緇勬垚瑙勮寖: “com.taobao.tddl.atom.global.”+dbKey
閰嶇疆鍐呭錛?/p>
灞炴ey | 璇存槑 |
ip | 鏁版嵁瀹炰緥鐨刬p |
port | 鏁版嵁瀹炰緥鐨勭鍙?/td> |
dbname | 鏁版嵁搴撳悕縐?/td> |
dbType | MYSQL,ORACLE |
dbStatus | RW,NA |
App
dataId緇勬垚瑙勮寖: “com.taobao.tddl.atom.app.”+appName+”.”+dbKey
閰嶇疆鍐呭錛?/p>
灞炴ey | 璇存槑 |
username | 璇ュ簲鐢ㄤ嬌鐢ㄧ殑鐢ㄦ埛鍚?/td> |
oracleConType | oci,thin,濡傛灉db涓簃ysql,鍒欎笉鐢ㄧ悊浼?/td> |
minPoolSize | 鏈灝忚繛鎺ユ睜 |
maxPoolSize | 鏈澶ц繛鎺ユ睜 |
idleTimeout | 榪炴帴鐨勬渶澶х┖闂叉椂闂?/td> |
blockingTimeout | 絳夊緟榪炴帴鐨勬渶澶ф椂闂?/td> |
preparedStatementCacheSize | Oracle涓撶敤 |
writeRestrictTimes | 鍗曚綅timeSliceInMillis鍐欓檺鍒訛紝榛樿絀轟笉闄愬埗 |
readRestrictTimes | 鍗曚綅timeSliceInMillis璇婚檺鍒訛紝榛樿絀轟笉闄愬埗 |
threadCountRestrict | 騫跺彂綰跨▼闄愬埗錛岄粯璁ょ┖涓嶉檺鍒?/td> |
timeSliceInMillis | 闄愬埗鐨勬椂闂村崟浣?/td> |
connectionProperties | 榪炴帴鍙傛暟 |
User
dataId緇勬垚瑙勮寖: “com.taobao.tddl.atom.passwd.”+dbName+”.”+dbType+”.”+userName
閰嶇疆鍐呭錛?/p>
灞炴ey | 璇存槑 |
encPasswd | 瀵嗙爜 |
encKey | 瀵嗛挜 |
Presto 褰撳墠鏀寔 ANSI SQL 鐨勫ぇ澶氭暟鐗規晥錛屽寘鎷仈鍚堟煡璇€佸乏鍙寵仈鎺ャ佸瓙鏌ヨ浠ュ強涓浜涜仛鍚堝拰璁$畻鍑芥暟錛涙敮鎸佽繎浼兼埅鐒朵笉鍚岀殑璁℃暟(DISTINCT COUNT)絳夈?/p>
浣犲彲浠ラ氳繃涓嬮潰鍦板潃浜嗚В璇ラ」鐩鎯呭拰鑾峰彇浠g爜錛?/p>
鍘熸枃閾炬帴錛?a style="color: #004276;">http://www.oschina.net/news/45706/facebook-open-sources-presto-homegrown-sql-query-engine