±à¼ÍƼö: |
±¾ÎÄÖ÷Òª½éÉÜÁË´«Í³Êý²ÖÍ´µã¡¢HSAP£º·þÎñ·ÖÎöÒ»Ì廯¡¢Hologres¼°Êý²Ö¼Ü¹¹Éý¼¶ÄÚÈÝ¡£
±¾ÎÄÀ´×ÔÓÚsegmentfault£¬ÓÉLinda±à¼¡¢ÍƼö¡£ |
|
Ò»¡¢´«Í³Êý²ÖÍ´µã
1£©´«Í³Êý¾Ý²Ö¿âÍ´µã
ĿǰÀ´Ëµ£¬´óÊý¾ÝÏà¹ØµÄÒµÎñ³¡¾°Ò»°ãÓÐʵʱ´óÆÁ¡¢ÊµÊ±BI±¨±í¡¢Óû§»ÏñºÍ¼à¿ØÔ¤¾¯µÈ£¬ÈçÏÂͼËùʾ¡£
ʵʱ´óÆÁÒµÎñ£¬Ò»°ãÊǹ«Ë¾Áìµ¼²ã×ö¾ö²ßµÄ¸¨Öú¹¤¾ß£¬ÒÔ¼°¶ÔÍâ³É¹ûչʾ£¬±ÈÈç˫ʮһʵʱ³É½»¶î´óÆÁµÈ³¡¾°¡£
ʵʱBI±¨±í£¬ÊÇÔËÓªºÍ²úÆ·¾Àí×î³£Óõ½µÄÒµÎñ³¡¾°£¬ÊÊÓÃÓڴ󲿷ֵı¨±í·ÖÎö³¡¾°¡£
Óû§»Ïñ£¬³£ÓÃÔÚ¹ã¸æÍÆ¼ö³¡¾°ÖУ¬Í¨¹ý¸üÏêϸµÄËã·¨¸øÓû§ÌùÉϱêÇ©£¬Ê¹µÃÓªÏú»î¶¯¸ü¼ÓÓÐÕë¶ÔÐÔ£¬¸ü¼ÓÓÐЧµÄͶ·Å¸øÄ¿±êÈËȺ¡£
Ô¤¾¯¼à¿Ø´óÆÁ£¬±ÈÈç¶ÔÍøÕ¾¡¢APP½øÐÐÁ÷Á¿¼à¿Ø£¬ÔÚ´ïµ½Ò»¶¨ãÐÖµµÄʱºò¿ÉÒÔ½øÐб¨¾¯¡£

¶ÔÓÚÉÏÃæÕâЩ´óÊý¾ÝÒµÎñ³¡¾°£¬Òµ½çÔÚºÜÔç֮ǰ¾Í¿ªÊ¼Í¨¹ýÊý¾Ý²Ö¿âµÄ½¨ÉèÀ´Âú×ãÕâЩ³¡¾°µÄÐèÇ󣬱Ƚϴ«Í³µÄ×ö·¨ÊÇÈçÏÂͼËùʾµÄÀëÏßÊý¾Ý²Ö¿â£¬Æä´óÖÂÁ÷³Ì¾ÍÊÇ£ºÊ×ÏȽ«¸÷ÀàÊý¾ÝÊÕ¼¯ÆðÀ´£¬È»ºó¾¹ýETL´¦Àí£¬ÔÙͨ¹ý²ã²ã½¨Ä£¶ÔÊý¾Ý½øÐоۺϡ¢É¸Ñ¡µÈ´¦Àí£¬×îºóÔÚÐèÒªµÄʱºò»ùÓÚÓ¦ÓòãµÄ¹¤¾ß¶ÔÊý¾Ý½øÐÐÕ¹ÏÖ£¬»òÕßÉú³É±¨±í¡£

