±à¼ÍƼö: |
±¾ÎÄÖ÷Òª½éÉÜÁ˽éÉÜÁË·Ö²¼Ê½Êý¾Ý¿âtidb
ÌØÐÔ¡¢¼Ü¹¹¼°Ó¦Óó¡¾°£¬Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£
±¾ÎÄÀ´×ÔCSDN£¬ÓÉ»ðÁú¹ûÈí¼þLinda±à¼¡¢ÍƼö¡£ |
|
Ò»¡¢·Ö²¼Ê½Êý¾Ý¿âµ®Éú±³¾°
Ëæ×Å»¥ÁªÍøµÄ·ÉËÙ·¢Õ¹£¬ÒµÎñÁ¿¿ÉÄÜÔڶ̶̵Äʱ¼äÄÚ±¬·¢Ê½µØÔö³¤£¬¶ÔÓ¦µÄÊý¾ÝÁ¿¿ÉÄÜ¿ìËٵشӼ¸°Ù GB Õǵ½¼¸°Ù¸ö
TB£¬´«Í³µÄµ¥»úÊý¾Ý¿âÌṩµÄ·þÎñ£¬ÔÚϵͳµÄ¿ÉÀ©Õ¹ÐÔ¡¢ÐԼ۱ȷ½ÃæÒѾ²»ÔÙÊÊÓᣱÈÈçMySQLÊý¾Ý¿â£¬È±µãÊÇû·¨×öµ½Ë®Æ½À©Õ¹¡£MySQL
ÒªÏëÄÜ×öµ½Ë®Æ½À©Õ¹£¬Î¨Ò»µÄ·½·¨¾ÍÒµÎñ²ãµÄ·Ö¿â·Ö±í»òÕßʹÓÃÖмä¼þµÈ·½°¸¡£µ«ÊÇ£¬ÕâЩÖмä²ã·½°¸Ò²Óкܴó¾ÖÏÞÐÔ£¬Ö´Ðмƻ®²»ÊÇ×îÓÅ£¬·Ö²¼Ê½ÊÂÎñ£¬¿ç½Úµã
join£¬À©Èݸ´Ôӵȡ£
¶þ¡¢·Ö²¼Ê½Êý¾Ý¿âTiDB¼ò½é
TiDB ÊÇ Ò»¸ö¿ªÔ´·Ö²¼Ê½ NewSQL Êý¾Ý¿â¡£ÊµÏÖÁË×Ô¶¯µÄˮƽÉìËõ£¬Ç¿Ò»ÖÂÐԵķֲ¼Ê½ÊÂÎñ£¬»ùÓÚ
Raft Ëã·¨µÄ¶à¸±±¾¸´ÖƵÈÖØÒª NewSQL ÌØÐÔ¡£ TiDB ½áºÏÁË RDBMS ºÍ NoSQL
µÄÓŵ㣬²¿Êð¼òµ¥£¬ÔÚÏßµ¯ÐÔÀ©ÈݺÍÒì²½±í½á¹¹±ä¸ü²»Ó°ÏìÒµÎñ£¬ ÕæÕýµÄÒìµØ¶à»î¼°×Ô¶¯¹ÊÕϻָ´±£ÕÏÊý¾Ý°²È«£¬Í¬Ê±¼æÈÝ
MySQL ÐÒé£¬Ê¹Ç¨ÒÆÊ¹Óóɱ¾½µµ½¼«µÍ¡£
TiDB ¾ß±¸ÈçÏ NewSQL ºËÐÄÌØÐÔ£º
SQLÖ§³Ö £¨TiDB ÊÇ MySQL ¼æÈݵģ©
ˮƽÏßÐÔµ¯ÐÔÀ©Õ¹
·Ö²¼Ê½ÊÂÎñ
¿çÊý¾ÝÖÐÐÄÊý¾ÝǿһÖÂÐÔ±£Ö¤
¹ÊÕÏ×Ô»Ö¸´µÄ¸ß¿ÉÓÃ
TiDB µÄÉè¼ÆÄ¿±êÊÇ 100% µÄ OLTP ³¡¾°ºÍ 80% µÄ OLAP ³¡¾°¡£
TiDB ¶ÔÒµÎñûÓÐÈκÎÇÖÈëÐÔ£¬ÄÜÓÅÑŵÄÌæ»»´«Í³µÄÊý¾Ý¿âÖмä¼þ¡¢Êý¾Ý¿â·Ö¿â·Ö±íµÈ Sharding
·½°¸¡£Í¬Ê±ËüÒ²Èÿª·¢ÔËάÈËÔ±²»ÓùØ×¢Êý¾Ý¿â Scale µÄϸ½ÚÎÊÌ⣬רעÓÚÒµÎñ¿ª·¢£¬¼«´óµÄÌáÉýÑз¢µÄÉú²úÁ¦¡£
Èý¡¢TiDBÕûÌå¼Ü¹¹
ÒªÉîÈëÁ˽â TiDB µÄˮƽÀ©Õ¹ºÍ¸ß¿ÉÓÃÌØµã£¬Ê×ÏÈÐèÒªÁ˽â TiDB µÄÕûÌå¼Ü¹¹¡£

