±à¼ÍƼö: |
±¾ÎÄÖ÷Òª½éÉÜÁ˳£¼ûµÄ·Ö²¼Ê½Êý¾Ý¿âÁ÷ÅÉ¡¢Êý¾Ý¿âÖмä¼þ¡¢
NoSQL - Not Only SQL¡¢µÚÈý´ú·Ö²¼Ê½Êý¾Ý¿â NewSQL¡¢µÚËÄ´úϵͳ£º·Ö²¼Ê½
HTAP Êý¾Ý¿âµÈÏà¹ØÄÚÈÝ ¡£
±¾ÎÄÀ´×Ô InfoQ£¬ÓÉ»ðÁú¹ûÈí¼þLinda±à¼¡¢ÍƼö¡£ |
|
³£¼ûµÄ·Ö²¼Ê½Êý¾Ý¿âÁ÷ÅÉ
·Ö²¼Ê½Êý¾Ý¿âµÄ·¢Õ¹Àú³Ì£¬ÎÒ°´ÕÕÄê´ú½øÐÐÁË·ÖÀ࣬µ½Ä¿Ç°ÎªÖ¹·Ö³ÉÁËËÄ´ú¡£µÚÒ»´úÊÇ»ùÓÚ¼òµ¥µÄ·Ö¿â·Ö±í»òÕßÖмä¼þÀ´×ö
Data Sharding ºÍ ˮƽÀ©Õ¹¡£µÚ¶þ´úϵͳÊÇÒÔ Cassandra¡¢HBase »òÕß MongoDB
Ϊ´ú±íµÄ NoSQL Êý¾Ý¿â£¬Ò»°ã¶àΪ»¥ÁªÍø¹«Ë¾ÔÚʹÓã¬ÓµÓкܺõÄˮƽÀ©Õ¹ÄÜÁ¦¡£
µÚÈý´úϵͳÎÒ¸öÈËÈÏΪÊÇÒÔ Google Spanner ºÍ AWS Aurora Ϊ´ú±íµÄÐÂÒ»´úÔÆÊý¾Ý¿â£¬ËûÃǵÄÌØµãÊÇÈÚºÏÁË
SQL ºÍ NoSQL µÄÀ©Õ¹ÄÜÁ¦£¬¶ÔÒµÎñ²ã±©Â¶ÁË SQL µÄ½Ó¿Ú£¬ÔÚʹÓÃÉÏ¿ÉÒÔ×öµ½Ë®Æ½µÄÀ©Õ¹¡£
µÚËÄ´úϵͳÊÇÒÔÏÖÔÚ TiDB µÄÉè¼ÆÎªÀý£¬¿ªÊ¼½øÈëµ½»ìºÏÒµÎñ¸ºÔصÄʱ´ú£¬Ò»Ì×ϵͳӵÓмÈÄÜ×ö½»Ò×Ò²ÄÜ´¦Àí¸ß²¢·¢ÊÂÎñµÄÌØÐÔ£¬Í¬Ê±ÓÖÄܽáºÏһЩÊý¾Ý²Ö¿â»òÕß·ÖÎöÐÍÊý¾Ý¿âµÄÄÜÁ¦£¬ËùÒÔ½Ð
HTAP£¬¾ÍÊÇÈÚºÏÐ͵ÄÊý¾Ý¿â²úÆ·¡£
δÀ´ÊÇʲôÑù×Ó£¬ºóÃæµÄ·ÖÏíÎÒ»á½éÉܹØÓÚδÀ´µÄһЩչÍû¡£´ÓÕû¸öʱ¼äÏß¿´£¬´Ó 1970 Äê´ú·¢Õ¹µ½ÏÖÔÚ£¬database
Ò²ËãÊǸö¹ÅÀϵÄÐÐÒµÁË£¬¾ßÌåÿ¸ö½×¶ÎµÄ·¢Õ¹Çé¿ö£¬ÎҾͲ»¹ý¶àÕ¹¿ª¡£