ÉÏÃæÕâÖÖ·½Ê½ËäÈ»¿ÉÒÔ¶Ô½Ó¶àÖÖÊý¾ÝÔ´£¬µ«ÊÇ´æÔÚһЩºÜÃ÷ÏÔµÄÍ´µã£º
ETLÂß¼¸´ÔÓ£¬´æ´¢¡¢Ê±¼ä³É±¾¹ý¸ß£»
Êý¾Ý´¦ÀíÁ´Â··Ç³£³¤£»
ÎÞ·¨Ö§³Öʵʱ/½üʵʱµÄÊý¾Ý£¬Ö»ÄÜ´¦ÀíT+1µÄÊý¾Ý¡£
2£©Lambda¼Ü¹¹Í´µã
Ëæ×Åʵʱ¼ÆËã¼¼ÊõµÄÐËÆð£¬³öÏÖÁËLambda¼Ü¹¹¡£Lambda¼Ü¹¹µÄÔÀíÈçÏÂͼËùʾ£¬Æä˼·ÆäʵÊÇÏ൱ÓÚÔÚ´«Í³ÀëÏßÊý²ÖµÄ»ù´¡ÉÏÔÙ¼ÓÉÏÒ»¸ö´¦ÀíʵʱÊý¾ÝµÄ²ã£¬È»ºó½«ÀëÏßÊý²ÖºÍʵʱÁ´Â·²úÉúµÄÊý¾ÝÔÚServing²ã½øÐÐMerge£¬ÒÔ´ËÀ´¶ÔÀëÏß²úÉúµÄÊý¾ÝºÍʵʱ²úÉúµÄÊý¾Ý½øÐвéѯ¡£´Ó2011ÄêÖÁ½ñ£¬Lambda¼Ü¹¹±»¶àÊý»¥ÁªÍø¹«Ë¾Ëù²ÉÄÉ£¬Ò²È·Êµ½â¾öÁËһЩÎÊÌ⣬µ«ÊÇËæ×ÅÊý¾ÝÁ¿µÄÔö´ó¡¢Ó¦Óø´ÔӶȵÄÌáÉý£¬ÆäÎÊÌâÒ²Öð½¥Í¹ÏÔ£¬Ö÷ÒªÓУº
ÓɶàÖÖÒýÇæºÍϵͳ×éºÏ¶ø³É£¬¿ª·¢ºÍά»¤³É±¾¸ß£¬Ñ§Ï°³É±¾¸ß£»
Êý¾ÝÔÚ²»Í¬µÄViewÖд洢¶à·Ý£¬¿Õ¼äÀË·Ñ£¬Êý¾ÝÒ»ÖÂÐÔµÄÎÊÌâÄÑÒÔ½â¾ö£»
´ÓʹÓÃÉÏÀ´Ëµ£¬Batch£¬StreamingÒÔ¼°Merge QueryµÈ´¦Àí¹ý³ÌÖоùʹÓò»Í¬µÄlanguage£¬Ê¹ÓÃÆðÀ´²¢²»ÈÝÒ×£»
ѧϰ³É±¾·Ç³£¸ß£¬Ôö´óÁËÓ¦Óóɱ¾¡£

ÉÏÃæ½²µ½µÄÎÊÌ⣬ÔÚ°¢ÀïÄÚ²¿ÆäʵҲ¶¼Óöµ½¹ý¡£ÈçÏÂͼËùʾÊǰ¢Àï°Í°ÍÔÚ2011-2016Äê³ÁµíÏÂÀ´µÄÒ»Ì×ʵʱÊý²Ö¼Ü¹¹£¬Æä±¾ÖÊÉÏÒ²ÊÇLambda¼Ü¹¹£¬È»¶øËæ×ÅÒµÎñÁ¿¼°Êý¾ÝµÄÔö³¤£¬¹ØÏµ¸´ÔÓ¶ÈÔ½À´Ô½´ó£¬³É±¾¼±¾çÔö¼Ó£¬Òò´Ë£¬ÎÒÃÇÆÈÇеÄÐèÒªÒ»ÖÖ¸üÓÅÑŵķ½°¸È¥½â¾öÀàËÆµÄÎÊÌâ¡£

¶þ¡¢HSAP£º·þÎñ·ÖÎöÒ»Ì廯
»ùÓÚÉÏÊö±³¾°£¬ÎÒÃÇÌá³öÁËHSAP£¨Hybrid Serving and AnalyticalProcessing£©ÀíÄËü¼ÈÄÜÖ§³ÖºÜ¸ßQPS³¡¾°µÄ²éѯдÈ룬ÓÖÄܽ«¸´ÔӵķÖÎö³¡¾°ÔÚÒ»Ì×ÌåϵÀïÃæÍê³É¡£ÄÇô£¬HSAPÀíÄîÂ䵨µÄºËÐÄÊÇʲô£¿
Ê×ÏÈ£¬ÒªÓÐÒ»Ì׷dz£Ç¿´óµÄ´æ´¢£¬Äܹ»Í¬Ê±´æ´¢ÊµÊ±Êý¾ÝºÍÀëÏßÊý¾Ý£¬Í³Ò»Êý¾Ý´æ´¢£»
ͬʱ»¹ÒªÓÐÒ»ÖÖ¸ßЧµÄ²éѯ·þÎñ£¬ÔÚͬһ¸ö½Ó¿ÚÏ£¨±ÈÈçSQL£©£¬Äܹ»Ö§³Ö¸ßQPSµÄ²éѯ£¬Ö§³Ö¸´ÔӵķÖÎöÒÔ¼°Áª°î²éѯºÍ·ÖÎö£»
ϵͳÄܹ»Ö±½Ó¶Ô½Óǰ¶ËÓ¦Óã¬ÀýÈ籨±íºÍÔÚÏß·þÎñµÈ£¬²»ÐèÒªÔÙ¶îÍâµÄµ¼Èëµ¼³ö¾ÍÄܼ´Ï¯·ÖÎö£¬Í³Ò»Êý¾Ý·þÎñ£¬¼õÉÙÊý¾ÝÒÆ¶¯¡£