TiDB ¼¯ÈºÖ÷Òª·ÖΪÈý¸ö×é¼þ£º
TiDB Server
TiDB Server ¸ºÔð½ÓÊÕ SQL ÇëÇ󣬴¦Àí SQL Ïà¹ØµÄÂß¼£¬²¢Í¨¹ý PD ÕÒµ½´æ´¢¼ÆËãËùÐèÊý¾ÝµÄ
TiKV µØÖ·£¬Óë TiKV ½»»¥»ñÈ¡Êý¾Ý£¬×îÖÕ·µ»Ø½á¹û¡£ TiDB Server ÊÇÎÞ״̬µÄ£¬Æä±¾Éí²¢²»´æ´¢Êý¾Ý£¬Ö»¸ºÔð¼ÆË㣬¿ÉÒÔÎÞÏÞˮƽÀ©Õ¹£¬¿ÉÒÔͨ¹ý¸ºÔؾùºâ×é¼þ£¨ÈçLVS¡¢HAProxy
»ò F5£©¶ÔÍâÌṩͳһµÄ½ÓÈëµØÖ·¡£
PD Server
Placement Driver (¼ò³Æ PD) ÊÇÕû¸ö¼¯ÈºµÄ¹ÜÀíÄ£¿é£¬ÆäÖ÷Òª¹¤×÷ÓÐÈý¸ö£º Ò»ÊÇ´æ´¢¼¯ÈºµÄÔªÐÅÏ¢£¨Ä³¸ö
Key ´æ´¢ÔÚÄĸö TiKV ½Úµã£©£»¶þÊÇ¶Ô TiKV ¼¯Èº½øÐе÷¶ÈºÍ¸ºÔؾùºâ£¨ÈçÊý¾ÝµÄÇ¨ÒÆ¡¢Raft
group leader µÄÇ¨ÒÆµÈ£©£»ÈýÊÇ·ÖÅäÈ«¾ÖΨһÇÒµÝÔöµÄÊÂÎñ ID¡£
PD ÊÇÒ»¸ö¼¯Èº£¬ÐèÒª²¿ÊðÆæÊý¸ö½Úµã£¬Ò»°ãÏßÉÏÍÆ¼öÖÁÉÙ²¿Êð 3 ¸ö½Úµã¡£
TiKV Server
TiKV Server ¸ºÔð´æ´¢Êý¾Ý£¬´ÓÍⲿ¿´ TiKV ÊÇÒ»¸ö·Ö²¼Ê½µÄÌṩÊÂÎñµÄ Key-Value
´æ´¢ÒýÇæ¡£´æ´¢Êý¾ÝµÄ»ù±¾µ¥Î»ÊÇ Region£¨ÇøÓò£©£¬Ã¿¸ö Region ¸ºÔð´æ´¢Ò»¸ö Key Range
£¨´Ó StartKey µ½ EndKey µÄ×ó±ÕÓÒ¿ªÇø¼ä£©µÄÊý¾Ý£¬Ã¿¸ö TiKV ½Úµã»á¸ºÔð¶à¸ö Region
¡£TiKV ʹÓà Raft ÐÒé×ö¸´ÖÆ£¬±£³ÖÊý¾ÝµÄÒ»ÖÂÐÔºÍÈÝÔÖ¡£¸±±¾ÒÔ Region Ϊµ¥Î»½øÐйÜÀí£¬²»Í¬½ÚµãÉϵĶà¸ö
Region ¹¹³ÉÒ»¸ö Raft Group£¬»¥Îª¸±±¾¡£Êý¾ÝÔÚ¶à¸ö TiKV Ö®¼äµÄ¸ºÔؾùºâÓÉ PD
µ÷¶È£¬ÕâÀïÒ²ÊÇÒÔ Region Ϊµ¥Î»½øÐе÷¶È¡£
ºËÐÄÌØÐÔ
ˮƽÀ©Õ¹
ÎÞÏÞˮƽÀ©Õ¹ÊÇ TiDB µÄÒ»´óÌØµã£¬ÕâÀï˵µÄˮƽÀ©Õ¹°üÀ¨Á½·½Ã棺¼ÆËãÄÜÁ¦ºÍ´æ´¢ÄÜÁ¦¡£TiDB Server
¸ºÔð´¦Àí SQL ÇëÇó£¬Ëæ×ÅÒµÎñµÄÔö³¤£¬¿ÉÒÔ¼òµ¥µÄÌí¼Ó TiDB Server ½Úµã£¬Ìá¸ßÕûÌåµÄ´¦ÀíÄÜÁ¦£¬Ìṩ¸ü¸ßµÄÍÌÍ¡£TiKV
¸ºÔð´æ´¢Êý¾Ý£¬Ëæ×ÅÊý¾ÝÁ¿µÄÔö³¤£¬¿ÉÒÔ²¿Êð¸ü¶àµÄ TiKV Server ½Úµã½â¾öÊý¾Ý Scale µÄÎÊÌâ¡£PD
»áÔÚ TiKV ½ÚµãÖ®¼äÒÔ Region Ϊµ¥Î»×öµ÷¶È£¬½«²¿·ÖÊý¾ÝÇ¨ÒÆµ½Ð¼ӵĽڵãÉÏ¡£ËùÒÔÔÚÒµÎñµÄÔçÆÚ£¬¿ÉÒÔÖ»²¿ÊðÉÙÁ¿µÄ·þÎñʵÀý£¬Ëæ×ÅÒµÎñÁ¿µÄÔö³¤£¬°´ÕÕÐèÇóÌí¼Ó
TiKV »òÕß TiDB ʵÀý¡£
¸ß¿ÉÓÃ
¸ß¿ÉÓÃÊÇ TiDB µÄÁíÒ»´óÌØµã£¬TiDB/TiKV/PD ÕâÈý¸ö×é¼þ¶¼ÄÜÈÝÈ̲¿·ÖʵÀýʧЧ£¬²»Ó°ÏìÕû¸ö¼¯ÈºµÄ¿ÉÓÃÐÔ¡£
ËÄ¡¢TiDBÔÀíÓëʵÏÖ
TiDB ¼Ü¹¹ÊÇ SQL ²ãºÍ KV ´æ´¢²ã·ÖÀ룬Ï൱ÓÚ InnoDB ²å¼þ´æ´¢ÒýÇæÓë MySQL
µÄ¹ØÏµ¡£´ÓÏÂͼ¿ÉÒÔ¿´³öÕû¸öϵͳÊǸ߶ȷֲãµÄ£¬×îµ×²ãÑ¡ÓÃÁ˵±Ç°±È½ÏÁ÷ÐеĴ洢ÒýÇæ RocksDB£¬RockDB
ÐÔÄܺܺõ«ÊÇÊǵ¥»úµÄ£¬ÎªÁ˱£Ö¤¸ß¿ÉÓÃËùÒÔд¶à·Ý£¬ÉϲãʹÓà Raft ÐÒéÀ´±£Ö¤µ¥»úʧЧºóÊý¾Ý²»¶ªÊ§²»³ö´í¡£±£Ö¤ÓÐÁ˱Ƚϰ²È«µÄ
KV ´æ´¢µÄ»ù´¡ÉÏÔÙÈ¥¹¹½¨¶à°æ±¾£¬ÔÙÈ¥¹¹½¨·Ö²¼Ê½ÊÂÎñ£¬ÕâÑù¾Í¹¹³ÉÁË´æ´¢²ã TiKV¡£ÓÐÁË TiKV£¬TiDB
²ãÖ»ÐèҪʵÏÖ SQL ²ã£¬ÔÙ¼ÓÉÏ MySQL ÐÒéµÄÖ§³Ö£¬Ó¦ÓóÌÐò¾ÍÄÜÏñ·ÃÎÊ MySQL ÄÇÑùÈ¥·ÃÎÊ
TiDB ÁË¡£
 ·Ö²¼Ê½Êý¾Ý¿âTiDBÕûÌå¸ÅÊö