Êý¾Ý¿âÖмä¼þ
¶ÔÓÚÊý¾Ý¿âÖмä¼þÀ´Ëµ£¬µÚÒ»´úϵͳÊÇÖмä¼þµÄϵͳ£¬»ù±¾ÉÏÕû¸öÖ÷Á÷ģʽÓÐÁ½ÖÖ£¬Ò»ÖÖÊÇÔÚÒµÎñ²ã×öÊÖ¶¯µÄ·Ö¿â·Ö±í£¬±ÈÈçÊý¾Ý¿âµÄʹÓÃÕßÔÚÒµÎñ²ãÀï¸æËßÄ㣻±±¾©µÄÊý¾Ý·ÅÔÚÒ»¸öÊý¾Ý¿âÀ¶øÉϺ£µÄÊý¾Ý·ÅÔÚÁíÒ»¸öÊý¾Ý¿â»òÕßдµ½²»Í¬µÄ±íÉÏ£¬ÕâÖÖ¾ÍÊÇÒµÎñ²ãÊÖ¶¯µÄ×î¼òµ¥µÄ·Ö¿â·Ö±í£¬ÏàÐÅ´ó¼Ò²Ù×÷¹ýÊý¾Ý¿âµÄÅóÓѶ¼ºÜÊìϤ¡£
µÚ¶þÖÖͨ¹ýÒ»¸öÊý¾Ý¿âÖмä¼þÖ¸¶¨ Sharding µÄ¹æÔò¡£±ÈÈçÏñÓû§µÄ³ÇÊС¢Óû§µÄ ID¡¢Ê±¼äÀ´×öΪ·ÖƬµÄ¹æÔò£¬Í¨¹ýÖмä¼þÀ´×Ô¶¯µÄ·ÖÅ䣬¾Í²»ÓÃÒµÎñ²ãÈ¥×ö¡£
ÕâÖÖ·½Ê½µÄÓŵã¾ÍÊǼòµ¥¡£Èç¹ûÒµÎñÔÚÌØ±ð¼òµ¥µÄÇé¿öÏ£¬±ÈÈç˵дÈë»òÕß¶ÁÈ¡»ù±¾ÄÜÍË»¯³ÉÔÚÒ»¸ö·ÖƬÉÏÍê³É£¬ÔÚÓ¦Óòã×ö³ä·ÖÊÊÅäÒÔºó£¬ÑÓ³Ù»¹ÊDZȽϵ͵쬶øÕûÌåÉÏ£¬Èç¹û
workload ÊÇËæ»úµÄ£¬ÒµÎñµÄ TPS Ò²ÄÜ×öµ½ÏßÐÔÀ©Õ¹¡£
µ«ÊÇȱµãÒ²±È½ÏÃ÷ÏÔ¡£¶ÔÓÚһЩ±È½Ï¸´ÔÓµÄÒµÎñ£¬ÌرðÊÇһЩ¿ç·ÖƬµÄ²Ù×÷£¬±ÈÈç˵²éѯ»òÕßдÈëÒª±£³Ö¿ç·ÖƬ֮¼äµÄÊý¾ÝǿһÖÂÐÔµÄʱºò¾Í±È½ÏÂé·³¡£ÁíÍâÒ»¸ö±È½ÏÃ÷ÏÔµÄȱµãÊÇËü¶ÔÓÚ´óÐͼ¯ÈºµÄÔËάÊDZȽÏÀ§Äѵģ¬ÌرðÊÇÈ¥×öһЩÀàËÆµÄ±í½á¹¹±ä¸üÖ®ÀàµÄ²Ù×÷¡£ÏëÏóÒ»ÏÂÈç¹ûÓÐÒ»°Ù¸ö·ÖƬ£¬ÒªÈ¥¼ÓÒ»ÁлòÕßɾһÁУ¬Ï൱ÓÚÒªÔÚÒ»°Ų̀»úÆ÷É϶¼Ö´ÐвÙ×÷£¬ÆäʵºÜÂé·³¡£
NoSQL - Not Only SQL
ÔÚ 2010 Äêǰºó£¬ºÃ¶à»¥ÁªÍø¹«Ë¾¶¼·¢ÏÖÁËÕâ¸ö´óµÄÍ´µã£¬×Ðϸ˼¿¼ÁËÒµÎñºó£¬ËûÃÇ·¢ÏÖÒµÎñºÜ¼òµ¥£¬Ò²²»ÐèÒª
SQL ÌØ±ð¸´ÔӵŦÄÜ£¬ÓÚÊǾͷ¢Õ¹³öÁËÒ»¸öÁ÷ÅɾÍÊÇ NoSQL Êý¾Ý¿â¡£NoSQL µÄÌØµã¾ÍÊÇ·ÅÆúµôÁ˸߼¶µÄ
SQL ÄÜÁ¦£¬µ«ÊÇÓеñØÓÐʧ£¬»òÕß˵·ÅÆúµôÁ˶«Î÷×ÜÄÜ»»À´Ò»Ð©¶«Î÷£¬NoSQL »»À´µÄÊÇÒ»¸ö¶ÔÒµÎñ͸Ã÷µÄ¡¢Ç¿µÄˮƽÀ©Õ¹ÄÜÁ¦£¬µ«·´¹ýÀ´¾ÍÒâζ×ÅÄãµÄÒµÎñÔÀ´ÊÇ»ùÓÚ
SQL ȥдµÄ»°£¬¿ÉÄÜ»á´øÀ´±È½Ï´óµÄ¸ÄÔì³É±¾£¬´ú±íµÄϵͳÓиղÅÎÒ˵µ½µÄ MongoDB¡¢Cassandra¡¢HBase
µÈ¡£
×îÓÐÃûµÄϵͳ¾ÍÊÇ MongoDB£¬MongoDB ËäȻҲÊÇ·Ö²¼Ê½£¬µ«ÈÔÈ»»¹ÊÇÏñ·Ö¿â·Ö±íµÄ·½°¸Ò»Ñù£¬ÒªÑ¡Ôñ·ÖƬµÄ
key£¬ËûµÄÓŵã´ó¼Ò¶¼±È½ÏÊìϤ£¬¾ÍÊÇûÓбí½á¹¹ÐÅÏ¢£¬Ïëдʲô¾Íдʲô£¬¶ÔÓÚÎĵµÐ͵ÄÊý¾Ý±È½ÏÓѺ㬵«È±µãÒ²±È½ÏÃ÷ÏÔ£¬¼ÈȻѡÔñÁË
Sharding Key£¬¿ÉÄÜÊǰ´ÕÕÒ»¸ö¹Ì¶¨µÄ¹æÔòÔÚ×ö·ÖƬ£¬ËùÒÔµ±ÓÐһЩ¿ç·ÖƬµÄ¾ÛºÏÐèÇóµÄʱºò»á±È½ÏÂé·³£¬µÚ¶þÊÇÔÚ¿ç·ÖƬµÄ
ACID ÊÂÎñÉÏûÓкܺõÄÖ§³Ö¡£