Èý¡¢¹ØÓÚHologres
»ùÓÚHSAPµÄÉè¼ÆÀíÄÎÒÃÇÒª¿ª·¢²¢Â䵨³öÏàÓ¦µÄ²úÆ·£¬ÓÚÊDZ㵮ÉúÁËHologres¡£HologresÊÇ»ùÓÚHSAP·þÎñ·ÖÎöÒ»Ì廯ÀíÄîµÄ×î¼ÑÂäµØÊµ¼ù£¬¼æÈÝPostgreSQLÉú̬¡¢Ö§³ÖMaxComputeÊý¾ÝÖ±½Ó²éѯ£¬Ö§³ÖʵʱдÈëʵʱ²éѯ£¬ÊµÊ±ÀëÏßÁª°î·ÖÎö£¬µÍ³É±¾¡¢¸ßʱЧ°ïÖúÆóÒµ¿ìËÙ¹¹ÖþÁ÷ÅúÒ»ÌåµÄʵʱÊý²Ö¡£HologresÕâ¸ö´ÊÊÇHolographicºÍPostgresµÄ×éºÏ£¬Postgres±È½ÏºÃÀí½â£¬´ú±í×ÅHologres¼æÈÝPostgreSQLÉú̬¡£¶øHolographicÐèÒªÕ¹¿ª·ÖÏí£¬ÏÈ¿´ÏÂͼ£º

HolographicÖÐÎÄ·ÒëÊÇ"ȫϢ"£¬¾ÍÊÇ´ó¼Ò¾³£Ìýµ½µÄ3DȫϢͶӰ¼¼ÊõµÄ"ȫϢ"¡£¶øHolographic
Principle£¨È«Ï¢ÔÀí£©ÔÚÎïÀíѧÖÐÊÇÓÃÀ´ÃèÊöÒ»¸ö¿Õ¼äµÄÐÔÖʿɱàÂëÔÚÆä±ß½çÉÏ¡£ÉÏͼÊÇÒ»¸±¼ÙÏëÖкڶ´µÄͼƬ£¬¾àÀëºÚ¶´Ò»¶¨¾àÀë´¦ÓÚ¿ÉÒÔÌÓÒݳöºÚ¶´ÒýÁ¦µÄÁÙ½çµã¹¹³ÉÁËEvent
Horizon£¬¾ÍÊÇͼÖз¢ÁÁ¹âµÄÄÇһȦ¡£È«Ï¢ÔÀíÈÏΪËùÓÐÂäÈëºÚ¶´µÄÎïÌåÐÅÏ¢ÄÚÈÝ¿ÉÄܻᱻÍêÈ«°üº¬ÔÚEvent
HorizonµÄ±íÃæ¡£HologresÒª×öµÄÊÂÇé¾ÍÊǶÔÊý¾ÝºÚ¶´ÖеÄÈ«²¿ÐÅÏ¢×ö´æ´¢ºÍ¸÷ÖÖÀàÐ͵ļÆËã¡£
ËÄ¡¢HologresºËÐļ¼Êõ½ÒÃØ
Hologres¼Ü¹¹·Ç³£¼òµ¥£¬ÊÇ´æ´¢¼ÆËã·ÖÀëµÄ¼Ü¹¹£¬Êý¾ÝÈ«²¿´æÔÚÒ»¸ö·Ö²¼Ê½ÎļþϵͳÖУ¬ÏµÍ³¼Ü¹¹Í¼ÈçÏÂͼËùʾ£º
·þÎñ½ÚµãBackendÕæÕýÈ¥½ÓÊÕÊý¾Ý¡¢´æ´¢ºÍ²éѯ£¬²¢ÇÒÄܹ»Ö§³ÖÊý¾ÝµÄ¼ÆË㣻
Ö´ÐÐÒýÇæFrontend½ÓÊÕ·ÓÉ·Ö·¢µÄSQL£¬È»ºóÉú³ÉÂß¼Ö´Ðмƻ®£¬ÔÙͨ¹ýÓÅ»¯Æ÷Éú³É·Ö²¼Ê½µÄÎïÀíÖ´Ðмƻ®£¬·¢²¼µ½Backend×ö·Ö²¼Ê½µÄÖ´ÐУ»
½ÓÈë¶ËÓÉLBS×öÏàÓ¦µÄ¸ºÔؾùºâÈÎÎñ¡£
ÏÂͼÖлÆÉ«²¿·Ö¾ù²¿ÊðÔÚÈÝÆ÷ÖУ¬Õû¸ö·Ö²¼Ê½ÏµÍ³¿ÉÒÔ×öµ½¸ß¶ÈÈÝ´í¡£
¼æÈÝPostgreSQLÉú̬£¬ÔÚÉϲã¿ÉÒÔÖ±½Ó¶Ô½Ó¿ªÔ´»òÕßÉÌÒµ»¯µÄ¿ª·¢/BI¹¤¾ß£¬¿ªÏä¼´¿ÉÓá£