·Ö²¼Ê½Êý¾Ý¿âTiDBÕûÌå¸ÅÊö
Îå¡¢Ó¦Óó¡¾°
TiDB µÄËĸöÖ÷ÒªÓ¦Óó¡¾°£¬Ò»ÊÇ MySQL ·ÖƬÓëºÏ²¢£»¶þÊÇÖ±½ÓÌæ»» MySQL£»ÈýÊÇÓÃ×öÊý¾Ý²Ö¿â£»ËÄÊÇ×÷ΪÆäËûϵͳµÄÒ»¸öÄ£¿é¡£
ÓÃÀý 1£ºMySQL ·ÖƬÓëºÏ²¢


Syncer
TiDB Ó¦ÓõĵÚÒ»Àೡ¾°ÊÇ MySQL µÄ·ÖƬÓëºÏ²¢¡£¶ÔÓÚÒѾÔÚÓà MySQL µÄÒµÎñ£¬·Ö¿â¡¢·Ö±í¡¢·ÖƬ¡¢Öмä¼þÊdz£ÓÃÊֶΣ¬Ëæ×Å·ÖÆ¬µÄÔö¶à£¬¿ç·ÖƬ²éѯÊÇÒ»´óÄÑÌâ¡£TiDB
ÔÚÒµÎñ²ã¼æÈÝ MySQL µÄ·ÃÎÊÐÒ飬PingCAP ×öÁËÒ»¸öÊý¾Ýͬ²½µÄ¹¤¾ß¡ª¡ªSyncer£¬Ëü¿ÉÒÔ°Ñ
TiDB ×÷Ϊһ¸ö MySQL Slave£¬½« TiDB ×÷ΪÏÖÓÐÊý¾Ý¿âµÄ´Ó¿â½ÓÔÚÖ÷ MySQL ¿âµÄºó·½£¬ÔÚÕâÒ»²ã½«Êý¾Ý´òͨ£¬¿ÉÒÔÖ±½Ó½øÐи´ÔӵĿç¿â¡¢¿ç±í¡¢¿çÒµÎñµÄʵʱ
SQL ²éѯ¡£¹ýÈ¥µÄÊý¾Ý¿â¶¼ÊÇÒ»Ö÷¶à´Ó£¬ÓÐÁË TiDB ÒԺ󣬿ÉÒÔ·´¹ýÀ´×öµ½¶àÖ÷Ò»´Ó¡£
ÓÃÀý 2£ºÖ±½ÓÌæ»» MySQL