HBase ÊÇ Hadoop Éú̬ϵıȽÏÓÐÃûµÄ·Ö²¼Ê½ NoSQL Êý¾Ý¿â£¬ËüÊǹ¹½¨ÔÚ HDFS
Ö®ÉϵÄÒ»¸ö NoSQL Êý¾Ý¿â¡£Cassandra ÊÇÒ»¸ö·Ö²¼Ê½µÄ KV Êý¾Ý¿â£¬ÆäÌØµãÊÇÔÚ KV
²Ù×÷ÉÏÌṩ¶àÖÖÒ»ÖÂÐÔÄ£ÐÍ£¬È±µãÓëºÜ¶à NoSQL µÄÎÊÌâÒ»Ñù£¬°üÀ¨ÔËάµÄ¸´ÔÓÐÔ£¬ KV µÄ½Ó¿Ú¶ÔÓÚÔÓÐÒµÎñ¸ÄÔìµÄÒªÇóµÈ¡£
µÚÈý´ú·Ö²¼Ê½Êý¾Ý¿â NewSQL
¸Õ²Å˵¹ý Sharding »òÕß·Ö¿â·Ö±í£¬NoSQL Ò²ºÃ£¬¶¼ÃæÁÙ×ÅÒ»¸öÒµÎñµÄÇÖÈëÐÔÎÊÌ⣬Èç¹ûÄãµÄÒµÎñÊÇÖØ¶ÈÒÀÀµ
SQL£¬ÄÇôÓÃÕâÁ½ÖÖ·½°¸¶¼ÊǺܲ»ÊæÊʵġ£ÓÚÊÇһЩ¼¼Êõ±È½ÏÇ°ÑØµÄ¹«Ë¾¾ÍÔÚ˼¿¼£¬Äܲ»ÄܽáºÏ´«Í³Êý¾Ý¿âµÄÓŵ㣬±ÈÈç
SQL ±í´ïÁ¦£¬ÊÂÎñÒ»ÖÂÐÔµÈÌØÐÔ£¬Í¬Ê±ÓÖ¸ú NoSQL ʱ´úºÃµÄÀ©Õ¹ÐԵȹ¦ÄܽáºÏ£¬×îÖÕ·¢Õ¹³öÒ»ÖÖеġ¢¿ÉÀ©Õ¹²¢ÇÒÓÃÆðÀ´ÓÖÏñµ¥»úÊý¾Ý¿âÒ»Ñù·½±ãµÄϵͳ¡£×îÖÕ£¬ÔÚÕâ¸ö˼·Ï¾͵®Éú³öÁËÁ½¸öÁ÷ÅÉ£¬Ò»¸öÊÇ
Spanner£¬Ò»¸öÊÇ Aurora£¬Á½¸ö¶¼ÊǶ¥¼¶µÄ»¥ÁªÍø¹«Ë¾ÔÚÃæÁÙµ½ÕâÖÖÎÊÌâʱ×ö³öµÄÒ»¸öÑ¡Ôñ¡£
Shared Nothing Á÷ÅÉ
Shard Nothing Õâ¸öÁ÷ÅÉÊÇÒÔ Google Spanner Ϊ´ú±í£¬ºÃ´¦ÊÇÔÚÓÚ¿ÉÒÔ×öµ½¼¸ºõÎÞÏÞµÄˮƽÀ©Õ¹£¬Õû¸öϵͳûÓж˵㣬²»¹ÜÊÇ
1 ¸ö T¡¢10 ¸ö T »òÕß 100 ¸ö T£¬ÒµÎñ²ã»ù±¾Éϲ»Óõ£ÐÄÀ©Õ¹ÄÜÁ¦¡£µÚ¶þ¸öºÃ´¦ÊÇËûµÄÉè¼ÆÄ¿±êÊÇÌṩǿ
SQL µÄÖ§³Ö£¬²»ÐèÒªÖ¸¶¨·ÖƬ¹æÔò¡¢·ÖƬ²ßÂÔ£¬ÏµÍ³»á×Ô¶¯µÄ°ïÄã×öÀ©Õ¹¡£µÚÈýÊÇÖ§³ÖÏñµ¥»úÊý¾Ý¿âÒ»ÑùµÄǿһÖµÄÊÂÎñ£¬¿ÉÒÔÓÃÀ´Ö§³Ö½ðÈÚ¼¶±ðµÄÒµÎñ¡£

´ú±í²úÆ·¾ÍÊÇ Spanner Óë TiDB£¬ÕâÀàϵͳҲÓÐһЩȱµã£¬´Ó±¾ÖÊÉÏÀ´ËµÒ»¸ö´¿·Ö²¼Ê½Êý¾Ý¿â£¬ºÜ¶àÐÐΪûÓа취¸úµ¥»úÐÐΪһģһÑù¡£¾Ù¸öÀý×Ó£¬±ÈÈç˵ÑÓ³Ù£¬µ¥»úÊý¾Ý¿âÔÚ×ö½»Ò×ÊÂÎñµÄʱºò£¬¿ÉÄÜÔÚµ¥»úÉϾÍÍê³ÉÁË£¬µ«ÊÇÔÚ·Ö²¼Ê½Êý¾Ý¿âÉÏ£¬Èç¹ûҪȥʵÏÖͬÑùµÄÒ»¸öÓïÒ壬Õâ¸öÊÂÎñÐèÒª²Ù×÷µÄÐпÉÄÜ·Ö²¼ÔÚ²»Í¬µÄ»úÆ÷ÉÏ£¬Ðè񻃾¼°µ½¶à´ÎÍøÂçµÄͨÐźͽ»»¥£¬ÏìÓ¦ËٶȺÍÐÔÄܿ϶¨²»ÈçÔÚµ¥»úÉÏÒ»´Î²Ù×÷Íê³É£¬ËùÒÔÔÚһЩ¼æÈÝÐÔºÍÐÐΪÉÏÓëµ¥»úÊý¾Ý¿â»¹ÊÇÓÐÒ»Ð©Çø±ðµÄ¡£¼´Ê¹ÊÇÕâÑù£¬¶ÔÓںܶàÒµÎñÀ´Ëµ£¬Óë·Ö¿â·Ö±íÏà±È£¬·Ö²¼Ê½Êý¾Ý¿â»¹ÊǾ߱¸ºÜ¶àÓÅÊÆ£¬±ÈÈçÔÚÒ×ÓÃÐÔ·½Ã滹ÊDZȷֿâ·Ö±íµÄÇÖÈëÐÔСºÜ¶à¡£
Shared Everything Á÷ÅÉ
µÚ¶þÖÖÁ÷ÅɾÍÊÇ Shared Everything Á÷ÅÉ£¬´ú±íÓÐ AWS Aurora¡¢°¢ÀïÔÆµÄ PolarDB£¬ºÜ¶àÊý¾Ý¿â¶¼¶¨Òå×Ô¼ºÊÇ
Cloud-Native Database£¬µ«ÎÒ¾õµÃÕâÀïµÄ Cloud-Native ¸ü¶àÊÇÔÚÓÚͨ³£ÕâЩ·½°¸¶¼ÊÇÓɹ«ÓÐÔÆ·þÎñÉÌÀ´ÌṩµÄ£¬ÖÁÓÚ±¾ÉíµÄ¼¼ÊõÊDz»ÊÇÔÆÔÉú£¬²¢Ã»ÓÐÒ»¸öͳһµÄ±ê×¼¡£´Ó´¿¼¼ÊõµÄ½Ç¶ÈÀ´È¥ËµÒ»¸öºËÐĵÄÒªµã£¬ÕâÀàϵͳµÄ¼ÆËãÓë´æ´¢Êdz¹µ×·ÖÀëµÄ£¬¼ÆËã½ÚµãÓë´æ´¢½ÚµãÅÜÔÚ²»Í¬»úÆ÷ÉÏ£¬´æ´¢Ï൱ÓÚ°ÑÒ»¸ö
MySQL ÅÜÔÚÔÆÅÌÉϵĸоõ£¬ÎÒ¸öÈËÈÏΪÀàËÆ Aurora »òÕß PolarDB µÄÕâÖּܹ¹²¢²»ÊÇÒ»¸ö´¿´âµÄ·Ö²¼Ê½¼Ü¹¹¡£