´æ´¢¼ÆËã·ÖÀë
Hologres²ÉÓô洢¼ÆËã·ÖÀë¼Ü¹¹£¬Óû§¿ÉÒÔ¸ù¾ÝÒµÎñÐèÇó½øÐе¯ÐÔÀ©ËõÈÝ¡£·Ö²¼Ê½´æ´¢ÖУ¬³£Óõļܹ¹ÓÐÈçÏÂÈýÖÖ£º
Shared Disk/Storage£º¾ÍÊÇÔÚ´æ´¢¼¯ÈºÉϹÒÔØÁ˺ܶà´ÅÅÌ£¬Ã¿¸ö¼ÆËã½Úµã¶¼¿ÉÒÔÖ±½Ó·ÃÎÊÕâЩ¹²ÏíÅÌ£»
Shared Nothing£º¼Ü¹¹¾ÍÊÇÿ¸ö¼ÆËã½Úµã×Ô¼º¹ÒÔØ´æ´¢£¬½ÚµãÖ®¼ä¿ÉÒÔͨÐÅ£¬µ«ÊǸ÷¸ö½ÚµãÖ®¼äµÄÅ̲»¹²Ïí£¬´æÔÚ×ÊÔ´À˷ѵÄÇé¿ö£»
Storage Disaggregation£º¾ÍÊÇÏ൱ÓÚ°Ñ´æ´¢¼¯Èº¿´×öÒ»¸ö´óµÄ´ÅÅÌ£¬Ã¿¸ö¼ÆËã½Úµã¶¼¿ÉÒÔ·ÃÎÊ£¬ÇÒÿ¸ö¼ÆËã½Úµã¶¼ÓÐÒ»¶¨µÄ»º´æ¿Õ¼ä£¬¿ÉÒÔ¶Ô»º´æÊý¾Ý½øÐзÃÎÊ£¬Ò²ÎÞÐè¹ØÐÄ´æ´¢¼¯ÈºµÄ¹ÜÀí£¬ÕâÖÖ´æ´¢¼ÆËã·ÖÀëµÄ¼Ü¹¹±ãÓÚÁé»îÀ©ÈÝ£¬Äܹ»ÓÐЧ½ÚÊ¡×ÊÔ´¡£

Á÷ÅúÒ»ÌåµÄ´æ´¢
Hologres¶¨Î»ÊÇÁ÷ÅúÒ»Ìåͳһ´æ´¢¡£¶ÔÓÚµäÐ͵ÄLambda¼Ü¹¹£¬Êǽ«ÊµÊ±Êý¾Ýͨ¹ýʵʱÊý¾ÝµÄÁ´Â·Ð´È뵽ʵʱÊý¾Ý´æ´¢ÖУ¬ÀëÏßÊý¾Ýͨ¹ýÀëÏßÊý¾ÝµÄÁ´Â·Ð´Èëµ½ÀëÏß´æ´¢ÖУ¬È»ºó½«²»Í¬µÄQuery·ÅÈ벻ͬµÄ´æ´¢ÖУ¬ÔÙ×öMerge£¬ÓÉ´Ë´øÀ´¶à·Ý´æ´¢¿ªÏúºÍÓ¦Óò㸴ÔÓµÄMerge²Ù×÷¡£¶øÍ¨¹ýHologres£¬Êý¾ÝÊÕ¼¯Ö®ºó¿ÉÒÔ×ß²»Í¬µÄ´¦ÀíÁ´Â·£¬µ«ÊÇ´¦ÀíÍê³ÉÖ®ºóµÄ½á¹û¶¼¿ÉÒÔÖ±½ÓдÈëHologres£¬ÕâÑù¾Í½â¾öÁËÊý¾ÝµÄÒ»ÖÂÐÔÎÊÌ⣬Ҳ²»ÐèÒªÈ¥Çø·ÖÀëÏß±íºÍʵʱ±í£¬½µµÍÁ˸´ÔÓ¶È£¬Ò²´ó´ó½µµÍÁËʹÓÃÕßµÄѧϰ³É±¾¡£

´æ´¢ÒýÇæ
Hologresµ×²ãÖ§³ÖÐд洢ºÍÁд洢Á½ÖÖÎļþ¸ñʽ£¬ÐдæÊÊÓÃÓÚ»ùÓÚPKµÄµã²é³¡¾°£¬ÁдæÊÊÓÃÓÚOLAP¸´ÔÓ²éѯ³¡¾°¡£¶ÔÓÚÁ½ÖÖ´æ´¢¸ñʽHologresÔڵײ㴦ÀíÒ²ÓÐÂÔ΢²»Í¬£¬ÈçͼËùʾ¡£Êý¾ÝдÈëµÄʱºòÏÈдlog£¬log´æ´¢ÔÚ·Ö²¼Ê½Îļþϵͳ£¬±£Ö¤Õû¸ö·þÎñµÄÊý¾Ý²»»á¶ªÊ§£¬ÒòΪ¼´±ã·þÎñÆ÷¹ÒµôÒ²¿ÉÒÔ´Ó·Ö²¼Ê½ÏµÍ³Öлָ´¡£LogдÍêÖ®ºóÔÙдMemTable£¬¾ÍÊÇÄÚ´æ±í£¬ÕâÑùϵͳ²ÅÈÏΪÊÇÊý¾ÝдÈë³É¹¦¡£MemTableÓÐÒ»¶¨µÄ´óС£¬Ð´ÂúÁËÖ®ºó»á½«ÆäÖеÄÊý¾ÝÖð½¥Flushµ½ÎļþÖУ¬ÎļþÊÇ´æ´¢ÔÚ·Ö²¼Ê½ÏµÍ³Öеġ£¶ø¶ÔÓÚÐд洢ºÍÁд洢µÄÇø±ð¾ÍÔÚFlushµ½ÎļþµÄÕâ¸ö¹ý³ÌÖУ¬Õâ¸ö¹ý³Ì»á½«Ðдæ±íFlush³ÉÐд洢µÄÎļþ£¬Áдæ±í»áFlush³ÉÁдæÎļþ¡£ÔÚFlushµÄ¹ý³ÌÖлá²úÉúºÜ¶àСÎļþ£¬ºǫ́»á½«ÕâЩСÎļþºÏ²¢³ÉÒ»¸ö´óÎļþ¡£