µÚ¶þÀೡ¾°ÊÇÓà TiDB Ö±½ÓÈ¥Ìæ»» MySQL¡£Èç¹ûÄãµÄIT¼Ü¹¹Ôڴ֮³õ²¢Î´¿¼ÂÇ·Ö¿â·Ö±íµÄÎÊÌ⣬ȫ²¿ÓÃÁË
MySQL£¬Ëæ×ÅÒµÎñµÄ¿ìËÙÔö³¤£¬º£Á¿¸ß²¢·¢µÄ OLTP ³¡¾°Ô½À´Ô½¶à£¬ÈçºÎ½â¾ö¼Ü¹¹Éϵı׶ËÄØ?
ÔÚÒ»¸ö TiDB µÄÊý¾Ý¿âÉÏ£¬ËùÓÐÒµÎñ³¡¾°²»ÐèÒª×ö·Ö¿â·Ö±í£¬ËùÓеķֲ¼Ê½¹¤×÷¶¼ÓÉÊý¾Ý¿â²ãÍê³É¡£TiDB
¼æÈÝ MySQL ÐÒ飬ËùÒÔ¿ÉÒÔÖ±½ÓÌæ»» MySQL£¬¶øÇÒ»ù±¾×öµ½ÁË¿ªÏä¼´Óã¬ÍêÈ«²»Óõ£ÐÄ´«Í³·Ö¿â·Ö±í·½°¸´øÀ´·±ÖصŤ×÷¸ºµ£ºÍ¸´ÔÓµÄά»¤³É±¾£¬ÓѺõÄÓû§½çÃæÈ󣹿µÄ¼¼ÊõÈËÔ±¿ÉÒÔ¸ßЧµØ½øÐÐά»¤ºÍ¹ÜÀí¡£ÁíÍ⣬TiDB
¾ßÓÐ NoSQL ÀàËÆµÄÀ©ÈÝÄÜÁ¦£¬ÔÚÊý¾ÝÁ¿ºÍ·ÃÎÊÁ÷Á¿³ÖÐøÔö³¤µÄÇé¿öÏÂÄܹ»Í¨¹ýˮƽÀ©ÈÝÌá¸ßϵͳµÄÒµÎñÖ§³ÅÄÜÁ¦£¬²¢ÇÒÏìÓ¦ÑÓ³ÙÎȶ¨¡£
ÓÃÀý 3£ºÊý¾Ý²Ö¿â