ÔÀ´ MySQL µÄÖ÷´Ó¸´Öƶ¼×ß Binlog£¬Aurora ×÷ΪһÖÖÔÚÔÆÉÏ Share Everything
Database µÄ´ú±í£¬Aurora µÄÉè¼ÆË¼Â·ÊǰÑÕû¸ö IO µÄ flow ֻͨ¹ý redo log
µÄÐÎʽÀ´×ö¸´ÖÆ£¬¶ø²»ÊÇͨ¹ýÕû¸ö IO Á´Â·´òµ½×îºó Binlog£¬ÔÙ·¢µ½ÁíÍâһ̨»úÆ÷ÉÏ£¬È»ºóÔÙ apply
Õâ¸ö Binlog£¬ËùÒÔ Aurora µÄ IO Á´Â·¼õÉٺܶ࣬ÕâÊÇÒ»¸öºÜ´óµÄ´´Ð¡£
ÈÕÖ¾¸´ÖƵĵ¥Î»±äС£¬Òâζ×ÅÎÒ·¢¹ýÈ¥µÄÖ»ÓÐ Physical log£¬²»ÊÇ Binlog£¬Ò²²»ÊÇÖ±½Ó·¢Óï¾ä¹ýÈ¥£¬Ö±½Ó·¢ÎïÀíµÄÈÕÖ¾ÄÜ´ú±íןüСµÄ
IO µÄ·¾¶ÒÔ¼°¸üСµÄÍøÂç°ü£¬ËùÒÔÕû¸öÊý¾Ý¿âϵͳµÄÍÌÍÂЧÂÊ»á±È´«Í³µÄ MySQL µÄ²¿Êð·½°¸ºÃºÜ¶à¡£

Aurora µÄÓÅÊÆÊÇ 100% ¼æÈÝ MySQL£¬ÒµÎñ¼æÈÝÐԺã¬ÒµÎñ»ù±¾Éϲ»ÓøľͿÉÒÔÓ㬶øÇÒ¶ÔÓÚһЩ»¥ÁªÍøµÄ³¡¾°£¬¶ÔÒ»ÖÂÐÔÒªÇ󲻸ߵϰ£¬Êý¾Ý¿âµÄ¶ÁÒ²¿ÉÒÔ×öµ½Ë®Æ½À©Õ¹£¬²»¹ÜÊÇ
Aurora Ò²ºÃ£¬PolarDB Ò²ºÃ£¬¶ÁÐÔÄÜÊÇÓÐÉÏÏ޵ġ£
Aurora µÄ¶Ì°å´ó¼ÒÒ²ÄÜ¿´µÃ³öÀ´£¬±¾ÖÊÉÏÕ⻹ÊÇÒ»¸öµ¥»úÊý¾Ý¿â£¬ÒòΪËùÓÐÊý¾ÝÁ¿¶¼ÊÇ´æ´¢ÔÚÒ»ÆðµÄ£¬Aurora
µÄ¼ÆËã²ãÆäʵ¾ÍÊÇÒ»¸ö MySQL ʵÀý£¬²»¹ØÐĵ×ÏÂÕâЩÊý¾ÝµÄ·Ö²¼£¬Èç¹ûÓдóµÄдÈëÁ¿»òÕßÓдóµÄ¿ç·ÖƬ²éѯµÄÐèÇó£¬Èç¹ûÒªÖ§³Ö´óÊý¾ÝÁ¿£¬»¹ÊÇÐèÒª·Ö¿â·Ö±í£¬ËùÒÔ
Aurora ÊÇÒ»¿î¸üºÃµÄÔÆÉϵ¥»úÊý¾Ý¿â¡£
µÚËÄ´úϵͳ£º·Ö²¼Ê½ HTAP Êý¾Ý¿â
µÚËÄ´úϵͳ¾ÍÊÇÐÂÐÎ̬µÄ HTAP Êý¾Ý¿â£¬Ó¢ÎÄÃû³ÆÊÇ Hybrid Transactional and
Analytical Processing£¬Í¨¹ýÃû×ÖÒ²ºÜºÃÀí½â£¬¼È¿ÉÒÔ×öÊÂÎñ£¬ÓÖ¿ÉÒÔÔÚͬһÌ×ϵͳÀïÃæ×öʵʱ·ÖÎö¡£HTAP
Êý¾Ý¿âµÄÓÅÊÆÊÇ¿ÉÒÔÏñ NoSQL Ò»Ñù¾ß±¸ÎÞÏÞˮƽÀ©Õ¹ÄÜÁ¦£¬Ïñ NewSQL Ò»ÑùÄܹ»È¥×ö SQL
µÄ²éѯÓëÊÂÎñµÄÖ§³Ö£¬¸üÖØÒªµÄÊÇÔÚ»ìºÏÒµÎñµÈ¸´Ôӵij¡¾°Ï£¬OLAP ²»»áÓ°Ïìµ½ OLTP ÒµÎñ£¬Í¬Ê±Ê¡È¥ÁËÔÚͬһ¸öϵͳÀïÃæ°ÑÊý¾Ý°áÀ´°áÈ¥µÄ·³ÄÕ¡£Ä¿Ç°£¬ÎÒ¿´µ½ÔÚ¹¤Òµ½ç»ù±¾Ö»ÓÐ
TiDB 4.0 ¼ÓÉÏ TiFlash Õâ¸ö¼Ü¹¹Äܹ»·ûºÏÉÏÊöÒªÇó¡£
·Ö²¼Ê½ HTAP Êý¾Ý¿â£ºTiDB (with TiFlash)
Ϊʲô TiDB Äܹ»ÊµÏÖ OLAP ºÍ OLTP µÄ³¹µ×¸ôÀ룬»¥²»Ó°Ï죿ÒòΪ TiDB ÊǼÆËãºÍ´æ´¢·ÖÀëµÄ¼Ü¹¹£¬µ×²ãµÄ´æ´¢ÊǶั±¾»úÖÆ£¬¿ÉÒÔ°ÑÆäÖÐһЩ¸±±¾×ª»»³ÉÁÐʽ´æ´¢µÄ¸±±¾¡£OLAP
µÄÇëÇó¿ÉÒÔÖ±½Ó´òµ½ÁÐʽµÄ¸±±¾ÉÏ£¬Ò²¾ÍÊÇ TiFlash µÄ¸±±¾À´Ìṩ¸ßÐÔÄÜÁÐʽµÄ·ÖÎö·þÎñ£¬×öµ½ÁËͬһ·ÝÊý¾Ý¼È¿ÉÒÔ×öʵʱµÄ½»Ò×ÓÖ×öʵʱµÄ·ÖÎö£¬ÕâÊÇ
TiDB Ôڼܹ¹²ãÃæµÄ¾Þ´ó´´ÐºÍÍ»ÆÆ¡£