Ö´ÐÐÒýÇæ
HologresÖ´ÐÐÒýÇæÊÇͨÓõķֲ¼Ê½²éѯÒýÇæ£¬²àÖØÓÚÓÅ»¯¸ß²¢·¢µÍÑÓ³ÙµÄʵʱ²éѯ¡£Í¨ÓÃÊÇÖ¸¿ÉÒÔ±í´ïºÍ¸ßЧµØÖ´ÐÐËùÓÐÀàSQL²éѯ¡£ÆäËüµÄ·Ö²¼Ê½²éѯÒýÇæ£¬ÓеÄרעÓÅ»¯ÊµÊ±±íµÄ³£Óõ¥±í²éѯ£¬µ«ÊǶԸ´ÔÓ²éѯ±íÏÖ²»¼Ñ£»ÓеÄÖ§³Ö¸´ÔÓ²éѯ£¬µ«ÊÇʵʱ³¡¾°ÐÔÄÜÒª²îÒ»½Ø¡£HologresµÄÀíÄîÊDz»×öÍ×У¬¶ÔÕâЩ³¡¾°¶¼ÒªÃé×¼¼«ÖÂÐÔÄÜ¡£HologresÖ´ÐÐÒýÇæÄܹ»×öµ½¶Ô¸÷ÖÖ²éѯÀàÐ͵ĸßÐÔÄÜ´¦Àí£¬Ö÷ÒªÊÇ»ùÓÚÒÔÏÂÌØµã£º
¶Ëµ½¶ËµÄÈ«Òì²½´¦Àí¿ò¼Ü£¬¿ÉÒÔ±ÜÃâ¸ß²¢·¢ÏµÍ³µÄÆ¿¾±£¬³ä·ÖÀûÓÃ×ÊÔ´£¬²¢ÇÒ×î´ó¿ÉÄܵرÜÃâ´æ´¢¼ÆËã·ÖÀëϵͳ´øÀ´µÄ¶ÁÊý¾ÝÑÓ³ÙµÄÓ°Ïì¡£
²éѯÓÃÒì²½Ëã×Ó×é³ÉµÄÖ´ÐÐͼDAG±íʾ£¬¿ÉÒÔ·½±ã¶Ô½Ó²éѯÓÅ»¯Æ÷£¬ÀûÓÃÒµ½ç¸÷ÖÖ²éѯÓÅ»¯¼¼Êõ¡£
Ëã×ÓÄÚ²¿´¦ÀíÊý¾Ýʱ×î´ó¿ÉÄܵØÊ¹ÓÃÏòÁ¿»¯Ö´ÐС£
ºÍ´æ´¢ÒýÇæµÄÉî¶È¼¯³É£¬Áé»îµÄÖ´ÐÐÄ£ÐÍ£¬Äܹ»³ä·ÖÀûÓø÷ÖÖË÷Òý£¬²¢ÇÒ×î´ó»¯µØÑÓ³ÙÏòÁ¿ÎﻯºÍÑÓ³Ù¼ÆË㣬±ÜÃâ²»±ØÒªµÄ¶ÁÊý¾ÝºÍ¼ÆËã¡£
¶Ô³£¼ûʵʱÊý¾ÝÓ¦ÓòéѯģʽµÄ×ÔÊÊÓ¦ÔöÁ¿´¦Àí¡£
¶ÔһЩ²éѯģʽµÄ¶ÀÌØÓÅ»¯¡£
ÓÅ»¯Æ÷
HologresµÄÄ¿±ê¾ÍÊÇÓû§¿ªÏä¼´¿ÉÓ㬼´Í¨¹ýSQL¾ÍÄÜÍê³ÉÈÕ³£ËùÓеÄÒµÎñ·ÖÎöÐèÇó£¬ÎÞÐèÔÙ×ö¶îÍâµÄ½¨Ä£´¦ÀíµÈ²Ù×÷¡£»ùÓÚеÄÓ²¼þ¼¼Êõ£¬HologresÉè¼Æ²¢ÊµÏÖÁË×Ô¼º¶ÀÌØµÄ¼ÆËãºÍ´æ´¢ÒýÇæ£¬¶øÓÅ»¯Æ÷°çÑݵĽÇÉ«¾ÍÊǽ«Óû§Ö´ÐеÄSQL¸ßЧµÄÔËÐÐÔÚ¼ÆËãÒýÇæÉÏ¡£HologresÓÅ»¯Æ÷²ÉÓûùÓÚ´ú¼ÛµÄÓÅ»¯Æ÷£¬Äܹ»Éú³É¸´ÔÓµÄÁª°î²éѯִÐмƻ®£¬¾¡¿ÉÄÜ·¢»Ó¶àÌ×¼ÆËãÒýÇæµÄÄÜÁ¦¡£Í¬Ê±£¬ÔÚ³¤ÆÚÓëÒµÎñ´òÄ¥µÄ¹ý³Ìµ±ÖУ¬Ò²»ýÀÛ³ÁµíÁË´óÁ¿µÄÒµÎñÓÅ»¯ÊֶΣ¬ÈÃHologresµÄ¼ÆËãÒýÇæÔÚ²»Í¬µÄÒµÎñ³¡¾°Ï¶¼Äܹ»·¢»Ó¼«ÖµÄÐÔÄÜ¡£
HOS&HoloFlow
Hologres×îºËÐĵÄ×é¼þÃû½Ðblackhole£¬ÊÇÒ»¿îÍêÈ«×ÔÑеĴ洢¼ÆËãÒýÇæ£¬²ÉÓÃÒì²½±à³Ì·½Ê½¿ª·¢¡£blackholeµÄµ×²ãÌáÁ¶³öÁËÁé»î¸ßЧµÄÒì²½¿ò¼Ü£ºholo-os£¨¼ò³ÆHOS£©¡£ÔÚʵÏÖ¸ßÐÔÄܵÄͬʱ£¬»¹ÊµÏÖÁËload
balance£¬½â¾öÁËquery³¤Î²ÎÊÌ⣻ʵÏÖÁË×ÊÔ´µÄ¸ßÀûÓÃÂÊ¡¢ÒÔ¼°¶àÖÖ¹²ÏíÓë¸ôÀëµÄ»úÖÆ¡£ÓÚ´Ëͬʱ£¬holo-os»¹Íƹ㵽ÁË·Ö²¼Ê½»·¾³£¬·¢Õ¹³öÁËholo-flow·Ö²¼Ê½ÈÎÎñµ÷¶È¿ò¼Ü£¬ÕâÑù¾ÍÄܱ£Ö¤ÔÚ·Ö²¼Ê½»·¾³ÏÂÒ²ÄÜÏíÊܵ½µ¥»úµ÷¶ÈµÄÁé»îÐÔ¡£
Frontend
FrontendÊÇHologresµÄ½ÓÈë²ã£¬¼æÈÝPostgreSQLÐÒ飬¸ºÔðÓû§ÇëÇóµÄ½ÓÈë¡¢´¦ÀíÒÔ¼°ÔªÊý¾ÝµÄ¹ÜÀí¡£µ«ÓÉÓÚPostgreSQLÊǵ¥»úϵͳ£¬´¦Àí¸ß²¢·¢µÄÓû§ÇëÇóÄÜÁ¦ÓÐÏÞ¡£¶øHologresÃæ¶ÔµÄÊǸ´ÔÓµÄÒµÎñ³¡¾°ÒÔ¼°ÐèÒªÖ§³ÖÍòÉõÖÁÒÚ¼¶±ðµÄÓû§ÇëÇó£¬ËùÒÔÔÚʵÏÖÉÏFrontend²ÉÓ÷ֲ¼Ê½£¬Í¨¹ý¶à°æ±¾¿ØÖÆ+ÔªÊý¾Ýͬ²½µÈ·½Ê½ÊµÏÖÁ˶àFrontendÖ®¼äÐÅϢʵʱͬ²½£¬ÔÙÅäºÏLBS²ãµÄ¸ºÔؾùºâʵÏÖÁËÍêÈ«ÏßÐÔÀ©Õ¹ºÍ³¬¸ßQPSµÄÄÜÁ¦¡£
À©Õ¹Ö´ÐÐÒýÇæ
ÔÚFrontendµÄ»ù´¡ÉÏ£¬HologresÒ²Ìṩ¶àÀ©Õ¹Ö´ÐÐÒýÇæ¡£
PQE£¨P Query Engine)£ºÔËÐÐSQLÒÔ¼°¸÷ÖÖFunctionµÄÖ´ÐÐÆ÷£¬Hologres¼æÈÝPostgresÌṩÀ©Õ¹ÄÜÁ¦£¬Ö§³ÖPGÉú̬µÄ¸÷ÖÖÀ©Õ¹×é¼þ£¬ÈçPostgis£¬UDF£¨pl/java£¬pl/sql,pl/python£©µÈ£¬ÍêÃÀÂú×㲻ͬ³¡¾°²»Í¬Óû§µÄÐèÇ󣬴ӶøÌṩ¸ü¶àµÄ¼ÆËãÄÜÁ¦¡£
SQE£¨S Query Engine£©£ºÎÞ·ì¶Ô½ÓMaxCompute(ODPS)µÄÖ´ÐÐÆ÷£¬ÊµÏÖ¶ÔMaxComputeµÄnative·ÃÎÊ£¬ÎÞÐèÇ¨ÒÆºÍµ¼ÈëÊý¾Ý£¬¾Í¿ÉÒÔ¸ßÐÔÄܺÍÈ«¼æÈݵķÃÎʸ÷ÖÖMaxComputeÎļþ¸ñʽ£¬ÒÔ¼°Hash/Range
clustered tableµÈ¸´ÔÓ±í£¬ÊµÏÖ¶ÔPB¼¶ÀëÏßÊý¾ÝµÄ½»»¥Ê½·ÖÎö¡£
Éú̬ÓëÊý¾Ý¼¯³É
Hologres×÷ΪÁ÷ÅúÒ»ÌåµÄʵʱÊý²Ö£¬Ö§³Ö¶àÖÖÒì¹¹Êý¾ÝÔ´µÄʵʱ¡¢ÀëÏßдÈ룬°üÀ¨MySQL¡¢DatahubµÈ£¬Äܹ»´ïµ½Ã¿ÃëǧÍòÌõµÄʵʱдÈëÄÜÁ¦£¬Ð´Èë¼´¿É²éºÍÿÃëǧÍò´ÎµÄµã²éÄÜÁ¦¡£¶øÕâЩǿ´óµÄÄÜÁ¦¶¼ÊÇ»ùÓÚHologresµÄJDBC½Ó¿Ú¡£HologresÔÚ½Ó¿ÚÉÏÍêÈ«¼æÈÝPostgreSQL£¨°üÀ¨Óï·¨¡¢ÓïÒå¡¢ÐÒéµÈ£©£¬¿ÉÒÔÖ±½ÓʹÓÃPostgreSQLµÄJDBC
DriverÈ¥Á¬½ÓHologres£¬²¢½øÐÐÊý¾ÝµÄ¶Áд¡£Ä¿Ç°ÊÐÃæÉϵÄÊý¾Ý¹¤¾ß£¬ÀýÈçBI¹¤¾ß¡¢ETL¹¤¾ßµÈµÈ£¬¶¼Ö§³ÖPostgreSQL
JDBC Driver£¬ËùÒÔÕâÒâζ×ÅHologresÌìÉú¾ÍÓÐÁ˹㷺µÄ¹¤¾ß¼æÈÝÐÔºÍÇ¿´óµÄÉú̬£¬ÊµÏÖ´ÓÊý¾Ý´¦Àíµ½Êý¾ÝµÄ¿ÉÊÓ»¯·ÖÎöÍêÕû´óÊý¾ÝÉú̬±Õ»·¡£
ÔÚÏß·þÎñÓÅ»¯
Hologres×÷ΪHSAP·þÎñÓë·ÖÎöÒ»Ì廯µÄ×î¼ÑÂäµØÊµ¼ù£¬³ýÁ˾߱¸´¦Àí·ÖÎöÐÍqueryµÄÄÜÁ¦Í⣬»¹¾ß±¸Ê®·ÖÇ¿´óµÄÔÚÏß·þÎñÄÜÁ¦£¬ÀýÈ磬KVµã²éÓëÏòÁ¿¼ìË÷¡£ÔÚKVµã²é³¡¾°ÖУ¬Holgresͨ¹ýSQL½Ó¿Ú¿ÉÒÔÇáËÉÎȶ¨µØÖ§³Ö°ÙÍò¼¶µÄQPSÍÌÍÂÓ뼫µÍµÄÑÓʱ¡£ÔÚÏòÁ¿¼ìË÷³¡¾°£¬Óû§Í¬Ñù¿ÉÒÔͨ¹ýSQLµÄ·½Ê½À´ÊµÏÖÏòÁ¿Êý¾ÝµÄµ¼Èë¡¢ÏòÁ¿Ë÷ÒýµÄ¹¹½¨¡¢²éѯµÈ²Ù×÷£¬ÎÞÐè¶îÍâת»»¾ÍÄܲéѯ£¬ÐÔÄܾ¹ýʵ¼ÊÒµÎñµÄ²âÊÔÒ²Ïà±ÈÆäËû²úÆ·¸üÓÅ¡£´ËÍ⣬һЩ·Ç·ÖÎöÐ͵Äqueryͨ¹ýºÏÀíµÄ½¨±í¡¢ÅäºÏÉÏHologresÇ¿´óµÄË÷ÒýÄÜÁ¦£¬Ò²Í¬Ñù¿ÉÒÔÍêÃÀÊÊÓÃserving³¡¾°¡£
Îå¡¢Êý²Ö¼Ü¹¹Éý¼¶
»ùÓÚHologres£¬¶à¸öÒµÎñ³¡¾°Ò²Íê³ÉÁ˼ܹ¹Éý¼¶£¬¼«´óµÄ¼ò»¯ÁËÒµÎñ¼Ü¹¹µÄ¸´ÔÓ¶È£¬ÈçÏÂͼËùʾ£º