TiDB ±¾ÉíÊÇÒ»¸ö·Ö²¼Ê½ÏµÍ³£¬µÚÈýÖÖʹÓó¡¾°Êǽ« TiDB µ±×÷Êý¾Ý²Ö¿âʹÓá£TPC-H ÊÇÊý¾Ý·ÖÎöÁìÓòµÄÒ»¸ö²âÊÔ¼¯£¬TiDB
2.0 ÔÚ OLAP ³¡¾°ÏµÄÐÔÄÜÓÐÁË´ó·ùÌáÉý£¬ÔÀ´Ö»ÄÜÔÚÊý¾Ý²Ö¿âÀïÃæÅܵÄһЩ¸´Ô Query£¬ÔÚ
TiDB 2.0 ÀïÃæÅÜ£¬Ê±¼ä»ù±¾¶¼ÄÜ¿ØÖÆÔÚ 10 ÃëÒÔÄÚ¡£µ±È»£¬ÒòΪ OLAP µÄ·¶³ë·Ç³£´ó£¬TiDB
µÄ SQL Ò²Óи㲻¶¨µÄÇé¿ö£¬Îª´Ë PingCAP ¿ªÔ´ÁË TiSpark£¬TiSpark ÊÇÒ»¸ö
Spark ²å¼þ£¬Óû§¿ÉÒÔÖ±½ÓÓà Spark SQL ʵʱµØÔÚ TiKV ÉÏ×ö´óÊý¾Ý·ÖÎö¡£
ÓÃÀý 4£º×÷ΪÆäËûϵͳµÄÄ£¿é

TiDB ÊÇÒ»¸ö´«Í³µÄ´æ´¢¸ú¼ÆËã·ÖÀëµÄÏîÄ¿£¬Æäµ×²ãµÄ Key-Value ²ã£¬¿ÉÒÔµ¥¶À×÷Ϊһ¸ö HBase
µÄ Replacement À´Óã¬Ëüͬʱ֧³Ö¿çÐÐÊÂÎñ¡£TiDB ¶ÔÍâÌṩÁ½¸ö API ½Ó¿Ú£¬Ò»¸öÊÇ
ACID Transaction µÄ API£¬ÓÃÓÚÖ§³Ö¿çÐÐÊÂÎñ£»ÁíÒ»¸öÊÇ Raw API£¬Ëü¿ÉÒÔ×öµ¥ÐеÄÊÂÎñ£¬»»À´µÄÊÇÕû¸öÐÔÄܵÄÌáÉý£¬µ«²»Ìṩ¿çÐÐÊÂÎñµÄ
ACID Ö§³Ö¡£Óû§¿ÉÒÔ¸ù¾Ý×ÔÉíµÄÐèÇóÔÚÁ½¸ö API Ö®¼ä×ÔÐÐÑ¡Ôñ¡£ÀýÈçÓÐһЩÓû§Ö±½ÓÔÚ TiKV
Ö®ÉÏʵÏÖÁË Redis ÐÒ飬½« TiKV Ìæ»»Ò»Ð©´óÈÝÁ¿£¬¶ÔÑÓ³ÙÒªÇó²»¸ßµÄ Redis ³¡¾°¡£
×ܽ᣺
±¾ÆªÎÄÕ½éÉÜÁË·Ö²¼Ê½Êý¾Ý¿âtidb ÌØÐÔ¡¢¼Ü¹¹¡¢Ó¦Óó¡¾°£¬µ«ÊÇÊÇ·ñʹÓÃÔÚÎÒÃÇÏÖÓÐϵͳÖÐÐèÒª´Ó³¤¼ÆÒé¡£tidbµÄ¹¦ÄܺÜÇ¿´ó£¬µ«Ç¿´óµÄ±³ºóÒâζ×Å´óÁ¿Ó²¼þ×ÊÔ´µÄÖ§³Å¡£½áºÏʵ¼ÊÇé¿öÑ¡Ôñ×îÊʺϵIJÅÊÇ×îºÃµÄ·½°¸¡£ |