ÏÂͼÊÇ TiDB µÄ²âÊÔ½á¹û£¬Óë MemSQL ½øÐÐÁ˶Աȣ¬¸ù¾ÝÓû§³¡¾°¹¹ÔìÁËÒ»ÖÖ workload£¬ºáÖáÊDz¢·¢Êý£¬×ÝÖáÊÇ
OLTP µÄÐÔÄÜ£¬À¶É«¡¢»ÆÉ«¡¢ÂÌÉ«ÕâЩÊÇ OLAP µÄ²¢·¢Êý¡£Õâ¸öʵÑéµÄÄ¿µÄ¾ÍÊÇÔÚÒ»Ì×ϵͳÉϼÈÅÜ OLTP
ÓÖÅÜ OLAP£¬Í¬Ê±²»¶ÏÌáÉý OLTP ºÍ OLAP µÄ²¢·¢Ñ¹Á¦£¬´Ó¶ø²é¿´ÕâÁ½ÖÖ workload
ÊÇ·ñ»á»¥ÏàÓ°Ïì¡£¿ÉÒÔ¿´µ½ÔÚ TiDB Õâ±ß£¬Í¬Ê±¼Ó´ó OLTP ºÍ OLAP µÄ²¢·¢Ñ¹Á¦£¬ÕâÁ½ÖÖ workload
µÄÐÔÄܱíÏÖûÓÐʲôÃ÷ÏԱ仯£¬¼¸ºõÊDz¶àµÄ¡£µ«ÊÇ£¬Í¬ÑùµÄʵÑé·¢ÉúÔÚ MemSQL ÉÏ£¬´ó¼Ò¿ÉÒÔ¿´µ½
MemSQL µÄÐÔÄÜ´ó·ùË¥¼õ£¬Ëæ×Å OLAP µÄ²¢·¢Êý±ä´ó£¬OLTP µÄÐÔÄÜϽµ±È½ÏÃ÷ÏÔ¡£

½ÓÏÂÀ´ÊÇ TiDB ÔÚÒ»¸öÓû§Êµ¼ÊÒµÎñ³¡¾°µÄÀý×Ó£¬ÔÚ½øÐÐ OLAP ÒµÎñµÄ²éѯµÄʱºò£¬OLTP ÒµÎñÈÔÈ»¿ÉÒÔʵÏÖÆ½»¬µÄдÈë²Ù×÷£¬ÑÓ³Ùһֱά³ÖÔڽϵ͵Äˮƽ¡£

δÀ´ÔÚÄÄÀï
Snowflake
Snowflake ÊÇÒ»¸ö 100% ¹¹½¨ÔÚÔÆÉϵÄÊý¾Ý²Ö¿âϵͳ£¬µ×²ãµÄ´æ´¢ÒÀÀµ S3£¬»ù±¾ÉÏÿ¸ö¹«ÓÐÔÆ¶¼»áÌṩÀàËÆ
S3 ÕâÑùµÄ¶ÔÏó´æ´¢·þÎñ£¬Snowflake Ò²ÊÇÒ»¸ö´¿´âµÄ¼ÆËãÓë´æ´¢·ÖÀëµÄ¼Ü¹¹£¬ÔÚϵͳÀïÃæ¶¨ÒåµÄ¼ÆËã½Úµã½Ð
Virtual Warehouse£¬¿ÉÒÔÈÏΪ¾ÍÊÇÒ»¸ö¸ö EC2 µ¥Ôª£¬±¾µØµÄ»º´æÓÐÈÕÖ¾ÅÌ£¬Snowflake
µÄÖ÷ÒªÊý¾Ý´æÔÚ S3 ÉÏ£¬±¾µØµÄ¼ÆËã½ÚµãÊÇÔÚ¹«ÓÐÔÆµÄÐé»úÉÏ¡£