×ܽá
Hologres×÷ΪÐÂÒ»´úÔÆÔÉúʵʱÊý²Ö£¬ÔÚ½ñÄê°¢Àï°Í°ÍË«11×îºËÐĵÄÊý¾ÝÒµÎñ³¡¾°£¬Á¬Í¬ÊµÊ±¼ÆËãFlinkÊ×´ÎÂ䵨Á÷ÅúÒ»Ì壬²¢ÔÚÎȶ¨ÐÔ¡¢ÐÔÄܵȷ½Ãæ¾ÊÜס¿¼Ñ飬ʵÏÖÉÌҵȫÁ´Â·ÊµÊ±»¯£¬ºÁÃë¼¶µÄº£Á¿Êý¾Ý´¦ÀíÄÜÁ¦£¬2020˫ʮһ£¬Hologres¶¥×¡ÁË5.96ÒÚÿÃëµÄʵʱÊý¾Ýºé·å£¬µ¥±í´æ´¢¸ß´ï2.5PB¡£»ùÓÚÍòÒÚ¼¶Êý¾Ý¶ÔÍâÌṩ¶àά·ÖÎöºÍ·þÎñ£¬99.99%µÄ²éѯ¿ÉÒÔÔÚ80msÒÔÄÚ·µ»Ø½á¹û£¬ÕæÕý×öµ½Êý¾ÝµÄʵʱ¼°ÀëÏßÒ»Ì廯£¬Ö§³ÖÔÚÏßÓ¦Ó÷þÎñ£¬ÎªÉ̼ҺÍÏû·ÑÕß´øÀ´Á˸ü¼ÓÖÇÄܵÄÏû·ÑÌåÑé¡£Ëæ×ÅÒµÎñµÄ·¢Õ¹ºÍ¼¼ÊõµÄÑݽø£¬HologresÒ²½«³ÖÐøÓÅ»¯ºËÐļ¼Êõ¾ºÕùÁ¦£¬ÕæÕýʵÏÖ·þÎñºÍ·ÖÎöÒ»Ì廯µÄÃÀºÃÔ¸Íû£¬Îª¸ü¶àÓû§³ÖÐø¸³ÄÜ¡£
Hologresµ®Éúµ½²ÎÓë2020ÄêÊ·ÉÏ×îǿ˫ʮһµÄÈýÄê¶àʱ¼äÀÍê³É²»ÉÙ´Ó0µ½1µÄÍ»ÆÆ£º
´ÓÒ»¸öÒµÎñµ½Êý°ÙÒµÎñʵÀý£¬¸²¸ÇÁ˰¢Àï°Í°Í¼¯ÍÅÄÚ90%ÒÔÉÏÒµÎñ³¡¾°£¬°üÀ¨Ë«Ê®Ò»ÊµÊ±Ö±²¥¼ä¡¢ÖÇÄÜÍÆ¼ö¡¢°¢ÀïÂèÂèÊý¾Ýƽ̨¡¢¹ú¼ÊÕ¾Êý¾Ýƽ̨¡¢²ËÄñÊý¾Ýƽ̨¡¢ÓÑÃË+È«ÓòÊý¾Ý·ÖÎö¡¢CCOÖÇÄܿͷþ¡¢ÐÂÁãÊÛÊý¾Ýƽ̨¡¢¿¼À¡¢¶öÁËôµÈÒµÎñ¡£
¼¯Èº¹æÄ£´Ó0µ½½üÍǫ̀£¬ÇÒ´æ´¢¼¯ÈººÍ¼ÆË㼯ȺʹÓÃÂʶ¼±È½Ï¸ß£¬²¢Íê³ÉÁËϵͳ²úÆ·»¯-ÉÏÔÆ-ÉÌÒµ»¯µÄÈý¼¶Ìø£¬ÍêÃÀ¸³Äܰ¢ÀïÔÆ¹«¹²ÔÆ+רÓÐÔÆ+½ðÈÚÔÆÒµÎñ¡£
Ìá³öHSAP£¨HybridServing & Analytics Processing£©·þÎñ·ÖÎöÒ»Ì廯µÄϵͳÉè¼ÆÀíÄͬһ·ÝÊý¾ÝͬʱÂú×ãʵʱÀëÏßÔÚÏß³¡¾°µÄ¼ÆËãÐèÇ󣬼«´óµÄ¼ò»¯ÁËÊý²Ö¼Ü¹¹µÄ¸´ÔÓ¶È£¬½µµÍÁ˳ɱ¾£¬ÖØÐ¶¨ÒåÊý²ÖÇ÷ÊÆ¡£
ͬʱ£¬ÓйØHologresµÄ¼¼Êõ½â¶ÁPaperÈëÑ¡Êý¾Ý¿â¶¥»áVLDB¡¶Alibaba Hologres:
ACloud-Native Service for Hybrid Serving/Analytical
Processing¡·£¨http://www.vldb.org/pvldb/vol13/p3272-jiang.pdf£©
Öµ´ËÖ®¼Ê£¬ÎÒÃÇÒ²½«Ê״ζÔÍ⹫¿ªHologresµÄºËÐĵײ㼼Êõ£¬½ÒÃØHologresΪºÎÄÜÖ§³Å°¢Àï°Í°ÍºËÐij¡¾°µÄÂ䵨¡£ |