¡¾±àÕß°´¡¿Êý¾Ý¿â·Ö¿â·Ö±í´Ó»¥ÁªÍøÊ±´ú¿ªÆôÖÁ½ñ£¬Ò»Ö±ÊÇÈÈÃÅ»°Ìâ¡£ÔÚNoSQLºáÐеĽñÌ죬¹ØÏµÐÍÊý¾Ý¿âƾ½èÆäÎȶ¨¡¢²éѯÁé»î¡¢¼æÈݵÈÌØÐÔ£¬ÈÔ±»´ó¶àÊý¹«Ë¾×÷ΪÊ×Ñ¡Êý¾Ý¿â¡£Òò´Ë£¬ºÏÀí²ÉÓ÷ֿâ·Ö±í¼¼ÊõÓ¦¶Ôº£Á¿Êý¾ÝºÍ¸ß²¢·¢¶ÔÊý¾Ý¿âµÄ³å»÷£¬ÊǸ÷´ó»¥ÁªÍø¹«Ë¾²»¿É±ÜÃâµÄÎÊÌâ¡£
ËäÈ»ºÜ¶à¹«Ë¾¶¼ÖÂÁ¦ÓÚ¿ª·¢×Ô¼ºµÄ·Ö¿â·Ö±íÖмä¼þ£¬µ«½ØÖ¹Ä¿Ç°£¬ÈÔÎÞÍêÃÀµÄ¿ªÔ´½â¾ö·½°¸¸²¸Ç´ËÁìÓò¡£
·Ö¿â·Ö±íÊÊÓó¡¾°
·Ö¿â·Ö±íÓÃÓÚÓ¦¶Ôµ±Ç°»¥ÁªÍø³£¼ûµÄÁ½¸ö³¡¾°¡ª¡ª´óÊý¾ÝÁ¿ºÍ¸ß²¢·¢¡£Í¨³£·ÖΪ´¹Ö±²ð·ÖºÍˮƽ²ð·ÖÁ½ÖÖ¡£
´¹Ö±²ð·ÖÊǸù¾ÝÒµÎñ½«Ò»¸ö¿â£¨±í£©²ð·ÖΪ¶à¸ö¿â£¨±í£©¡£È磺½«¾³£ºÍ²»³£·ÃÎʵÄ×ֶβð·ÖÖÁ²»Í¬µÄ¿â»ò±íÖС£ÓÉÓÚÓëÒµÎñ¹ØÏµÃÜÇУ¬Ä¿Ç°µÄ·Ö¿â·Ö±í²úÆ·¾ùʹÓÃˮƽ²ð·Ö·½Ê½¡£
ˮƽ²ð·ÖÔòÊǸù¾Ý·ÖƬËã·¨½«Ò»¸ö¿â£¨±í£©²ð·ÖΪ¶à¸ö¿â£¨±í£©¡£È磺°´ÕÕIDµÄ×îºóһλÒÔ3È¡Ó࣬βÊýÊÇ1µÄ·ÅÈëµÚ1¸ö¿â£¨±í£©£¬Î²ÊýÊÇ2µÄ·ÅÈëµÚ2¸ö¿â£¨±í£©µÈ¡£
¹ØÏµÐÍÊý¾Ý¿âÔÚ´óÓÚÒ»¶¨Êý¾ÝÁ¿µÄÇé¿öϼìË÷ÐÔÄܻἱ¾çϽµ¡£ÔÚÃæ¶Ô»¥ÁªÍøº£Á¿Êý¾ÝÇé¿öʱ£¬ËùÓÐÊý¾Ý¶¼´æÓÚÒ»ÕÅ±í£¬ÏÔÈ»»áÇáÒ׳¬¹ýÊý¾Ý¿â±í¿É³ÐÊܵÄÊý¾ÝÁ¿·§Öµ¡£Õâ¸öµ¥±í¿É³ÐÊܵÄÊý¾ÝÁ¿·§Öµ£¬Ðè¸ù¾ÝÊý¾Ý¿âºÍ²¢·¢Á¿µÄ²îÒ죬ͨ¹ýʵ¼Ê²âÊÔ»ñµÃ¡£
µ¥´¿µÄ·Ö±íËäÈ»¿ÉÒÔ½â¾öÊý¾ÝÁ¿¹ý´óµ¼Ö¼ìË÷±äÂýµÄÎÊÌ⣬µ«ÎÞ·¨½â¾ö¹ý¶à²¢·¢ÇëÇó·ÃÎÊͬһ¸ö¿â£¬µ¼ÖÂÊý¾Ý¿âÏìÓ¦±äÂýµÄÎÊÌâ¡£ËùÒÔͨ³£Ë®Æ½²ð·Ö¶¼ÖÁÉÙÒª²ÉÓ÷ֿâµÄ·½Ê½£¬ÓÃÓÚÒ»²¢½â¾ö´óÊý¾ÝÁ¿ºÍ¸ß²¢·¢µÄÎÊÌâ¡£ÕâÒ²ÊDz¿·Ö¿ªÔ´µÄ·ÖƬÊý¾Ý¿âÖмä¼þÖ»Ö§³Ö·Ö¿âµÄÔÒò¡£
µ«·Ö±íÒ²Óв»¿ÉÌæ´úµÄÊÊÓó¡¾°¡£×î³£¼ûµÄ·Ö±íÐèÇóÊÇÊÂÎñÎÊÌ⡣ͬÔÚÒ»¸ö¿âÔò²»Ð迼ÂÇ·Ö²¼Ê½ÊÂÎñ£¬ÉÆÓÚʹÓÃͬ¿â²»Í¬±í¿ÉÓÐЧ±ÜÃâ·Ö²¼Ê½ÊÂÎñ´øÀ´µÄÂé·³¡£Ä¿Ç°Ç¿Ò»ÖÂÐԵķֲ¼Ê½ÊÂÎñÓÉÓÚÐÔÄÜÎÊÌ⣬µ¼ÖÂʹÓÃÆðÀ´²¢²»Ò»¶¨±È²»·Ö¿â·Ö±í¿ì¡£Ä¿Ç°²ÉÓÃ×îÖÕÒ»ÖÂÐÔµÄÈáÐÔÊÂÎñ¾Ó¶à¡£·Ö±íµÄÁíÒ»¸ö´æÔÚµÄÀíÓÉÊÇ£¬¹ý¶àµÄÊý¾Ý¿âʵÀý²»ÀûÓÚÔËά¹ÜÀí¡£×ÛÉÏËùÊö£¬×î¼Ñʵ¼ùÊǺÏÀíµØÅäºÏʹÓ÷ֿâ+·Ö±í¡£
Sharding-JDBC¼ò½é
Sharding-JDBCÊǵ±µ±Ó¦Óÿò¼ÜddframeÖУ¬´Ó¹ØÏµÐÍÊý¾Ý¿âÄ£¿édd-rdbÖзÖÀë³öÀ´µÄÊý¾Ý¿âˮƽ·ÖƬ¿ò¼Ü£¬ÊµÏÖ͸Ã÷»¯Êý¾Ý¿â·Ö¿â·Ö±í·ÃÎÊ¡£Sharding-JDBCÊǼÌdubboxºÍelastic-jobÖ®ºó£¬ddframeϵÁпªÔ´µÄµÚ3¸öÏîÄ¿¡£
Sharding-JDBCÖ±½Ó·â×°JDBC API£¬¿ÉÒÔÀí½âΪÔöÇ¿°æµÄJDBCÇý¶¯£¬¾É´úÂëÇ¨ÒÆ³É±¾¼¸ºõΪÁ㣺
- ¿ÉÊÊÓÃÓÚÈκλùÓÚJavaµÄORM¿ò¼Ü£¬ÈçJPA¡¢Hibernate¡¢Mybatis¡¢Spring JDBC Template»òÖ±½ÓʹÓÃJDBC¡£
- ¿É»ùÓÚÈκεÚÈý·½µÄÊý¾Ý¿âÁ¬½Ó³Ø£¬ÈçDBCP¡¢C3P0¡¢ BoneCP¡¢DruidµÈ¡£
- ÀíÂÛÉÏ¿ÉÖ§³ÖÈÎÒâʵÏÖJDBC¹æ·¶µÄÊý¾Ý¿â¡£ËäȻĿǰ½öÖ§³ÖMySQL£¬µ«ÒÑÓÐÖ§³ÖOracle¡¢SQLServerµÈÊý¾Ý¿âµÄ¼Æ»®¡£
Sharding-JDBC¶¨Î»ÎªÇáÁ¿Java¿ò¼Ü£¬Ê¹Óÿͻ§¶ËÖ±Á¬Êý¾Ý¿â£¬ÒÔjar°üÐÎʽÌṩ·þÎñ£¬ÎÞproxy´úÀí²ã£¬ÎÞÐè¶îÍⲿÊð£¬ÎÞÆäËûÒÀÀµ£¬DBAÒ²ÎÞÐè¸Ä±äÔÓеÄÔËά·½Ê½¡£
Sharding-JDBC·ÖƬ²ßÂÔÁé»î£¬¿ÉÖ§³ÖµÈºÅ¡¢between¡¢inµÈ¶àά¶È·ÖƬ£¬Ò²¿ÉÖ§³Ö¶à·ÖƬ¼ü¡£
SQL½âÎö¹¦ÄÜÍêÉÆ£¬Ö§³Ö¾ÛºÏ¡¢·Ö×é¡¢ÅÅÐò¡¢limit¡¢orµÈ²éѯ£¬²¢Ö§³ÖBinding TableÒÔ¼°µÑ¿¨¶û»ý±í²éѯ¡£
Óë³£¼û¿ªÔ´²úÆ·¶Ô±È
ΪÁË¶ÔÆäËû¿ªÔ´ÏîÄ¿±íʾ×ðÖØ£¬ÎÒÃÇÎÞÒâÆÀÂÛĿǰÈÔÔÚ¸üÐÂÖеÄÏîÄ¿¡£ÕâÀï½öÁгöĿǰֹͣ¸üУ¬µ«ÈÔÈ»ÔÚÊý¾Ý¿â·ÖƬÁìÓò·Ç³£ÓÐÓ°ÏìÁ¦µÄ¼¸¸öÏîÄ¿£¬Çë²Î¼û±í1¡£
±í1 Êý¾Ý¿â·ÖƬ¹¤¾ß¶Ô±È
ͨ¹ýÒÔÉϱí¸ñ¿ÉÒÔ¿´³ö£¬CobarÊôÓÚÖмä²ã·½°¸£¬ÔÚÓ¦ÓóÌÐòºÍMySQLÖ®¼ä´î½¨Ò»²ãProxy¡£Öмä²ã½éÓÚÓ¦ÓóÌÐòÓëÊý¾Ý¿â¼ä£¬ÐèÒª×öÒ»´Îת·¢£¬¶ø»ùÓÚJDBCÐÒé²¢ÎÞ¶îÍâת·¢£¬Ö±½ÓÓÉÓ¦ÓóÌÐòÁ¬½ÓÊý¾Ý¿â£¬ÐÔÄÜÉÏÓÐЩÐíÓÅÊÆ¡£ÕâÀï²¢·Ç˵Ã÷Öмä²ãÒ»¶¨²»Èç¿Í»§¶ËÖ±Á¬£¬³ýÁËÐÔÄÜ£¬ÐèÒª¿¼ÂǵÄÒòËØ»¹Óкܶ࣬Öмä²ã¸ü±ãÓÚʵÏÖ¼à¿Ø¡¢Êý¾ÝÇ¨ÒÆ¡¢Á¬½Ó¹ÜÀíµÈ¹¦ÄÜ¡£
Cobar-Client¡¢TDDLºÍSharding-JDBC¾ùÊôÓÚ¿Í»§¶ËÖ±Á¬·½°¸¡£´Ë·½°¸µÄÓÅÊÆÔÚÓÚÇá±ã¡¢¼æÈÝÐÔ¡¢ÐÔÄÜÒÔ¼°¶ÔDBAÓ°ÏìС¡£ÆäÖÐCobar-ClientµÄʵÏÖ·½Ê½»ùÓÚORM£¨Mybatis£©¿ò¼Ü£¬Æä¼æÈÝÐÔÓëÀ©Õ¹ÐÔ²»Èç»ùÓÚJDBCÐÒéµÄºóÁ½Õß¡£
ʵÏÖÔÀí
ǰÎÄÒѽéÉÜÁËSharding-JDBCÊÇʵÏÖÁËJDBCÐÒéµÄjarÎļþ¡£»ùÓÚJDBCÐÒéµÄʵÏÖÓë»ùÓÚMySQLµÈÊý¾Ý¿âÐÒéʵÏÖµÄÖмä²ãÂÔÓвî±ð¡£
ÎÞÂÛʹÓÃÄÄÖּܹ¹£¬ºËÐÄÂß¼¾ù¼«ÎªÏàËÆ£¬³ýÁËÐÒéʵÏֲ㲻ͬ£¨JDBC»òÊý¾Ý¿âÐÒ飩£¬¶¼»á·ÖΪ·ÖƬ¹æÔòÅäÖá¢SQL½âÎö¡¢SQL¸Äд¡¢SQL·ÓÉ¡¢SQLÖ´ÐÐÒÔ¼°½á¹û¹é²¢µÈÄ£¿é¡£
Sharding-JDBCµÄÕûÌå¼Ü¹¹Í¼²Î¼ûͼ1¡£
ͼ1 Sharding-JDBCµÄÕûÌå¼Ü¹¹Í¼
·ÖƬ¹æÔòÅäÖÃ
Sharding-JDBCµÄ·ÖƬÂß¼·Ç³£Áé»î£¬Ö§³Ö·ÖƬ²ßÂÔ×Ô¶¨Òå¡¢¸´Êý·ÖƬ¼ü¡¢¶àÔËËã·û·ÖƬµÈ¹¦ÄÜ¡£
È磺¸ù¾ÝÓû§ID·Ö¿â£¬¸ù¾Ý¶©µ¥ID·Ö±íÕâÖÖ·Ö¿â·Ö±í½áºÏµÄ·ÖƬ²ßÂÔ£»»ò¸ù¾ÝÄê·Ö¿â£¬Ô·Ý+Óû§ÇøÓòID·Ö±íÕâÑùµÄ¶àƬ¼ü·ÖƬ¡£
Sharding-JDBC³ýÁËÖ§³ÖµÈºÅÔËËã·û½øÐÐ·ÖÆ¬£¬»¹Ö§³Öin/betweenÔËËã·û·ÖƬ£¬ÌṩÁ˸ü¼ÓÇ¿´óµÄ·ÖƬ¹¦ÄÜ¡£
Sharding-JDBCÌṩÁËspringÃüÃû¿Õ¼äÓÃÓÚ¼ò»¯ÅäÖã¬ÒÔ¼°¹æÔòÒýÇæÓÃÓÚ¼ò»¯²ßÂÔ±àд¡£ÓÉÓÚĿǰ¸Õ¿ªÔ´·ÖƬºËÐÄÂß¼£¬ÕâÁ½¸öÄ£¿éÔÝδ¿ªÔ´£¬´ýºËÐÄÎȶ¨ºó½«»á¿ªÔ´ÆäËûÄ£¿é¡£
JDBC¹æ·¶ÖØÐ´
Sharding-JDBC¶ÔJDBC¹æ·¶µÄÖØÐ´Ë¼Â·ÊÇÕë¶ÔDataSource¡¢Connection¡¢Statement¡¢PreparedStatementºÍResultSetÎå¸öºËÐĽӿڷâ×°£¬½«¶à¸öÕæÊµJDBCʵÏÖÀ༯ºÏ£¨È磺MySQL JDBCʵÏÖ/DBCP JDBCʵÏֵȣ©ÄÉÈëSharding-JDBCʵÏÖÀà¹ÜÀí¡£
Sharding-JDBC¾¡Á¿×î´ó»¯ÊµÏÖJDBCÐÒ飬°üÀ¨addBatchÕâÖÖÔÚJPAÖлáʹÓõÄÅúÁ¿¸üй¦ÄÜ¡£µ«·ÖƬJDBC±Ï¾¹ÓëÔÉúJDBC²»Í¬£¬ËùÒÔĿǰÈÔÓÐδʵÏֵĽӿڣ¬°üÀ¨ConnectionÓα꣬´æ´¢¹ý³ÌºÍsavePointÏà¹Ø¡¢ResultSetÏòǰ±éÀúºÍÐ޸ĵȲ»Ì«³£ÓõŦÄÜ¡£´ËÍ⣬ΪÁ˱£Ö¤¼æÈÝÐÔ£¬²¢Î´ÊµÏÖJDBC 4.1¼°Æäºó·¢²¼µÄ½Ó¿Ú£¨È磺DBCP 1.x°æ±¾²»Ö§³ÖJDBC 4.1£©¡£
SQL½âÎö
SQL½âÎö×÷Ϊ·Ö¿â·Ö±íÀà²úÆ·µÄºËÐÄ£¬ÐÔÄܺͼæÈÝÐÔÊÇ×îÖØÒªµÄºâÁ¿Ö¸±ê¡£Ä¿Ç°³£¼ûµÄSQL½âÎöÆ÷Ö÷ÒªÓÐfdb/jsqlparserºÍDruid¡£Sharding-JDBCʹÓÃDruid×÷ΪSQL½âÎöÆ÷£¬¾Êµ¼Ê²âÊÔ£¬Druid½âÎöËÙ¶ÈÊÇÁíÍâÁ½¸ö½âÎöÆ÷µÄ¼¸Ê®±¶¡£
ĿǰSharding-JDBCÖ§³Öjoin¡¢aggregation£¨°üÀ¨avg£©¡¢order by¡¢ group by¡¢limit¡¢ÉõÖÁor²éѯµÈ¸´ÔÓSQLµÄ½âÎö¡£Ä¿Ç°²»Ö§³Öunion¡¢²¿·Ö×Ó²éѯ¡¢º¯ÊýÄÚ·ÖÆ¬µÈ²»Ì«Ó¦ÔÚ·ÖÆ¬³¡¾°ÖгöÏÖµÄSQL½âÎö¡£
SQL¸Äд
SQL¸Äд·ÖΪÁ½²¿·Ö£¬Ò»²¿·ÖÊǽ«·Ö±íµÄÂß¼±íÃû³ÆÌæ»»ÎªÕæÊµ±íÃû³Æ¡£ÁíÒ»²¿·ÖÊǸù¾ÝSQL½âÎö½á¹ûÌæ»»Ò»Ð©ÔÚ·ÖÆ¬»·¾³Öв»ÕýÈ·µÄ¹¦ÄÜ¡£ÕâÀï¾ßÁ½¸öÀý×Ó£º
µÚ1¸öÀý×ÓÊÇavg¼ÆËã¡£ÔÚ·ÖÆ¬µÄ»·¾³ÖУ¬ÒÔavg1 +avg2+avg3/3¼ÆËãÆ½¾ùÖµ²¢²»ÕýÈ·£¬ÐèÒª¸ÄдΪ£¨sum1+sum2+sum3£©/£¨count1+count2+ count3£©¡£Õâ¾ÍÐèÒª½«°üº¬avgµÄSQL¸ÄдΪsumºÍcount£¬È»ºóÔÙ½á¹û¹é²¢Ê±ÖØÐ¼ÆËãÆ½¾ùÖµ¡£
µÚ2¸öÀý×ÓÊÇ·ÖÒ³¡£¼ÙÉèÿ10ÌõÊý¾ÝΪһҳ£¬È¡µÚ2Ò³Êý¾Ý¡£ÔÚ·ÖÆ¬»·¾³Ï»ñÈ¡limit 10, 10£¬¹é²¢Ö®ºóÔÙ¸ù¾ÝÅÅÐòÌõ¼þÈ¡³öǰ10ÌõÊý¾ÝÊDz»ÕýÈ·µÄ½á¹û¡£ÕýÈ·µÄ×ö·¨Êǽ«·ÖÌõ¼þ¸ÄдΪlimit 0, 20£¬È¡³öËùÓÐǰ2Ò³Êý¾Ý£¬ÔÙ½áºÏÅÅÐòÌõ¼þËã³öÕýÈ·µÄÊý¾Ý¡£¿ÉÒÔ¿´µ½Ô½ÊÇ¿¿ºóµÄLimit·ÖҳЧÂʾͻáÔ½µÍ£¬Ò²Ô½ÀË·ÑÄÚ´æ¡£Óкܶ෽·¨¿É±ÜÃâʹÓÃlimit½øÐзÖÒ³£¬±ÈÈç¹¹½¨¼Ç¼ÐмǼÊýºÍÐÐÆ«ÒÆÁ¿µÄ¶þ¼¶Ë÷Òý£¬»òʹÓÃÉϴηÖÒ³Êý¾Ý½áβID×÷ΪÏ´βéѯÌõ¼þµÄ·ÖÒ³·½Ê½¡£
SQL·ÓÉ
SQL·ÓÉÊǸù¾Ý·ÖƬ¹æÔòÅäÖ㬽«SQL¶¨Î»ÖÁÕæÕýµÄÊý¾ÝÔ´¡£Ö÷Òª·ÖΪµ¥±í·ÓÉ¡¢Binding±í·Óɺ͵ѿ¨¶û»ý·ÓÉ¡£
µ¥±í·ÓÉ×îΪ¼òµ¥£¬µ«Â·Óɽá¹û²»Ò»¶¨ÂäÈëΨһ¿â£¨±í£©£¬ÒòΪ֧³Ö¸ù¾ÝbetweenºÍinÕâÑùµÄ²Ù×÷·û½øÐÐ·ÖÆ¬£¬ËùÒÔ×îÖÕ½á¹ûÈÔÈ»¿ÉÄÜÂäÈë¶à¸ö¿â£¨±í£©¡£
Binding±í¿ÉÀí½âΪ·Ö¿â·Ö±í¹æÔòÍêȫһÖµÄÖ÷´Ó±í¡£¾ÙÀý˵Ã÷£º¶©µ¥±íºÍ¶©µ¥ÏêÇé±í¶¼¸ù¾Ý¶©µ¥ID×÷Ϊ·ÖƬ¼ü£¬ÈÎÒâʱ¿Ì·ÖƬÂß¼¾ùÏàͬ¡£ÕâÑùµÄ¹ØÁª²éѯºÍµ¥±í²éѯÄѶȺÍÐÔÄÜÏ൱¡£
µÑ¿¨¶û»ý²éѯ×îΪ¸´ÔÓ£¬ÒòΪÎÞ·¨¸ù¾ÝBinding¹ØÏµ¶¨Î»·ÖƬ¹æÔòµÄÒ»ÖÂÐÔ£¬ËùÒÔ·ÇBinding±íµÄ¹ØÁª²éѯÐèÒª²ð½âΪµÑ¿¨¶û»ý×éºÏÖ´ÐС£²éѯÐÔÄܽϵͣ¬¶øÇÒÊý¾Ý¿âÁ¬½ÓÊý½Ï¸ß£¬Ðè½÷É÷ʹÓá£
SQLÖ´ÐÐ
·ÓÉÖÁÕæÊµÊý¾ÝÔ´ºó£¬Sharding-JDBC½«²ÉÓöàÏ̲߳¢·¢Ö´ÐÐSQL£¬²¢Íê³É¶ÔaddBatchµÈÅúÁ¿·½·¨µÄ´¦Àí¡£
½á¹û¹é²¢
½á¹û¹é²¢°üÀ¨4ÀࣺÆÕͨ±éÀúÀà¡¢ÅÅÐòÀà¡¢¾ÛºÏÀàºÍ·Ö×éÀࡣÿÖÖÀàÐͶ¼»áÏȸù¾Ý·ÖÒ³½á¹ûÌø¹ý²»ÐèÒªµÄÊý¾Ý¡£
ÆÕͨ±éÀúÀà×îΪ¼òµ¥£¬Ö»Ð谴˳Ðò±éÀúResultSetµÄ¼¯ºÏ¼´¿É¡£
ÅÅÐòÀà½á¹û½«½á¹ûÏÈÅÅÐòÔÙÊä³ö£¬ÒòΪ¸÷·ÖƬ½á¹û¾ù°´ÕÕ¸÷×ÔÌõ¼þÍê³ÉÅÅÐò£¬ËùÒÔ²ÉÓù鲢ÅÅÐòËã·¨ÕûºÏ×îÖÕ½á¹û¡£
¾ÛºÏÀà·ÖΪ3ÖÖÀàÐÍ£¬±È½ÏÐÍ¡¢ÀÛ¼ÓÐÍºÍÆ½¾ùÖµÐÍ¡£±È½ÏÐͰüÀ¨maxºÍmin£¬Ö»·µ»Ø×î´ó£¨Ð¡£©½á¹û¡£ÀÛ¼ÓÐͰüÀ¨sumºÍcount£¬ÐèÒª½«½á¹ûÀۼӺ󷵻ء£Æ½¾ùÖµÔòÊÇͨ¹ýSQL¸ÄдµÄsumºÍcount¼ÆË㣬Ïà¹ØÄÚÈÝÒÑÔÚSQL¸Äдº¸Ç£¬²»ÔÙ׸Êö¡£
·Ö×éÀà×îΪ¸´ÔÓ£¬ÐèÒª½«ËùÓеÄResultSet½á¹û·ÅÈëÄڴ棬ʹÓÃmap-reduceËã·¨·Ö×飬×îºó¸ù¾ÝÅÅÐòºÍ¾ÛºÏÌõ¼þ×öÏà¹Ø´¦Àí¡£×îÏûºÄÄڴ棬×îËðʧÐÔÄܵIJ¿·Ö¼´ÊÇ´Ë£¬¿ÉÒÔ¿¼ÂÇʹÓÃlimitºÏÀíµÄÏÞÖÆ·Ö×éÊý¾Ý´óС¡£
½á¹û¹é²¢²¿·ÖĿǰ²¢Î´²ÉÓùܵÀ½âÎöµÄ·½Ê½£¬Ö®ºó»áÕë¶ÔÕâÀï×ö¸ü¶à¸Ä½ø¡£
ÐÔÄÜ
·Óɽá¹ûÔÚµ¥¿âµ¥±íµÄÐÔÄܲâÊÔ±¨¸æ£º
²éѯ²Ù×÷£ºSharding-JDBCµÄTPSΪJDBCµÄTPSµÄ99.8%£»
²åÈë²Ù×÷£ºSharding-JDBCµÄTPSΪJDBCµÄTPSµÄ90.2%£»
¸üвÙ×÷£ºSharding-JDBCµÄTPSΪJDBCµÄTPSµÄ93.1%£»?
¿ÉÒÔ¿´µ½£¬Sharding-JDBCÐÔÄÜËðʧ·Ç³£µÍ¡£
·Óɽá¹ûÔÚ¶à¿â¶à±íµÄÐÔÄܲâÊÔ±¨¸æ£º
²éѯ²Ù×÷£ºTPSË«¿â±Èµ¥¿â¿ÉÒÔÔö¼Ó´óÔ¼94%µÄÐÔÄÜ£»?
²åÈë²Ù×÷£ºTPSË«¿â±Èµ¥¿â¿ÉÒÔÔö¼Ó´óÔ¼60%µÄÐÔÄÜ£»
¸üвÙ×÷£ºTPSË«¿â±Èµ¥¿â¿ÉÒÔÔö¼Ó´óÔ¼89%µÄÐÔÄÜ£»?
½á¹û±íÃ÷£¬Sharding-JDBC¿ÉÓÐЧÀûÓöàÏß³ÌÓë·Ö²¼Ê½×ÊÔ´´ó·ù¶ÈÌáÉýÐÔÄÜ£»?
¸ü¶àÏêϸÇé¿ö¿É²é¿´Sharding-JDBCµÄÐÔÄܲâÊÔ±¨¸æ¡£
Roadmap
ĿǰSharding-JDBC¼¯ÖÐÓÚ·Ö¿â·Ö±íºËÐÄÂß¼¿ª·¢£¬ÔÚ¹¦ÄÜÎȶ¨Ö®ºó½«»á°´ÕÕÈçÏÂÏß·³ÖÐø¸üУº
- ¶Áд·ÖÀ룻
- ÈáÐÔ·Ö²¼Ê½ÊÂÎñ£»
- ·Ö²¼Ê½Ö÷¼üÉú³É²ßÂÔ£»
- SQLÖØÐ´ÓÅ»¯£¬½øÒ»²½ÌáÉýÐÔÄÜ£»
- SQL Hint£¬¿ÉÖ¸¶¨Ä³SQLÔÚij¾ßÌå¿â±íÖ´ÐУ¬»ùÓÚÒµÎñ¹æÔò¶ø·ÇSQL½âÎö·ÓÉ£»?
С±í¹ã²¥£»
- HAÏà¹Ø£»
- Á÷Á¿¿ØÖÆ£»
- Êý¾Ý¿â½¨±í¹¤¾ß£»
- Êý¾ÝÇ¨ÒÆ£»
- ¸´ÔÓSQL½âÎöÖ§³Ö£¬Èç×Ó²éѯ¡¢´æ´¢¹ý³ÌµÈ£»
- Oracle£¬ SQLServerÖ§³Ö£»
- ÅäÖÃÖÐÐÄ£»
¿ªÔ´ÀíÄî
Ŀǰ¹úÄںܶ࿪Դ²úÆ·¶¼ÔÚ¹«Ë¾ÄÚ²¿¾Êܹýʱ¼äµÄ¿¼Ñ飬Ȼºó°þÀëÒµÎñÂß¼ºÍÃô¸Ð´úÂ룬ÔÙ¿ªÔ´¹±Ï׸øÉçÇø¡£ÕâÑù×öµÄÓŵãÊÇ¿ªÔ´µÄ²úÆ·Ïà¶Ô³ÉÊì¡£µ«È±µãÒ²²»¿É±ÜÃ⣬Ö÷ÒªÓУº
- ºóÐøÖ§³ÖØÑ·¦¡£²úÆ·ÒѾÂú×ãÁ˸ù«Ë¾µÄÒµÎñ³¡¾°ÐèÇó£¬È±·¦ºóÐøÌáÉýµÄ¶¯Á¦¡£Îĵµ¡¢Ö§³ÖÒ²»áÏà¶Ô½ÏÉÙ£¬ÉõÖÁ³öÏÖÎĵµºÍ´úÂ벻ͬ²½µÄ×´¿ö¡£
- Óë¸Ã¹«Ë¾ÒµÎñ³¡¾°ñîºÏ½ÏΪÑÏÖØ¡£´ó²¿·Ö¿ò¼Ü²úÆ·¶¼ÊÇΪÁ˽â¾öÌØ¶¨µÄÎÊÌâ¡£±ÈÈ磺ÓеĹ«Ë¾¿ÉÄܲ¢²»ÐèÒª·Ö±í£»ÓеĹ«Ë¾Ö»ÐèÖ§³Ö¼¸ÖÖ·ÖÆ¬²ßÂԾͺá£
- ¿ªÔ´²»ÍêÕû¡£ºÍ¹«Ë¾ÒµÎññîºÏ½ôÃܵIJ¿·Ö²»»á¿ªÔ´¡£
- ȱ·¦Õ³¶È¡£½ÏΪ³ÉÐ͵ÄÏîÄ¿ÓÉÓÚ¹¦ÄÜ·±¶à¡¢´úÂë½á¹¹¸´ÔÓ£¬ÉçÇøÖ¾Ô¸ÕßÄÑÓÚÀ©Õ¹»òÐ޸ĺËÐÄÂß¼¡£Èç¹û²âÊÔ¸²¸ÇÂʲ»¹»£¬ÄÑÒÔ±£Ö¤Ð޸ĺóµÄ´úÂëÖÊÁ¿¡£ÒÔÉÏһϵÁÐÎÊÌâ»áµ¼ÖÂÏîÄ¿¶ÔÉçÇøµÄÕ³¶È²»¸ß£¬ÄÑÓÚÕÒѰ¿ÉºÏ×÷¿ª·¢µÄÖ¾Ô¸Õß¡£
- ·ÖÖ§ÖÚ¶àÄÑÓÚά»¤¡£ÓÉÓÚ¿ªÔ´Ö®ºó¹«Ë¾È±·¦³ÖÐøÌáÉýµÄ¶¯Á¦£¬ºÍ±¾¹«Ë¾¹ØÏµ²»´óµÄÐèÇó¹¦Äܵò»µ½ÖØÊÓ£¬µ¼Ö¸÷¹«Ë¾¶¼¿ª·¢×Ô¼ºµÄ·ÖÖ§¡£¿ªÔ´ÏîÄ¿ËäȻһ¿ªÊ¼¸øÉçÇø×¢ÈëÁËÐÂÏÊ˼Ï룬µ«×îÖÕ²¢Ã»ÓÐÎüÈ¡ÉçÇø¾«»ª¡£È磺DubboÒ»³öÏÖ¼´ÒýÆðÁËÏ൱¶àµÄ¹Ø×¢£¬¶ø¸÷¹«Ë¾¶¼ÓÐ×Ô¼ºµÄ°æ±¾£¬Èçµ±µ±µÄDubboX£¬µ«×îÖÕDubbo²¢Î´ÄܳÖÐø·¢Õ¹¡£
ÎÒÃÇ¿¼ÂÇȫеĿªÔ´²ßÂÔ£¬ÔÚSharding-JDBC¸ÕÍê³É³õ°æµÄʱºò£¬¼´ÏòÉçÇøºÍµ±µ±ÄÚ²¿Í¬Ê±Íƹ㡣ÕâÑù×öµÄºÃ´¦ÓУº
- ºóÐøÖ§³ÖÍêÉÆ¡£Sharding-JDBCÓëµ±µ±ÄÚ²¿Â䵨°ó¶¨£¬½«»áÔÚµ±µ±ÄÚ²¿ºÍÉçÇøÍ¬Ê±Ìṩ֧³Ö¡£ËäÈ»ÎÞ·¨ÌṩÉçÇøÐèÇóµÄÓÅÏȼ¶¸ßÓÚµ±µ±ÄÚ²¿µÄ³Ðŵ£¬µ«ÎÒÃÇ»á×ۺϿ¼ÂÇÉçÇøÓëÄÚ²¿µÄÐèÇó£¬ÒÔ¸ü¸ßµÄÊӽǣ¬¾¡Á¿ÕûºÏÓëÓÅ»¯Éý¼¶Â·Ïß¡£
- ÍêÕû¿ªÔ´¡£´úÂëµÄsnapshot°æ±¾¶¼»áÊ×ÏȳöÏÖÔÚGitHubÉÏ¡£
- ¹²Í¬·¢Õ¹¡£Sharding-JDBCĿǰ´úÂë½ÏΪ¼òµ¥¡£Ê¹ÉçÇø¿ªÔ´°®ºÃÕßÄܸü¼ÓÇáËɵØÀí½â´úÂëºËÐÄ£¬ÎªÒÔºóµÄ³ÖÐø·¢Õ¹µì¶¨»ù´¡¡£²¢ÇÒSharding-JDBCÒ²»áÎüÄÉÉçÇø¾«»ª£¬Èøü¶àµØ°®ºÃÕß²ÎÓë´úÂë¹±Ïס£
×îºóÐèÒª³ÎÇ壬δ¾Ê±¼ä¿¼Ö¤µÄSharding-JDBC²¢·ÇBug³É¶Ñ£¬ÍêÈ«²»¿ÉÓõÄÏîÄ¿¡£Ä¿Ç°²âÊÔ¸²¸ÇÂʳ¬¹ý90%£¬Ïêϸ¹¦ÄÜÒÔ¼°²»Ö§³ÖÏî¶¼Ã÷È·µØÂÞÁÐÔÚGitHubµÄÎĵµÖУ¬Ï£ÍûÈÃʹÓÃÕßÐÄÖÐÓÐÊý¡£

µ±µ±Íø¼Ü¹¹Ê¦ÕÅÁÁ
|