ÕâÊÇ Snowflake ÔÚ S3 ÀïÃæ´æ´¢µÄÊý¾Ý¸ñʽµÄÌØµã£¬Ã¿Ò»¸ö S3 µÄ¶ÔÏóÊÇ 10 Õ×Ò»¸öÎļþ£¬Ö»×·¼Ó£¬Ã¿Ò»¸öÎļþÀïÃæ°üº¬Ô´ÐÅÏ¢£¬Í¨¹ýÁÐʽµÄ´æ´¢Âäµ½´ÅÅÌÉÏ¡£

Snowflake Õâ¸öϵͳ×îÖØÒªµÄÒ»¸öÉÁ¹âµã¾ÍÊǶÔÓÚͬһ·ÝÊý¾Ý¿ÉÒÔ·ÖÅ䲻ͬµÄ¼ÆËã×ÊÔ´½øÐмÆË㣬±ÈÈçij¸ö
query ¿ÉÄÜÖ»ÐèÒªÁ½Ì¨»úÆ÷£¬ÁíÍâÒ»¸ö query ÐèÒª¸ü¶àµÄ¼ÆËã×ÊÔ´£¬µ«ÊÇû¹ØÏµ£¬Êµ¼ÊÉÏÕâЩÊý¾Ý¶¼ÔÚ
S3 ÉÏÃæ£¬¼òµ¥À´ËµÁ½Ì¨»úÆ÷¿ÉÒÔ¹ÒÔØÍ¬Ò»¿é´ÅÅÌ·Ö±ðÈ¥´¦Àí²»Í¬µÄ¹¤×÷¸ºÔØ£¬Õâ¾ÍÊÇÒ»¸ö¼ÆËãÓë´æ´¢½âñîµÄÖØÒªÀý×Ó¡£
Google BigQuery
µÚ¶þ¸öϵͳÊÇ BigQuery£¬BigQuery ÊÇ Google Cloud ÉÏÌṩµÄ´óÊý¾Ý·ÖÎö·þÎñ£¬¼Ü¹¹Éè¼ÆÉϸú
Snowflake ÓеãÀàËÆ¡£BigQuery µÄÊý¾Ý´æ´¢ÔڹȸèÄÚ²¿µÄ·Ö²¼Ê½Îļþϵͳ Colossus
ÉÏÃæ£¬Jupiter ÊÇÄÚ²¿µÄÒ»¸ö¸ßÐÔÄÜÍøÂ磬ÉÏÃæÕâ¸öÊǹȸèµÄ¼ÆËã½Úµã¡£

BigQuery µÄ´¦ÀíÐÔÄܱȽϳöÉ«£¬Ã¿ÃëÔÚÊý¾ÝÖÐÐÄÄÚµÄÒ»¸öË«ÏòµÄ´ø¿í¿ÉÒÔ´ïµ½ 1 PB£¬Èç¹ûʹÓÃ
2000 ¸öרÊôµÄ¼ÆËã½Úµãµ¥Ôª£¬´ó¸ÅÒ»¸öÔµķÑÓÃÊÇËÄÍòÃÀ½ð¡£BigQuery ÊÇÒ»¸ö°´Ð踶·ÑµÄģʽ£¬Ò»¸ö
query ¿ÉÄܾÍÓÃÁ½¸ö slot£¬¾ÍÊÕÈ¡ÕâÁ½¸ö slot µÄ·ÑÓã¬BigQuery µÄ´æ´¢³É±¾Ïà¶Ô½ÏµÍ£¬1
TB µÄ´æ´¢´ó¸Å 20 ÃÀ½ðÒ»¸öÔ¡£
RockSet
µÚÈý¸öϵͳÊÇ RockSet£¬´ó¼ÒÖªµÀ RocksDB ÊÇÒ»¸ö±È½ÏÓÐÃûµÄµ¥»ú KV Êý¾Ý¿â£¬Æä´æ´¢ÒýÇæµÄÊý¾Ý½á¹¹½Ð
LSM-Tree£¬LSM-Tree µÄºËÐÄ˼Ïë½øÐзֲãÉè¼Æ£¬¸üÀäµÄÊý¾Ý»áÔÚԽϲ㡣RockSet °ÑºóÃæµÄ²ã·ÅÔÚÁË
S3 µÄ´æ´¢ÉÏÃæ£¬ÉÏÃæµÄ²ãÆäʵÊÇÓà local disk »òÕß±¾µØµÄÄÚ´æÀ´×öÒýÇæ£¬ÌìÈ»ÊÇÒ»¸ö·Ö²ãµÄ½á¹¹£¬ÄãµÄÓ¦ÓøÐÖª²»µ½ÏÂÃæÊÇÒ»¸öÔÆÅÌ»¹ÊDZ¾µØ´ÅÅÌ£¬Í¨¹ýºÜºÃµÄ±¾µØ»º´æÈÃÄã¸ÐÖª²»µ½ÏÂÃæÔÆ´æ´¢µÄ´æÔÚ¡£
ËùÒԸղſ´ÁËÕâÈý¸öϵͳ£¬ÎÒ¾õµÃÓм¸¸öÌØµã£¬Ò»¸öÊÇÊ×Ïȶ¼ÊÇÌìÈ»·Ö²¼Ê½µÄ£¬µÚ¶þ¸öÊǹ¹½¨ÔÚÔÆµÄ±ê×¼·þÎñÉÏÃæµÄ£¬ÓÈÆäÊÇ
S3 ºÍ EBS£¬µÚÈýÊÇ pay as you go£¬Ôڼܹ¹ÀïÃæ³ä·ÖÀûÓÃÁËÔÆµÄµ¯ÐÔÄÜÁ¦¡£ÎÒ¾õµÃÕâÈýµã×îÖØÒªµÄÒ»µãÊÇ´æ´¢£¬´æ´¢ÏµÍ³¾ö¶¨ÁËÔÆÉÏÊý¾Ý¿âµÄÉè¼Æ·½Ïò¡£
Ϊʲô S3 Êǹؼü£¿
ÔÚ´æ´¢Àï±ßÎÒ¾õµÃ¸ü¹Ø¼üµÄ¿ÉÄÜÊÇ S3¡£EBS ÆäʵÎÒÃÇÒ²ÓÐÑо¿¹ý£¬TiDB µÚÒ»½×¶ÎÆäʵÒѾÕýÔÚ¸ú
EBS ¿é´æ´¢×öÈںϣ¬µ«´Ó¸ü³¤Ô¶µÄ½Ç¶ÈÀ´¿´£¬ÎÒ¾õµÃ¸üÓÐÒâ˼µÄ·½ÏòÊÇÔÚ S3 Õâ±ß¡£
Ê×ÏȵÚÒ»µã S3 ·Ç³£»®Ë㣬¼Û¸ñÔ¶µÍÓÚ EBS£¬µÚ¶þ S3 ÌṩÁË 9 ¸ö 9 ºÜ¸ßµÄ¿É¿¿ÐÔ£¬µÚÈýÊǾ߱¸ÏßÐÔÀ©Õ¹µÄÍÌÍÂÄÜÁ¦£¬µÚËÄÊÇÌìÈ»¿çÔÆ£¬Ã¿Ò»¸öÔÆÉ϶¼ÓÐ
S3 API µÄ¶ÔÏó´æ´¢·þÎñ¡£µ«ÊÇ S3 µÄÎÊÌâ¾ÍÊÇËæ»úдÈëµÄÑӳٷdz£¸ß£¬µ«ÊÇÍÌÍÂÐÔÄܲ»´í£¬ËùÒÔÎÒÃÇҪȥÀûÓÃÕâ¸öÍÌÍÂÐÔÄܲ»´íµÄÕâ¸öÌØµã£¬¹æ±ÜÑӳٸߵķçÏÕ¡£ÕâÊÇ
S3 benchmark µÄÒ»¸ö²âÊÔ£¬¿ÉÒÔ¿´µ½Ëæ×Å»úÐ͵ÄÌáÉý£¬ÍÌÍÂÄÜÁ¦Ò²ÊdzÖÐøµÄÌáÉý¡£

ÈçºÎ½â¾ö Latency µÄÎÊÌ⣿
Èç¹ûÒª½â¾ö S3 µÄ Latency ÎÊÌ⣬ÕâÀïÌṩһЩ˼·£¬±ÈÈçÏñ RockSet ÄÇÑùÓà SSD
»òÕß±¾µØ´ÅÅÌÀ´×ö cache£¬»òÕßͨ¹ý kinesis дÈëÈÕÖ¾£¬À´½µµÍÕû¸öдÈëµÄÑÓ³Ù¡£»¹ÓÐÊý¾ÝµÄ¸´ÖÆ»òÕßÄãҪȥ×öһЩ²¢·¢´¦ÀíµÈ£¬Æäʵ¿ÉÒÔÈ¥×ö
Zero-copy data cloning£¬Ò²ÊǽµµÍÑÓ³ÙµÄһЩ·½Ê½¡£
ÉÏÊöÀý×ÓÓÐһЩ¹²Í¬µã¶¼ÊÇÊý¾Ý²Ö¿â£¬²»ÖªµÀ´ó¼ÒÓÐûÓз¢ÏÖ£¬ÎªÊ²Ã´¶¼ÊÇÊý¾Ý²Ö¿â£¿Êý¾Ý²Ö¿â¶ÔÓÚÍÌ͵ÄÒªÇóÆäʵÊǸü¸ßµÄ£¬¶ÔÓÚÑÓ³Ù²¢²»ÊÇÄÇôÔÚÒ⣬һ¸ö
query ¿ÉÄÜÅÜÎåÃë³ö½á¹û¾ÍÐÐÁË£¬²»ÓÃÒªÇóÎåºÁÃëÖ®ÄÚ¸ø³ö½á¹û£¬ÌرðÊǶÔÓÚһЩ Point Lookup
ÕâÖÖ³¡¾°À´Ëµ£¬Shared Nothing µÄ database ¿ÉÄÜÖ»ÐèÒª´Ó¿Í»§¶ËµÄÒ»´Î rpc£¬µ«ÊǶÔÓÚ¼ÆËãÓë´æ´¢·ÖÀëµÄ¼Ü¹¹£¬ÖмäÎÞÂÛÈçºÎÒª×ßÁ½´ÎÍøÂ磬ÕâÊÇÒ»¸öºËÐĵÄÎÊÌâ¡£

Äã¿ÉÄÜ»á˵ûÓйØÏµ£¬·´Õý¼ÆËãºÍ´æ´¢ÒѾ·ÖÀëÁË£¬´óÁ¦³öÆæ¼££¬¿ÉÒÔ¼Ó¼ÆËã½Úµã¡£µ«ÊÇÎÒ¾õµÃÐÂ˼·û±ØÒªÕâô¼«¶Ë£¬Aurora
ÊÇÒ»¸ö¼ÆËã´æ´¢·ÖÀë¼Ü¹¹£¬µ«ËüÊÇÒ»¸öµ¥»úÊý¾Ý¿â£¬Spanner ÊÇÒ»¸ö´¿·Ö²¼Ê½µÄÊý¾Ý¿â£¬´¿ Shared
Nothing µÄ¼Ü¹¹²¢Ã»ÓÐÀûÓõ½ÔÆ»ù´¡ÉèÊ©ÌṩµÄһЩÓÅÊÆ¡£
±ÈÈç˵δÀ´ÎÒÃǵÄÊý¾Ý¿â¿ÉÒÔ×öÕâÑùµÄÉè¼Æ£¬ÔÚ¼ÆËã²ãÆäʵ´ø×ÅÒ»µãµã״̬£¬ÒòΪÿ̨ EC2 ¶¼»á´øÒ»¸ö±¾µØ´ÅÅÌ£¬ÏÖÔÚÖ÷Á÷µÄ
EC2 ¶¼ÊÇ SSD£¬±È½ÏÈȵÄÊý¾Ý¿ÉÒÔÔÚÕâÒ»²ã×ö Shared Nothing£¬ÔÚÕâÒ»²ãÈ¥×ö¸ß¿ÉÓã¬ÔÚÕâÒ»²ãÈ¥×öËæ»úµÄ¶ÁÈ¡ÓëдÈë¡£ÈÈÊý¾ÝÒ»µ©
cache miss£¬²Å»áÂäµ½ S3 ÉÏÃæ£¬¿ÉÒÔÔÚ S3 Ö»×öºóÃæ¼¸²ãµÄÊý¾Ý´æ´¢£¬ÕâÖÖ×ö·¨¿ÉÄÜ»á´øÀ´ÎÊÌ⣬һµ©´©Í¸Á˱¾µØ
cache£¬Latency »áÓÐһЩ¶¶¶¯¡£

ÕâÖּܹ¹Éè¼ÆµÄºÃ´¦£ºÊ×ÏÈ£¬ÓµÓжÔʵʱҵÎñµÄÊý¾Ý¼ÆËãÇ׺ÍÁ¦£¬ÔÚ local disk ÉÏ»áÓкܶàÊý¾Ý£¬ÔÚÕâµãÉϺܶഫͳÊý¾Ý¿âµÄһЩÐÔÄÜÓÅ»¯¼¼ÇÉ¿ÉÒÔÓÃÆðÀ´£»µÚ¶þ£¬Êý¾ÝÇ¨ÒÆÆäʵ»á±äµÃºÜ¼òµ¥£¬Êµ¼ÊÉϵ×ϵĴ洢Êǹ²ÏíµÄ£¬¶¼ÔÚ
S3 ÉÏÃæ£¬±ÈÈç˵ A »úÆ÷µ½ B »úÆ÷µÄÊý¾ÝÇ¨ÒÆÆäʵ²»ÓÃÕæµÄ×öÇ¨ÒÆ£¬Ö»ÒªÔÚ B »úÆ÷É϶ÁÈ¡Êý¾Ý¾ÍÐÐÁË¡£
Õâ¸ö¼Ü¹¹µÄȱµãÊÇ£ºµÚÒ»£¬»º´æ´©Í¸ÁËÒÔºó£¬Latency »á±ä¸ß£»µÚ¶þ£¬¼ÆËã½ÚµãÏÖÔÚÓÐÁË״̬£¬Èç¹û¼ÆËã½Úµã¹ÒµôÁËÒÔºó£¬Failover
Ҫȥ´¦ÀíÈÕÖ¾»Ø·ÅµÄÎÊÌ⣬Õâ¿ÉÄÜ»áÔö¼ÓÒ»µãʵÏֵĸ´ÔÓ¶È¡£

»¹ÓкܶàÖµµÃÑо¿µÄ¿ÎÌâ
ÉÏÃæµÄ¼Ü¹¹Ö»ÊÇÒ»¸öÉèÏ룬TiDB Æäʵ»¹²»ÊÇÕâÑùµÄ¼Ü¹¹£¬µ«Î´À´¿ÉÄÜ»áÔÚÕâ·½ÏòÈ¥×öһЩ³¢ÊÔ»òÕßÑо¿£¬ÔÚÕâ¸öÁìÓòÀïÃæÆäʵ»¹Óкܶà
open question ÎÒÃÇ»¹Ã»Óд𰸣¬°üÀ¨ÔƳ§ÉÌ¡¢°üÀ¨ÎÒÃÇ£¬°üÀ¨Ñ§Êõ½ç¶¼Ã»Óд𰸡£
ÏÖÔÚÓÐһЩÑо¿µÄ¿ÎÌ⣬µÚÒ»£¬Èç¹ûÎÒÃÇÒªÀûÓñ¾µØ´ÅÅÌ£¬Ó¦¸Ã»º´æ¶àÉÙÊý¾Ý£¬LRU µÄ²ßÂÔÊÇʲôÑù×Ó£¬¸ú
performance µ½µ×ÓÐʲô¹ØÏµ£¬¸ú workload ÓÐʲô¹ØÏµ¡£µÚ¶þ£¬¶ÔÓÚÍøÂ磬¸Õ²ÅÎÒÃÇ¿´µ½
S3 µÄÍøÂçÍÌÍÂ×öµÄºÜºÃ£¬Ê²Ã´ÑùµÄÐÔÄÜÒªÅäÉÏʲôÑùµÄÍÌÍ£¬ÒªÅä¶àÉÙ¸ö¼ÆËã½Úµã£¬ÌرðÊǶÔÓÚһЩ±È½Ï¸´ÔÓ²éѯµÄ
Reshuffle£»µÚÈý£¬¼ÆË㸴ÔӶȺͼÆËã½Úµã¡¢»úÐ͵ĹØÏµÊÇʲô£¿ÕâЩÎÊÌâÆäʵ¶¼ÊDZȽϸ´ÔÓµÄÎÊÌâ£¬ÌØ±ðÊÇÔõôÓÃÊýѧÀ´±í´ï£¬ÒòΪÐèÒª×Ô¶¯»¯µØÈ¥×öÕâЩÊÂÇé¡£
¼´Ê¹ÕâЩÎÊÌâ¶¼½â¾öÁË£¬ÎÒ¾õµÃÒ²Ö»ÊÇÔÆÉÏÊý¾Ý¿âʱ´úµÄÒ»¸ö¿ªÊ¼¡£Î´À´ÔÚ Serverless£¬°üÀ¨ AI-Driven
¼¸´ó·½ÏòÉÏ£¬ÔõôÉè¼Æ³ö¸üºÃµÄ database£¬ÕâÊÇÎÒÃÇŬÁ¦µÄ·½Ïò¡£×îºóÒýÓÃÇüÔµÄÒ»¾ä»°£¬¾ÍÊÇ·ÂþÂþÆäÐÞÔ¶Ù⣬ÎÒÃÇ»¹ÓкܶàÊÂÇéÐèҪȥ×ö£¬Ð»Ð»´ó¼Ò¡£
|