Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÍòÒÚ¼¶ÈÕÖ¾ÓëÐÐΪÊý¾Ý´æ´¢²éѯ¼¼ÊõÆÊÎö
 
×÷ÕߣºÍõ¾¢ À´Ô´£ºinfoq ·¢²¼ÓÚ£º 2017-3-10
  2584  次浏览      27
 

дÔÚÇ°Ãæ

½üЩÄ꣬´óÊý¾Ý±³ºóµÄ¼ÛÖµÒ²¿ªÊ¼µÃµ½¹Ø×¢ºÍÖØÊÓ£¬Ô½À´Ô½¶àµÄÆóÒµ¿ªÊ¼±£´æºÍ·ÖÎöÊý¾Ý£¬Ï£Íû´ÓÖÐÍÚ¾ò´óÊý¾ÝµÄ¼ÛÖµ¡£´óÊý¾Ý²úÉúµÄ¸ù±¾»¹ÊÇÔöÁ¿Êý¾Ý£¬µ¥´¿µÄÓû§Êý¾Ý²»×ãÒÔ¹¹³É´óÊý¾Ý£¬È»¶øÓû§µÄÐÐΪ»òÐÐΪÏà¹ØµÄÈÕÖ¾µÄÊý¾ÝÁ¿£¬¼ÓÖ®Ëæ×ÅÎïÁªÍøµÄ·¢Á¦£¬²úÉúµÄÔöÁ¿Êý¾Ý½«²»¿ÉÔ¤¹À£¬´æ´¢ºÍ²éѯÔöÁ¿Êý¾ÝÓÈΪ¹Ø¼ü¡£ËùÒÔ£¬ÔÚ±ÊÕߵŤ×÷¾­ÀúÖУ¬±¾×ÅÒÔϵÄÄ¿±ê£¬Ñ°ÕÒ¸üÓŵĴóÊý¾Ý´æ´¢ºÍ²éѯ·½°¸£º

Êý¾ÝÎÞËð£ºÊý¾Ý·ÖÎöÍÚ¾ò¶¼ÒÀÀµÓÚÎÒÃDZ£´æµÄÊý¾Ý£¬Ö»ÓÐ×öµ½Êý¾ÝµÄÎÞË𣬲ÅÓпÉÄÜÈÎÒâµÄ¶¨ÒåÖ¸±ê£¬Âú×ã¸÷ÖÖÒµÎñÐèÇó¡£

±£Ö¤Êý¾ÝʵʱÐÔ£ºÊý¾ÝµÄʵʱÐÔÔ½À´Ô½ÖØÒª£¬ÊµÊ±µÄÊý¾ÝÄܹ»¸üºÃµÄÔËά²úÆ·ºÍµ÷Õû²ßÂÔ£¬¼ÛÖµ¸ü¸ß¡£µ¥½ø³ÌÿÃë½ÓÈë3.5ÍòÊý¾ÝÒÔÉÏ£¬Êý¾Ý´Ó²úÉúµ½Äܹ»²éѯµ½½á¹ûÕâ¸ö¼ä¸ô²»»á³¬¹ý5Ãë¡£

ÒµÎñÐèÇó¿ìËÙÏìÓ¦£ºËæ×ÅÔ½À´Ô½¿ìµÄÒµÎñ·¢Õ¹ºÍÊý¾ÝÓ¦ÓÃÒªÇóµÄÌá¸ß£¬Êý¾ÝµÄ²éѯÐèÒª¸üÁé»î£¬¿ìËÙÏìÓ¦²»Í¬ÇÒ¶à±äµÄÐèÇó¡£×îºÃÊÇÈÎÒⶨÒåÖ¸±êºóÄܹ»ÊµÊ±²éѯ³ö½á¹û¡£

Êý¾ÝÁé»î̽Ë÷ÐÔ£ºÌ½Ë÷ÐÔÊý¾Ý·ÖÎöÔÚ¶ÔÊý¾Ý½øÐиÅÀ¨ÐÔÃèÊö£¬·¢ÏÖ±äÁ¿Ö®¼äµÄÏà¹ØÐÔÒÔ¼°Òýµ¼³öеļÙÉè¡£µ½ÁË´óÊý¾Ýʱ´ú£¬º£Á¿µÄÎ޽ṹ¡¢°ë½á¹¹Êý¾Ý´Ó¶àÖÖÇþµÀÔ´Ô´²»¶ÏµØ»ýÀÛ£¬²»ÊÜ·ÖÎöÄ£ÐͺÍÑо¿¼ÙÉèµÄÏÞÖÆ£¬ÈçºÎ´ÓÖÐÕÒ³ö¹æÂɲ¢²úÉú·ÖÎöÄ£ÐͺÍÑо¿¼ÙÉè³ÉΪÐÂÌôÕ½¡£Òò´Ë£¬Ì½Ë÷ÐÔÊý¾Ý·ÖÎö³ÉΪ´óÊý¾Ý·ÖÎöÖв»¿ÉȱÉÙµÄÒ»²½²¢ÇÒ×ßÏòǰ̨¡£

³¬´óÊý¾Ý¼¯£¬Í³¼Æ·ÖÎöÃë¼¶ÏìÓ¦£ºÍòÒÚÊý¾ÝÁ¿¼¶£¬Ç§¼¶Î¬¶È£¨·ÇÏ¡Ê裩µÄͳ¼Æ·ÖÎöÃë¼¶ÏìÓ¦¡£

Ŀǰ´óÊý¾Ý´æ´¢²éѯ·½°¸´ó¸Å¿ÉÒÔ·ÖΪ£ºHbaseϵ¡¢Dremelϵ¡¢Ô¤¾ÛºÏϵ¡¢Luceneϵ£¬±ÊÕß¾Í×ÔÉíµÄʹÓþ­Ñé˵˵Õ⼸¸öϵµÄÓÅȱµã£¬ÈçÓÐç¢Â©£¬»¶Ó­Ò»Æð̽ÌÖ¡£

Êý¾Ý²éѯ°üÀ¨´óÌå¿ÉÒÔ·ÖΪÁ½²½£¬Ê×Ïȸù¾Ýijһ¸ö»ò¼¸¸ö×Ö¶Îɸѡ³ö·ûºÏÌõ¼þµÄÊý¾Ý£¬È»ºó¸ù¾Ý¹ØÁªÌî³äÆäËûËùÐè×Ö¶ÎÐÅÏ¢»òÕß¾ÛºÏÆäËû×Ö¶ÎÐÅÏ¢£¬±¾ÎÄÖÐÌáµ½µÄ´óÊý¾Ý¼¼Êõ£¬¶¼½«Î§ÈÆÕâÁ½·½Ãæ¡£

Ò»¡¢Hbaseϵ

±ÊÕßÈÏΪHbaseϵµÄ½â¾ö·½°¸£¨ÀýÈçOpentsdbºÍKylin£©ÊʺÏÏà¶Ô¹Ì¶¨µÄÒµÎñ±¨±íÀàÐèÇó£¬Ö»ÐèҪͳ¼ÆÉÙÁ¿Î¬¶È¼´¿ÉÂú×ãÒµÎñ±¨±íÐèÇ󣬶ÔÓÚµ¥Öµ²éѯÓÐÓÅÊÆ£¬µ«ºÜÄÑÂú×ãÁé»î¾ÛºÏÊý¾ÝµÄ³¡¾°¡£

HbaseµÄ±í°üº¬µÄµÄ¸ÅÄîÓÐrowkey¡¢Áдء¢ÁÐÏÞ¶¨·û¡¢°æ±¾(timestamp)ºÍÖµ£¬¶ÔӦʵ¼ÊHdfsµÄ´æ´¢½á¹¹¿ÉÒÔÓÃÏÂͼ×öÒ»¸ö¼òµ¥×ܽ᣺

Hbase±íÖеÄÿһ¸öÁдػá¶ÔÓ¦Ò»¸öʵ¼ÊµÄÎļþ£¬Ä³ÖÖ²ãÃæÀ´Ëµ£¬Hbase²¢·ÇÕæÕýÒâÒåµÄÁÐʽ´æ´¢·½°¸£¬Ö»ÊÇÁдش洢¡£Ã¿¸öÎļþÓÐÈô¸É¸öDataBlock(Êý¾Ý¿éĬÈÏ64k)£¬DataBlockÊÇHBaseÖÐÊý¾Ý´æ´¢µÄ×îСµ¥Ôª£¬DataBlockÖÐÒÔKeyValueµÄ·½Ê½´æ´¢Óû§Êý¾Ý£¨KeyValueºóÃæÓÐtimestamp£¬Í¼ÖÐδ±ê×¢£©£¬ÆäËûÐÅÏ¢Ö÷Òª°üº¬Ë÷Òý¡¢ÔªÊý¾ÝµÈÐÅÏ¢£¬Ôڴ˲»×öÉîÈë̽ÌÖ¡£Ã¿¸öKeyValue¶¼ÓÉ4¸ö²¿·Ö¹¹³É£¬·Ö±ðΪkey length£¬value length£¬keyºÍvalue¡£ÆäÖÐkeyµÄ½á¹¹Ïà¶Ô¸´ÔÓ£¬°üÀ¨rowkey¡¢ÁС¢KeyTypeµÈÐÅÏ¢£¬¶øvalueÖµ¶ÔÓ¦¾ßÌåÁÐÖµµÄ¶þ½øÖÆÊý¾Ý¡£ÎªÁ˱ãÓÚ²éѯ£¬¶Ôkey×öÁËÒ»¸ö¼òµ¥µÄµ¹ÅÅË÷Òý£¬Ö±½ÓʹÓÃÁËjavaµÄConcurrentSkipListMap¡£

Hbase¹ÜÀíµÄºËÐÄ˼ÏëÊÇ·Ö¼¶·Ö¿é£¬´æ´¢Ê±¸ù¾ÝRowkeyµÄ·¶Î§²»Í¬£¬·ÖÉ¢µ½²»Í¬µÄRegion£¬RegionÓÖ°´ÕÕÁдطÖΪ²»Í¬µÄStore£¬Ã¿¸öStoreʵ¼ÊÉÏÓÖ°üÀ¨StoreFile(¶ÔÓ¦Hfile)ºÍMemStore£¬È»ºóÓÉRegionServer¹ÜÀí²»Í¬µÄRegion£¬RegionServer¼´¶ÔÓ¦¾ßÌåµÄ½ø³Ì£¬·ÖÉ¢²»Í¬µÄ»úÆ÷£¬Ìṩ·Ö²¼Ê½µÄ´æ´¢ºÍ²éѯ¡£²éѯʱ£¬Ê×ÏÈ»ñÈ¡meta±í£¨Ò»ÖÖÌØÊâµÄRegion£©ËùÔÚµÄRegionServer£¬Í¨¹ýmeta±í²éÕÒ±írowkeyÏà¶ÔÓ¦µÄRegionºÍRegionServerÐÅÏ¢£¬×îºóÁ¬½ÓÊý¾ÝËùÔÚµÄRegionServer£¬²éÕÒµ½ÏàÓ¦µÄÊý¾Ý¡£

HbaseµÄÕâÖֽṹ£¬ÌرðÊʺϸù¾Ýrowkey×öµ¥Öµ²éѯ£¬²»ÊʺÏscanµÄ³¡¾°£¬ÒòΪ´ó²¿·ÖScanµÄÇé¿ö»ù±¾ÉÏÐèҪɨÃèËùÓÐÊý¾Ý£¬ÐÔÄÜ»á·Ç³£²î¡£ËäȻҲÓÐÀ©Õ¹µÄHbase¶þ¼¶Ë÷Òý·½°¸£¬µ«»ù±¾É϶¼ÊÇͨ¹ýЭ´¦ÀíÆ÷£¬ÐèÒªÁíÍ⽨Á¢Ò»·ÝrowkeyµÄ¶ÔÓ¦¹ØÏµ£¬ScanµÄʱºòÏÈͨ¹ý¶þ¼¶Ë÷Òý²éÕÒrowkey£¬È»ºóÔÚ¸ù¾Ýrowkey²éÕÒÏàÓ¦µÄÊý¾Ý¡£

ÕâÖÖ·½Ê½Ò»¶¨³Ì¶ÈÉÏÄܼӿìÊý¾ÝɨÃ裬µ«ÄǶÔÓÚһЩʶ±ð¶È²»¸ßµÄÁУ¬ÈçÐÔ±ðÕâÑùµÄ×ֶΣ¬¶ÔÓ¦µÄrowkeyÏ൱֮¶à£¬ÕâÑùµÄ×Ö¶ÎÔÚ²éÕÒ¶þ¼¶Ë÷ÒýʱµÄ×÷ÓúÜС£¬ÁíÍâ¶þ¼¶Ë÷ÒýËù´øÀ´µÄIOÐÔÄܵĿªÏú¶¼»áËæÖ®Ôö¼Ó¡£¶øÔÚÐèÒª¾ÛºÏµÄ³¡¾°£¬¶ÔÓÚHbase¶øÑÔǡǡÐèÒª´óÁ¿scanÊý¾Ý£¬»á·Ç³£Ó°ÏìÐÔÄÜ¡£HbaseÖ»ÓÐÒ»¸ö¼òµ¥rowkeyµÄµ¹ÅÅË÷Òý£¬È±ÉÙÁÐË÷Òý£¬ËùÓеIJéѯºÍ¾ÛºÏÖ»ÄÜÒÀÀµÓÚrowkey£¬ºÜÄѽâ¾ö¾ÛºÏµÄÐÔÄÜÎÊÌâ¡£

Ëæ×ÅHbaseµÄ·¢Õ¹£¬»ùÓÚHbase×öÊý¾Ý´æ´¢°üÀ¨OpentsdbºÍKylinÒ²ËæÖ®²úÉú£¬ÀýÈçKylinÒ²ÊÇÒ»ÖÖÔ¤¾ÛºÏ·½°¸£¬ÒòÆäµ×²ã´æ´¢Ê¹ÓÃHbase£¬¹Ê±ÊÕß½«Æä¹éΪHbaseϵ¡£ÔÚ±ÊÕß¿´À´£¬OpentsdbºÍKylinµÄÊý¾Ý½á¹¹¼«ÆäÏàËÆ£¬¶¼Êǽ«¸÷ÖÖά¶ÈÖµ×éºÏ£¬½áºÏʱ¼ä´ÁÆ´³Érowkey£¬ÀûÓÃ×ÖµäµÄÔ­Àí½«Î¬¶ÈÖµ±êÇ©»¯£¬´ïµ½Ñ¹ËõµÄÄ¿µÄ¡£Èç´Ë£¬¿ÉÒÔÂú×ã¿ìËÙ²éѯÊý¾ÝµÄÐèÒª£¬µ«Í¬Ê±Ò²»áÊÜÏÞÓÚHbaseË÷Òý£¬¾ÛºÏÐèÒª´óÁ¿scan£¬²¢²»ÄÜÌáÉýÊý¾Ý¾ÛºÏµÄËÙ¶È¡£

ΪÁ˱ÜÃâ²éѯÊý¾ÝʱµÄ¾ÛºÏ£¬Kylin¿ÉÒÔͨ¹ýcubeµÄ·½Ê½¶¨ÖÆÊý¾Ý½á¹¹£¬ÔÚÊý¾Ý½ÓÈëʱͨ¹ýÖ¸¶¨metricÀ´Ìáǰ¾ÛºÏÊý¾Ý¡£ÕâÑùËäÈ»ÔÚÒ»¶¨³Ì¶ÈÉϽâ¾öÁËÊý¾Ý¾ÛºÏÂýµÄÇé¿ö£¬µ«ÕâÊÇÒ»ÖÖµäÐ͵Ŀռ任ʱ¼äµÄ·½°¸£¬×éºÏÔÚά¶È¶à¡¢»òÕßÓи߻ùÊýά¶ÈµÄÇé¿ö£¬Êý¾ÝÅòÕÍ»á·Ç³£ÑÏÖØ£¬±ÊÕßÔøÓöµ½´æ´¢ºóµÄÊý¾Ý±ÈԭʼÊý¾Ý´ó90±¶µÄÇé¿ö¡£ÁíÍ⣬ҵÎñµÄ±ä»¯»áµ¼ÖÂÖØ½¨cube£¬ÄÑÒÔÁé»îµÄÂú×ãÒµÎñÐèÒª¡£

¶þ¡¢Dremelϵ

Parquet×÷ΪDremelϵµÄ´ú±í£¬Ïà¶ÔHbaseµÄ·½°¸£¬ScanµÄÐÔÄܸüºÃ£¬Ò²±ÜÃâÁË´æ´¢Ë÷ÒýºÍÉú³ÉË÷ÒýµÄ¿ªÏú¡£µ«¶ÔÓÚÊý¾Ý»¹Ô­ºÍ¾ÛºÏ£¬Ïà¶ÔÖ±½ÓʹÓÃÕýÏòË÷ÒýÀ´Ëµ³É±¾»áºÜ¸ß£¬¶øÇÒÒÔÀëÏß´¦ÀíΪÖ÷£¬ºÜÄÑÌá¸ßÊý¾ÝдµÄʵʱÐÔ¡£

GoogleµÄDremel£¬Æä×îÔçÓÃÓÚÍøÒ³ÎĵµÊý¾Ý·ÖÎö£¬ËùÒÔÉè¼ÆÎªÇ¶Ì×µÄÊý¾Ý½á¹¹£¬µ±È»ËüÒ²¿ÉÒÔÓÃÓÚ±âÆ½µÄ¶þά±íÊý¾Ý´æ´¢¡£¿ªÔ´¼¼ÊõÖУ¬ParquetËãÊÇDremelϵµÄ´ú±í£¬¸÷ÖÖ²éѯÒýÇæ(Hive/Impala/Drill)¡¢¼ÆËã¿ò¼ÜÉõÖÁһЩÐòÁл¯½á¹¹Êý¾Ý£¨ÈçProtoBuf£©¶¼¶ÔÆä½øÐÐÁËÖ§³Ö£¬ÉõÖÁSpark»¹×¨ÃÅÕë¶ÔParquetµÄÊý¾Ý¸ñʽ½øÐÐÁËÓÅ»¯£¬Ç°Í¾Ò»Æ¬¹âÃ÷£¬±¾ÎÄÖ÷Òª½áºÏParquetÀ´Õ¹¿ªÂÛÊö¡£

¿ÉÒÔÓÃÏÂͼ¼òµ¥±íʾParquetµÄÎļþ¸ñʽ£º

ParquetµÄÊý¾ÝˮƽÇзÖΪ¶à¸öRow Group£¬Row GroupΪÊý¾Ý¶ÁдµÄ»º´æµ¥Ôª£¬Ã¿¸öRow Group°üº¬¸÷¸öµÄÊý¾ÝÁÐ(Column Chunk)£¬Êý¾ÝÁÐÓÐÈô¸ÉPage£¬PageÊÇѹËõºÍ±àÂëµÄµ¥Ôª£¬ÆäÏàÓ¦´æ´¢µÄÐÅÏ¢°üÀ¨ÔªÊý¾ÝÐÅÏ¢(PageHeader)¡¢Öظ´Éî¶È(Repetition Levels)¡¢¶¨ÒåÉî¶È(Definition Levels)ºÍÁÐÖµ(Values)ÐÅÏ¢¡£

Pageʵ¼ÊÓÐÈýÖÖÀàÐÍ£ºÊý¾ÝPage¡¢×ÖµäPageºÍË÷ÒýPage¡£Êý¾ÝPageÓÃÓÚ´æ´¢µ±Ç°ÐÐ×éÖиÃÁеÄÖµ£¬×ÖµäPage´æ´¢¸ÃÁÐÖµµÄ±àÂë×ֵ䣬ÿһ¸öÁпéÖÐ×î¶à°üº¬Ò»¸ö×ÖµäPage£¬Ë÷ÒýPageĿǰ»¹²»Ö§³Ö£¬Î´À´¿ÉÄÜ»áÒýÈëBloom Filter£¬Äܹ»ÅжÏÁÐÖµÊÇ·ñ´æÔÚ£¬¸üÓÐÀûÓÚÅжÏËÑË÷Ìõ¼þ£¬ÌáÉý²éѯËÙ¶È¡£

´ÓParquetµÄ´æ´¢½á¹¹À´¿´£¬ParquetûÓÐÑϸñÒâÒåÉϵÄË÷Òý£¬ÔÚ²éѯµÄ¹ý³ÌÖÐÐèÒªÖ±½Ó¶ÔRow GroupµÄÁÐÊý¾Ý½øÐÐɨÃ裬ÓÐÁ½·½ÃæÀ´±£Ö¤²éѯÓÅ»¯£¬Ò»¸öÊÇÓ³ÉäÏÂÍÆ(Project PushDown)£¬ÁíÍâÒ»¸öÊÇν´ÊÏÂÍÆ(Predicate PushDown)¡£

Ó³ÉäÏÂÍÆÖ÷ÒªÊÇÀûÓÃÁÐʽ´æ´¢µÄÓÅÊÆ£¬²éѯÊý¾ÝʱֻÐèҪɨÃè²éѯÖÐÐèÒªµÄÁУ¬ÓÉÓÚÿһÁеÄËùÓÐÖµ¶¼ÊÇÁ¬Ðø´æ´¢µÄ£¬ËùÒÔ·ÖÇøÈ¡³öÿһÁеÄËùÓÐÖµ¾Í¿ÉÒÔʵÏÖTableScanËã×Ó£¬¶ø±ÜÃâɨÃèÕû¸öÎļþÄÚÈÝ¡£

ν´ÊÏÂÍÆÔÚÊý¾Ý¿âÖ®ÀàµÄ²éѯϵͳÖÐ×î³£ÓõÄÓÅ»¯ÊÖ¶ÎÖ®Ò»£¬Í¨¹ý½«Ò»Ð©¹ýÂËÌõ¼þ¾¡¿ÉÄܵÄÔÚ×îµ×²ãÖ´ÐУ¬¼õÉÙÉϲ㽻»¥µÄÊý¾ÝÁ¿£¬´Ó¶øÌáÉýÐÔÄÜ¡£ÁíÍ⣬Õë¶Ôν´ÊÏÂÍÆParquet×öÁ˸ü½øÒ»²½µÄÓÅ»¯£¬ÓÅ»¯µÄ·½·¨ÊǶÔÿһ¸öRow GroupµÄÿһ¸öColumn ChunkÔÚ´æ´¢µÄʱºò¶¼¼ÆËã¶ÔÓ¦µÄͳ¼ÆÐÅÏ¢£¬°üÀ¨¸ÃColumn ChunkµÄ×î´óÖµ¡¢×îСֵºÍ¿ÕÖµ¸öÊý¡£Í¨¹ýÕâЩͳ¼ÆÖµºÍ¸ÃÁеĹýÂËÌõ¼þ¿ÉÒÔÅжϸÃRow GroupÊÇ·ñÐèҪɨÃ衣δÀ´»¹»áÔö¼ÓÖîÈçBloom FilterºÍIndexµÈÓÅ»¯Êý¾Ý£¬¸ü¼ÓÓÐЧµÄÍê³Éν´ÊÏÂÍÆ¡£

ͨ¹ýÕâÁ½·½ÃæµÄÓÅ»¯£¬ParquetµÄ²éѯʱɨÃèÊý¾ÝµÄÐÔÄÜÄܹ»µÃµ½´ó·ù¶ÈÌáÉý¡£ÄÇParquetÈç¹ûÌî³äÊý¾Ý£¨²»Í¬µÄÁÐÆ´³ÉÒ»ÐмǼ£©ºÍ¾ÛºÏÊý¾ÝÄØ£¿

Ö÷ÒªÊÇʹÓÃÁËStriping/AssemblyË㷨ʵÏֵ쬏ÃËã·¨µÄ˼ÏëÊǽ«Êý¾ÝµÄÖµ·ÖΪÈý²¿·Ö£ºÖظ´Éî¶È(Repetition Levels)¡¢¶¨ÒåÉî¶È(Definition Levels)ºÍÁÐÖµ(Values)¡£Í¨¹ýÖØ¸´Éî¶È¿ÉÒÔÔÚ¶ÁÈ¡µÄʱºò½áºÏSchemaµÄ¶¨Òå¿ÉÒÔÖªµÀÐèÒªÔÚÄÄÒ»²ã´´½¨Ò»¸öеÄrepeated½Úµã£¨ÈçµÚÒ»²ãµÄµÄΪ0£¬±íʾÊÇмǼ£¬·ñÔòÔò±íʾrepeatµÄÊý¾Ý£©£¬È»ºóͨ¹ý¶¨ÒåÉî¶ÈÖªµÀ¸ÃÖµµÄ·¾¶Éϵڼ¸²ã¿ªÊ¼ÊÇ䶨Ò壬´Ó¶ø»¹Ô­³öÊý¾ÝµÄǶÌ׽ṹ£¬Èç´Ë±ãÄÜÇå³þµÄ°ÑÒ»ÐÐÊý¾Ý»¹Ô­³öÀ´¡£ÓÉÓÚȱÉÙÐкŶÔÓ¦µÄÁÐÕýÏòË÷Òý£¬Ã»Óа취ֱ½ÓѰַ£¬µ¥´¿µÄÒÀÀµÓÚStriping/AssemblyËã·¨»¹Ô­Êý¾Ý»òÕ߾ۺϴ¦Àí£¬Ïà¶ÔÀ´Ëµ³É±¾»á¸ßºÜ¶à¡£

ÁíÍ⣬ParquetµÄʵʱд·½ÃæÊÇÓ²ÉË£¬»ùÓÚParquetµÄ·½°¸»ù±¾É϶¼ÊÇÅúÁ¿Ð´¡£Ò»°ãÇé¿ö£¬¶¼ÊǶ¨ÆÚÉú³ÉParquetÎļþ£¬ËùÒÔÊý¾ÝÑӳٱȽÏÑÏÖØ¡£ÎªÁËÌá¸ßÊý¾ÝµÄʵʱÐÔ£¬»¹ÐèÒªÆäËû½â¾ö·½°¸À´½â¾öÊý¾ÝʵʱµÄ²éѯ£¬ParquetÖ»ÄÜ×÷ΪÀúÊ·Êý¾Ý²éѯµÄ²¹³ä¡£

Parquet´æ´¢ÊÇÏà¶ÔË÷ÒýµÄ´æ´¢À´Ëµ£¬ÊÇÒ»ÖÖÕÛÖд¦Àí£¬Ã»Óе¹ÅÅË÷Òý£¬¶øÊÇͨ¹ýRow Groupˮƽ·Ö¸îÊý¾Ý£¬È»ºóÔÙ¸ù¾ÝColumn´¹Ö±·Ö¸î£¬±£Ö¤Êý¾ÝIO²»¸ß£¬Ö±½ÓScanÊý¾Ý½øÐвéѯ£¬Ïà¶ÔHbaseµÄ·½°¸£¬ScanµÄÐÔÄܸüºÃ¡£ÕâÖÖ·½Ê½£¬±ÜÃâÁË´æ´¢Ë÷ÒýºÍÉú³ÉË÷ÒýµÄ¿ªÏú£¬Ëæ×ÅË÷ÒýPageµÄÍêÉÆ£¬ÏàÐŲéѯÐÔÄÜÖµµÃÐÅÀµ¡£¶ø¶ÔÓÚÊý¾Ý»¹Ô­ºÍ¾ÛºÏҲûÓÐÀûÓÃÕýÏòË÷Òý£¬¶øÊÇͨ¹ýStriping/AssemblyËã·¨À´½â¾ö£¬ÕâÖÖ·½Ê½¸üºÃÄܹ»ºÜÈ¡ÇɵĽâ¾öÊý¾ÝǶÌ×Ìî³äµÄÎÊÌ⣬ µ«ÊÇÏà¶ÔÖ±½ÓʹÓÃÕýÏòË÷ÒýÀ´Ëµ³É±¾»áºÜ¸ß¡£

ÁíÍ⣬ÓÉÓÚÊÇ»ùÓÚRow GroupΪ¶ÁдµÄ»ù±¾µ¥Ôª£¬ÊôÓÚ´ÖÁ£¶ÈµÄÊý¾ÝдÈ룬Êý¾ÝÉú³ÉÓ¦¸Ã»¹ÊÇÒÔÀëÏß´¦ÀíΪÖ÷£¬ºÜÄÑÌá¸ßÊý¾ÝдµÄʵʱÐÔ£¬¶øÒýÈëÆäËûµÄ½â¾ö·½°¸ÓÖ»á´øÀ´´æ´¢¼Ü¹¹µÄ¸´ÔÓÐÔ£¬Î¬»¤³É±¾¶¼»áÏàÓ¦Ôö¼Ó¡£

Èý¡¢Ô¤¾ÛºÏϵ

×î½ü¼¸Äê£¬Ëæ×ÅOLAP³¡¾°µÄÐèÒª£¬Ô¤¾ÛºÏµÄ½â¾ö·½°¸Ô½À´Ô½¶à¡£ÆäÖбȽϵäÐ͵ÄÓÐKylin¡¢DruidºÍPinot¡£Ô¤¾ÛºÏµÄ·½°¸£¬±ÊÕß²»Ïë×ö¹ý¶à½éÉÜ£¬Æä±¾ÉíÖ»Êǵ¥´¿µÄΪÁËÂú×ãOLAP²éѯµÄ³¡¾°£¬ÐèÒªÖ¸¶¨Ô¤¾ÛºÏµÄÖ¸±ê£¬ÔÚÊý¾Ý½ÓÈëµÄʱºò¸ù¾ÝÖ¸¶¨µÄÖ¸±ê½øÐоۺÏÔËË㣬Êý¾ÝÔھۺϵĹý³ÌÖлᶪʧmetric¶ÔÓ¦µÄÁÐÖµÐÅÏ¢¡£

±ÊÕßÈÏΪ£¬ÕâÖÖ·½Ê½ÐèÒªÒÔÓÐËðÊý¾ÝΪ´ú¼Û£¬ËäÈ»Äܹ»Âú×ã¶ÌÆÚµÄOLAPÐèÇ󣬵«ÊǶÔÓÚÊý¾Ý´æ´¢ÊǷdz£²»ÀûµÄ£¬»á¶ªµôÊý¾Ý±¾Éí´æÔÚµÄDZÔÚ¼ÛÖµ¡£ÁíÍ⣬²éѯµÄÖ¸±êÒ²Ïà¶Ô¹Ì¶¨£¬Ã»Óа취Áé»îµÄ×ÔÓɶ¨ÒåËùÐèµÄÖ¸±ê£¬Ö»ÄܲéѯÌáǰ¾ÛºÏºÃµÄÖ¸±ê¡£

ËÄ¡¢Luceneϵ

LuceneËãÊÇjavaÖÐ×îÏȽøµÄ¿ªÔ´È«ÎļìË÷¹¤¾ß£¬»ùÓÚËüÓÐÁ½¸öºÜ²»´íµÄÈ«ÎļìË÷²úÆ·ElasticSearchºÍSolr¡£Lucene¾­¹ý¶àÄêµÄ·¢Õ¹£¬Õû¸öË÷ÒýÌåϵÒѾ­·Ç³£ÍêÉÆ£¬Äܹ»Âú×ãµÄµÄ²éѯ³¡¾°Ô¶¶àÓÚ´«Í³µÄÊý¾Ý¿â´æ´¢£¬Õâ¶¼¹é¹¦ÓÚÆäÇ¿´óµÄË÷Òý¡£µ«¶ÔÓÚÈÕÖ¾¡¢ÐÐΪÀàʱÐòÊý¾Ý£¬ËùÓеÄËÑË÷ÇëÇó¶¼Ò²±ØÐëËÑË÷ËùÓÐµÄ·ÖÆ¬£¬ÁíÍ⣬¶ÔÓھۺϷÖÎö³¡¾°µÄÖ§³ÖÒ²ÊÇÈíÀß¡£

LuceneÖаÑÒ»ÌõÊý¾Ý¶ÔӦΪһ¸öDocument£¬Êý¾ÝÖеÄ×ֶζÔÓ¦LuceneµÄField£¬FieldµÄÐÅÏ¢¿ÉÒÔ²ð·ÖΪ¶à¸öTerm£¬Í¬Ê±TermÖлá°üº¬ÆäËùÊôµÄFieldÐÅÏ¢£¬ÔÚLuceneÖÐÿһ¸öDocument¶¼»á·ÖÅäÒ»¸öÐкš£È»ºóÔÚÊý¾Ý½ÓÈëʱ½¨Á¢TermºÍÐкŵĶÔÓ¦¹ØÏµ£¬¾ÍÄܹ»¸ù¾Ý×ֶεÄÐÅÏ¢¿ìËÙµÄËÑË÷³öÏàÓ¦µÄÐкţ¬¶øTermÓëÐкŵĶÔÓ¦¹ØÏµÎÒÃdzÆÖ®Îª×ֵ䡣´ó²¿·Öʱºò²éѯÊǶà¸öÌõ¼þµÄ×éºÏ£¬ÓÚÊÇLuceneÒýÈëÁËÌø±íµÄ˼Ï룬À´¼Ó¿ìÐкŵÄÇ󽻺ÍÇ󲢡£×ÖµäºÍÌø±í¾Í¹²Í¬×é³ÉÁËLuceneµÄµ¹ÅÅË÷Òý¡£Lucene´Ó4¿ªÊ¼Ê¹ÓÃÁËFSTµÄÊý¾Ý½á¹¹£¬¼´µÃµ½Á˺ܸߵÄ×ÖµäѹËõÂÊ£¬ÓÖ¼Ó¿ìÁË×ÖµäµÄ¼ìË÷¡£

ΪÁË¿ìËٵĻ¹Ô­Êý¾ÝÐÅÏ¢ºÍ¾ÛºÏÊý¾Ý£¬Lucene»¹ÒýÈëÁËÁÐÕýÏòË÷ÒýºÍÐÐÕýÏòË÷Òý¡£ÁÐÕýÏòË÷ÒýÖ÷ÒªÊÇÐкźÍTermµÄ¶ÔÓ¦¹ØÏµ£¬ÐÐÕýÏòÖ÷ÒªÊÇÐкźÍDocumentµÄ¶ÔÓ¦¹ØÏµ¡£ÕâÁ½ÖÖË÷Òý¶¼ÊÇ¿ÉÒÔ¸ù¾ÝÐèÒªÅäÖÃʹÓã¬ÀýÈçÖ»Óе¥´¿µÄ²éѯ£¬Ö»ÊÇÓÃÐÐÕýÏòË÷Òý¾Í¿ÉÒÔ£¬ÎªÁËʵÏÖÊý¾ÝµÄ¾ÛºÏÔò±ØÐëÁÐÕýÏòË÷Òý¡£

ÓÐÁËÕâЩË÷Òýºó£¬¾Í¿ÉÒÔͨ¹ýTermÀ´²éѯ³öÐкţ¬ÀûÓÃÕýÏòË÷Òý¸ù¾ÝÐкŻ¹Ô­Êý¾ÝÐÅÏ¢£¬»òÕß¶ÔÊý¾Ý½øÐоۺϡ£

ÁíÍ⣬ΪÁËÂú×ãÈ«ÎļìË÷µÄÐèÇó£¬Lucene»¹ÒýÈëÁË·Ö´Ê¡¢´ÊÏòÁ¿¡¢¸ßÁÁÒÔ¼°´ò·ÖµÄ»úÖÆµÈµÈ¡£

×ܵÄÀ´¿´£¬LuceneµÄÕû¸öË÷ÒýÌåϵ±È½ÏÓ·Ö×£¬ÆäÉè¼ÆµÄ¸ù±¾»¹ÊÇËÑË÷ÒýÇæµÄ˼Ï룬Âú×ãÈ«ÎļìË÷µÄÐèÇó¡£

Lucene±¾ÉíÊǵ¥»ú°æµÄ£¬Ã»Óа취·Ö²¼Ê½£¬Ò²¾ÍÒÔΪ×ÅÆäÄÜ´¦ÀíµÄ»¹ÊÇСÊý¾ÝÁ¿¡£ElasticSearchÌṩÁËLuceneµÄ·Ö²¼Ê½´¦ÀíµÄ½â¾ö·½°¸£¬ÆäºËÐÄ˼ÏëÊǽ«LuceneµÄË÷Òý·ÖƬ¡£

ÔÚдÈ볡¾°ÖУ¬¶ÔÓÚͬһ¸öindexµÄÊý¾Ý£¬»á°´ÕÕÉ趨µÄ·ÖƬÊý·Ö±ð½¨Á¢·ÖƬË÷Òý£¬ÕâЩ·ÖƬË÷Òý¿ÉÄÜλÓÚͬһ̨·þÎñÆ÷£¬Ò²¿ÉÄܲ»Í¬¡£Í¬Ê±£¬¸÷·ÖƬË÷Òý»¹ÐèҪΪ×Ô¼º¶ÔÓ¦µÄ¸±±¾½øÐÐͬ²½£¬Ö±µ½¸±±¾Ð´Èë³É¹¦£¬Ò»´ÎдÈë²ÅËãÍêÕûµÄÍê³É¡£µ±È»£¬µ¥¸öÎĵµµÄдÈëÇëÇóÖ»»áÉæ¼°µ½Ò»¸ö·ÖƬµÄдÈë¡£

ËÑË÷³¡¾°Ôò´óÖÂÊÇÄæ¹ý³Ì£¬½ÓÊÜÇëÇóµÄ½Úµã½«ÇëÇó·Ö·¢ÖÁËùÓге£¸Ã·ÖƬ²éѯÇëÇóµÄ½Úµã£¬È»ºó»ã×ܲéѯÇëÇó¡£ÕâÀïÖµµÃ×¢ÒâµÄÊÇ£¬ÈÎÒâÒ»¸öËÑË÷ÇëÇó¾ùÐèÒªÔÚ¸ÃindexµÄËùÓÐ·ÖÆ¬ÉÏÖ´ÐС£

ÓÉÓÚElasticSearchÊÇÒ»¸öËÑË÷¿ò¼Ü£¬¶ÔÓÚËùÓеÄËÑË÷ÇëÇ󣬶¼±ØÐëËÑË÷ËùÓÐµÄ·ÖÆ¬¡£¶ÔÓÚÒ»¸öÕë¶ÔÄÚÈݵÄËÑË÷Ó¦ÓÃÀ´Ëµ£¬ÕâÏÔȻûÓÐʲôÎÊÌ⣬ÒòΪ¶ÔÓ¦µÄÄÚÈݻᱻ´æ´¢µ½ÄÄÒ»¸ö·ÖƬÍùÍùÊDz»¿ÉÖªµÄ¡£È»¶ø¶ÔÓÚÈÕÖ¾¡¢ÐÐΪÀàÊý¾ÝÔò²»È»£¬ÒòΪºÜ¶àʱºòÎÒÃǹØ×¢µÄÊÇijһ¸öÌØ¶¨Ê±¼ä¶ÎµÄÊý¾Ý£¬ÕâʱÈç¹ûÎÒÃÇ¿ÉÒÔÕë¶ÔÐÔµÄËÑË÷ÕâÒ»²¿·ÖÊý¾Ý£¬ÄÇôËÑË÷ÐÔÄÜÏÔÈ»»áµÃµ½Ã÷ÏÔµÄÌáÉý¡£

ͬʱ£¬ÕâÀàÊý¾ÝÍùÍù¾ßÓÐÁíÒ»¸ö·Ç³£ÖØÒªµÄÌØÕ÷£¬¼´Ê±Ð§ÐÔ¡£ºÜ¶àʱºòÎÒÃǵÄÐèÇóÍùÍùÊÇÕâÑùµÄ£º¶ÔÓÚ×î½üÒ»¶Îʱ¼äµÄÈÈÊý¾Ý£¬Æä²éѯƵÂÊÍùÍùÒª±ÈʧȥʱЧµÄÀäÊý¾Ý¸ßµÃ¶à£¬¶øElasticSearchÕâÑù²»¼ÓÇø·ÖµÄ·ÖƬ·½Ê½ÏÔÈ»²»×ãÒÔÖ§³ÖÕâÑùµÄÐèÇó¡£

¶øÁíÍâÒ»·½Ã棬ElasticSearch¶ÔÓھۺϷÖÎö³¡¾°µÄÖ§³ÖÒ²ÊÇÈíÀߣ¬µäÐ͵ÄÎÊÌâÊÇ£¬Ê¹ÓÃHyperloglogÕâÀàÇó»ùÊýµÄ¾ÛºÏº¯Êýʱ£¬·Ç³£ÈÝÒ×·¢Éúoom¡£Õâ¹ÌÈ»¸úÕâÀà¾ÛºÏËã·¨µÄÄÚ´æÏûºÄÏà¶Ô¸ßÓйأ¨ÊÂʵÉÏ£¬hllÔÚ»ùÊý¹À¼ÆÁìÓòÊÇÒÔÄÚ´æÏûºÄµÍÖø³ÆµÄ£¬¸ßÊÇÏà¶Ôcount£¬sumÕâÀà¼òµ¥¾ÛºÏ¶øÑÔ£©¡£

Îå¡¢Tindex

Êý¹ûÖÇÄܸù¾Ý¿ªÔ´µÄ·½°¸×ÔÑÐÁËÒ»Ì×Êý¾Ý´æ´¢µÄ½â¾ö·½°¸£¬¸Ã·½°¸µÄË÷Òý²ãͨ¹ý¸ÄÔìLuceneʵÏÖ£¬Êý¾Ý²éѯºÍË÷ÒýдÈë¿ò¼Üͨ¹ýÀ©Õ¹DruidʵÏÖ¡£¼È±£Ö¤ÁËÊý¾ÝµÄʵʱÐÔºÍÖ¸±ê×ÔÓɶ¨ÒåµÄÎÊÌ⣬ÓÖÄÜÂú×ã´óÊý¾ÝÁ¿Ãë¼¶²éѯµÄÐèÇó£¬ÏµÍ³¼Ü¹¹ÈçÏÂͼ£¬»ù±¾ÊµÏÖÁËÎÄÕ¿ªÍ·Ìá³öµÄ¼¸¸öÄ¿±ê¡£

TindexÖ÷񻃾¼°µÄ¼¸¸ö×é¼þ

Tindex-Segment,¸ºÔðÎļþ´æ´¢¸ñʽ£¬°üÀ¨Êý¾ÝµÄË÷ÒýºÍ´æ´¢£¬²éѯÓÅ»¯£¬ÒÔ¼°¶ÎÄÚÊý¾ÝËÑË÷Óëʵʱ¾ÛºÏµÈ¡£TindexÊÇ»ùÓÚLuceneµÄ˼ÏëÖØ¹¹ÊµÏֵģ¬ÓÉÓÚLuceneË÷ÒýÄÚÈݹýÓÚ¸´ÔÓ£¬µ«ÊÇÆäË÷ÒýµÄÐÔÄÜÔÚ¿ªÔ´·½°¸ÖбȽÏÍêÉÆ£¬ÔÚÊý¾ÝµÄѹËõºÍÐÔÄÜÖ®¼ä×öÁËºÜºÃµÄÆ½ºâ¡£ÎÒÃÇͨ¹ý¸ÄÔ죬Ö÷Òª±£ÁôÁËÆä±ØÒªµÄË÷ÒýÐÅÏ¢£¬±ÈÔ­ÓеÄLucene½ÚÊ¡Á˸ü¶àµÄ´æ´¢¿Õ¼ä£¬Í¬Ê±Ò²¼Ó¿ìÁ˲éѯËÙ¶È¡£Ö÷Òª¸Ä½øÓÐÒÔϼ¸µã£º

1¡¢¸ßЧѹËõ´æ´¢¸ñʽ

¶ÔÓÚº£Á¿ÐÐΪÊý¾ÝµÄ´æ´¢À´Ëµ£¬´æ´¢ÈÝÁ¿ÎÞÒÉÊÇÒ»¸ö²»ÈݺöÊÓµÄÎÊÌâ¡£¶ÔÓÚʹÓÃË÷ÒýµÄ·½°¸À´Ëµ£¬Ë÷ÒýºóµÄÊý¾ÝÈÝÁ¿Í¨³£Ïà¶ÔÔ­ÓÐÊý¾Ý»áÓÐÒ»¶¨³Ì¶ÈµÄÅòÕÍ¡£Õë¶ÔÕâÀàÇé¿ö£¬TindexÕë¶ÔË÷ÒýµÄ²»Í¬²¿·Ö£¬·Ö±ðʹÓÃÁ˲»Í¬ÐÎʽµÄѹËõ¼¼Êõ£¬±£ÕÏÁËÄܹ»Ö§³Ö¸ßЧ²éѯµÄͬʱ½ö½öÐèÒª½ÏÉÙµÄÈÝÁ¿¡£¶ÔÓÚÊý¾ÝÄÚÈݲ¿·Ö£¬Ê¹ÓÃ×ÖµäµÄ·½Ê½±àÂë´æ´¢£¬Ã¿Ìõ¼Ç¼½ö½ö´æ´¢Îĵµ±àºÅ¡£¶ÔÓÚ×ֵ䱾ÉíµÄ´æ´¢£¬Ê¹ÓÃÁËǰ׺ѹËõµÄ·½Ê½£¬´Ó¶ø½µµÍ¸ß»ùÊýά¶ÈµÄ¿Õ¼äÏûºÄ¡£Êµ¼ÊÇé¿öÏ£¬Ê¹Óà Tindex ѹËõºóµÄÊý¾ÝÕ¼ÓõĴ洢ÈÝÁ¿½ö½öΪԭʼÊý¾ÝµÄ1/5×óÓÒ¡£

2¡¢ÁÐʽµ¹ÅźÍÕýÏòË÷ÒýµÄ´æ´¢

ÓÉÓÚʵ¼ÊʹÓÃÖУ¬ÍùÍùÐèҪͬʱ֧³ÖËÑË÷ºÍ¾ÛºÏÁ½ÖÖ³¡¾°£¬¶øÕâÁ½ÖÖ·½Ê½¶ÔÓÚË÷Òý½á¹¹µÄÐèÇóÊÇÍêÈ«Ïà·´µÄ¡£Õë¶ÔÕâÁ½ÖÖÇé¿ö£¬Tindex½áºÏÁ˵¹ÅÅË÷ÒýºÍÁÐÕýÏòË÷ÒýÕâÁ½ÖÖ²»Í¬ÀàÐ͵ÄË÷Òý¡£¶ÔÓÚµ¹ÅÅË÷Òý²¿·Ö£¬Ê¹ÓÃ×ÖµäºÍÌø±íµÈ¼¼Êõ£¬ÊµÏÖÁËÊý¾ÝµÄ¿ìËÙ¼ìË÷£¬¶ø¶ÔÓÚÕýÏò²¿·Ö£¬Ôòͨ¹ý¸ßЧµÄѹËõ¼¼Êõ£¬ÊµÏÖÁ˶ÔÓÚº£Á¿ÐÐÏÂÖ¸¶¨ÁеĿìËÙ¶ÁÈ¡¡£Í¬Ê±£¬¸ù¾Ý²»Í¬µÄÇé¿ö£¬¿ÉÒÔÑ¡ÔñÐÔµÄÖ»½¨Á¢ÆäÖÐÒ»ÖÖË÷Òý£¨Ä¬ÈÏÇé¿ö¶ÔÓÚÿһÁоù»áͬʱ½¨Á½ÖÖË÷Òý£©£¬´Ó¶ø½ÚÊ¡´óÔ¼Ò»°ãµÄ´æ´¢¿Õ¼äºÍË÷Òýʱ¼ä¡£

Tindex-Druid£¬¸ºÔð·Ö²¼Ê½²éѯÒýÇæ¡¢Ö¸±ê¶¨ÒåÒýÇæ¡¢Êý¾ÝµÄʵʱµ¼È롢ʵʱÊý¾ÝºÍÔªÊý¾Ý¹ÜÀíÒÔ¼°Êý¾Ý»º´æ¡£Ö®ËùÒÔÑ¡ÔñDruidÊÇÒòΪÎÒÃÇ·¢ÏÖÆä¿ò¼ÜÀ©Õ¹ÐÔ¡¢²éѯÒýÇæÉè¼ÆµÄ·Ç³£ºÃ£¬ºÜ¶àÐÔÄÜϸ½Ú¶¼¿¼ÂÇÔÚÄÚ¡£ÀýÈ磺

¶ÑÍâÄÚ´æµÄ¸´Ó㬱ÜÃâGCÎÊÌ⣻

¸ù¾Ý²éѯÊý¾ÝµÄÁ£¶È£¬ÒÔSequenceµÄ·½Ê½¹¹½¨Ð¡ÅúÁ¿µÄÊý¾Ý£¬ÄÚ´æÀûÓÃÂʸü¸ß£»

²éѯÓÐbySegment¼¶±ðµÄ»º´æ£¬¿ÉÒÔ×öµ½´ó·¶Î§¹Ì¶¨Ä£Ê½µÄ²éѯ£»

¶àÖÖquery£¬×î´ó»¯ÌáÉý²éѯÐÔÄÜ£¬ÀýÈçtopN¡¢timeSeriesµÈ²éѯµÈµÈ¡£

¿ò¼Ü¿ÉÁé»îµÄÀ©Õ¹£¬Ò²ÊÇÎÒÃÇ¿¼ÂǵÄÒ»¸öºÜÖØÒªµÄÔªËØ£¬ÔÚÎÒÃÇÖØÐ´ÁËË÷Òýºó£¬DruidÉçÇøÕë¶Ô¸ß»ùÊýά¶ÈµÄ²éѯÉÏÏßÁËgroupByV2£¬ÎÒÃǺܿì¾ÍÍê³ÉÁËgroupByV2Ò²¿É¼ûÆä¿ò¼Ü·Ç³£Áé»î¡£

ÔÚÎÒÃÇ¿´À´£¬DruidµÄ²éѯÒýÇæºÜÇ¿´ó£¬µ«ÊÇË÷Òý²ã»¹ÊÇÕë¶ÔOLAP²éѯµÄ³¡¾°£¬Õâ¾ÍÊÇÎÒÃÇÑ¡ÔñDruid¿ò¼Ü½øÐÐË÷ÒýÀ©Õ¹µÄ¸ù±¾Ô­Òò¡£ ÁíÍâÆä³ä·Ö¿¼ÂÇ·Ö²¼Ê½µÄÎȶ¨ÐÔ£¬HA²ßÂÔ£¬Õë¶Ô²»Í¬µÄ»úÆ÷É豸Çé¿öºÍÓ¦Óó¡¾°£¬Áé»îµÄÅäÖÃ×î´ó»¯ÀûÓÃÓ²¼þÐÔÄÜÀ´Âú×㳡¾°ÐèÒªÒ²ÊÇÎÒÃÇËù¿´Öصġ£

ÔÚ¿ªÔ´µÄDruid°æ±¾ÉÏ×ÔÑУ¬¼Ì³ÐÁËDruidËùÓÐÓŵãµÄͬʱ£¬¶Ô²éѯ²¿·Ö´úÂëÈ«²¿ÖØÐÂʵÏÖ£¬´Ó¶øÔÚÒÔϼ¸¸ö·½Ãæ×öÁ˽ϴó¸Ä½ø£º

1¡¢È¥µôÖ¸±êÔ¤¾ÛºÏ£¬Ö¸±ê¿ÉÒÔÔÚ²éѯʱ×ÔÓɶ¨Ò壺

¶ÔÓÚÊý¾Ý½ÓÈëÀ´Ëµ£¬²»±ØÇø·Öά¶ÈºÍÖ¸±ê£¬Ö»ÐèÒª¶¨ÒåÊý¾ÝÀàÐͼ´¿É£¬Êý¾ÝʹÓÃԭʼÊý¾ÝµÄ·½Ê½½øÐд洢¡£µ±ÐèÒª¾ÛºÏʱ£¬ÔÚ²éѯʱ¶¨ÒåÖ¸±ê¼´¿É¡£¼ÙÉèÎÒÃÇÒª½ÓÈëÒ»Ìõ°üº¬Êý×ÖµÄÊý¾Ý£¬ÎÒÃÇÏÖÔÚÖ»ÐèÒª¶¨ÒåÒ»¸öfloatÀàÐÍµÄÆÕͨά¶È¡£

2¡¢Ö§³Ö¶àÖÖÀàÐÍ£º

²»Í¬ÓÚÔ­ÉúµÄDruidÖ»Ö§³ÖstringÀàÐÍά¶ÈµÄÇé¿ö£¬ÎÒÃǸĽøºóµÄ°æ±¾¿ÉÒÔÖ§³Östring, int, long, float¡¢Ê±¼äµÈ¶àÖÖά¶ÈÀàÐÍ¡£ÔÚÔ­ÉúµÄDruidÖУ¬Èç¹ûÎÒÃÇÐèÒªÒ»¸öÊýÖµÐ͵Äά¶È£¬ÄÇôÎÒÃÇÖ»ÄÜͨ¹ýstringÀ´ÊµÏÖ£¬ÕâÑù»á´øÀ´Ò»¸öºÜ´óµÄÎÊÌ⣬¼´»ùÓÚ·¶Î§µÄ¹ýÂ˲»ÄÜÀûÓÃÓÐÐòµÄµ¹ÅÅ±í£¬Ö»ÄÜͨ¹ýÖð¸ö±È½ÏÀ´ÊµÏÖ£¨ÒòΪÎÒÃDz»ÄܰÑ×Ö·û´®´óСµ±³ÉÊýÖµ´óС£¬ÕâÑù»áµ¼ÖÂÕâÑùµÄ½á¹û¡®12¡¯ < ¡¯2¡¯£©£¬´Ó¶øÐÔÄÜ»á·Ç³£²î£¬ÒòΪÊýÖµÀàÐÍά¶ÈºÜÈÝÒ׳öÏָ߻ùά¡£¶ÔÓڸĽøºóµÄ°æ±¾£¬ÕâÑùµÄÎÊÌâ¾Í¼òµ¥¶àÁË£¬½«Î¬¶È¶¨ÒåΪ¶ÔÓ¦µÄÀàÐͼ´¿É¡£

3¡¢ÊµÏÖÊý¾Ý¶¯Ì¬¼ÓÔØ£º

Ô­ÓеÄDruidÏßÉϵÄÊý¾Ý£¬ÐèÒªÔÚÆô¶¯Ê±£¬È«²¿¼ÓÔØ²Å¿ÉÒÔÌṩ²éѯ·þÎñ¡£ÎÒÃÇͨ¹ý¸ÄÔ죬ʵÏÖÁËLRU²ßÂÔ£¬Æô¶¯µÄʱºòÖ»ÐèÒª¼ÓÔØ¶ÎµÄÔªÊý¾ÝÐÅÏ¢ºÍÉÙÁ¿µÄ¶ÎÐÅÏ¢¼´¿É¡£Ò»·½ÃæÌáÉýÁË·þÎñµÄÆô¶¯Ê±¼ä£¬ÁíÍâÒ»·½Ã棬ÓÉÓÚË÷ÒýÎļþµÄ¶ÁÈ¡»ù±¾¶¼ÊÇMMap£¬µ±ÓдóÁ¿Êý¾Ý¶ÎÐèÒª¼ÓÔØ£¬ÔÚÄÚ´æ²»×ãµÄÇé¿ö£¬»áÖ±½ÓʹÓôÅÅÌswap Cache»»Ò³£¬ÑÏÖØÓ°Ïì²éѯÐÔÄÜ¡£Êý¾Ý¶¯Ì¬¼ÓÔØµÄºÜºÃµÄ±ÜÃâÁËʹÓôÅÅÌswap Cache»»Ò³£¬²éѯ¶¼¾¡Á¿Ê¹ÓÃÄڴ棬¿ÉÒÔͨ¹ýÅäÖã¬×î´óÏ޶ȵÄͨ¹ýÓ²¼þ»·¾³Ìṩ×îºÃµÄ²éѯ»·¾³¡£

HDFS£¬´óÊý¾Ý·¢Õ¹Õâô¶àÄ꣬HDFSÒѾ­³ÉΪPB¼¶¡¢ZB¼¶ÉõÖÁ¸ü¶àÊý¾ÝµÄ·Ö²¼Ê½´æ´¢±ê×¼£¬ºÜ³ÉÊìÁË£¬ËùÒÔÊý¹ûҲѡÓÃHDFS£¬²»±ØÖØÐÂÔìÂÖ×Ó¡£TindexÓëHDFS¿ÉÒÔÍêÃÀ½áºÏ£¬¿ÉÒÔ×÷Ϊһ¸ö¸ßѹËõ¡¢×Ô´øË÷ÒýµÄÎļþ¸ñʽ£¬¼æÈÝHive£¬SparkµÄËùÓвÙ×÷¡£

Kafka/MetaQ,ÏûÏ¢¶ÓÁУ¬Ä¿Ç°TindexÖ§³Ökafka¡¢MetaQµÈÏûÏ¢¶ÓÁУ¬ÓÉÓÚTindex¶ÔÍâÀ©Õ¹½Ó¿Ú¶¼ÊÇ»ùÓÚSPI»úÖÆÊµÏÖ£¬ËùÒÔÈçÓÐÐèÒªÒ²¿ÉÒÔÀ©Õ¹Ö§³Ö¸ü¶àµÄÏûÏ¢¶ÓÁС£

Ecosystem Tools,¸ºÔðTindexµÄÉú̬¹¤¾ßÖ§³Ö£¬Ä¿Ç°Ö÷ÒªÖ§³ÖSpark¡¢Hive£¬¼Æ»®À©Õ¹Ö§³ÖImpala¡¢DrillµÈ´óÊý¾Ý²éѯÒýÇæ¡£

Ö§³ÖÀäÊý¾ÝÏÂÏߣ¬Í¨¹ýÀëÏß·½Ê½£¨spark/Hive£©²éѯ£¬¶ÔÓÚʱÐòÊý¾Ý¿âÆÕ±é´æÔÚµÄÒ»¸öÎÊÌâÊÇ£¬¶ÔÓÚʧȥʱЧÐÔµÄÊý¾Ý£¬ÎÒÃÇÍùÍù²»Ï£ÍûËüÃǼÌÐøÕ¼¾Ý±¦¹óµÄ²éѯ×ÊÔ´¡£È»ºóÎÒÃÇÍùÍùÐèÒªÔÚijЩʱºò¶ÔËûÃDzéѯ¡£¶ÔÓÚTindex¶øÑÔ£¬¿ÉÒÔͨ¹ý½«³¬¹ýÒ»¶¨Ê±¼äµÄÊý¾Ý¶¨ÒåΪÀäÊý¾Ý£¬ÕâÑù¶ÔÓ¦µÄË÷ÒýÊý¾Ý»á´Ó²éѯ½ÚµãÏÂÏß¡£µ±ÎÒÃÇÐèÒªÔٴβéѯʱ£¬Ö»ÐèÒªµ÷ÓöÔÓ¦µÄÀëÏß½Ó¿Ú½øÐвéѯ¼´¿É¡£

SQL Engine,¸ºÔðSQLÓïÒåת»»¼°±í´ïʽ¶¨Òå¡£

Zookeeper,¸ºÔð¼¯Èº×´Ì¬¹ÜÀí¡£

δÀ´»¹»á³ÖÐøÓÅ»¯¸ÄÔìºóµÄLuceneË÷Òý£¬À´µÃµ½¸ü¸ßµÄ²éѯÐÔÄÜ¡£ÓÅ»¯Ö¸±ê¾ÛºÏ·½Ê½£¬°üÀ¨£ºÐ¡ÅúÁ¿µÄ´¦ÀíÊý¾Ý£¬³ä·ÖÀûÓÃCPUÏòÁ¿»¯²¢ÐмÆËãµÄÄÜÁ¦£»ÀûÓÃcode compile±ÜÃâ¾ÛºÏÐ麯ÊýƵ·±µ÷Óã»Óë´óÊý¾ÝÉú̬¶Ô½ÓµÄ³ÖÐøÍêÉÆµÈµÈ¡£

   
2584 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

»ùÓÚEAµÄÊý¾Ý¿â½¨Ä£
Êý¾ÝÁ÷½¨Ä££¨EAÖ¸ÄÏ£©
¡°Êý¾Ýºþ¡±£º¸ÅÄî¡¢ÌØÕ÷¡¢¼Ü¹¹Óë°¸Àý
ÔÚÏßÉ̳ÇÊý¾Ý¿âϵͳÉè¼Æ ˼·+Ч¹û
 
Ïà¹ØÎĵµ

GreenplumÊý¾Ý¿â»ù´¡Åàѵ
MySQL5.1ÐÔÄÜÓÅ»¯·½°¸
ijµçÉÌÊý¾ÝÖÐ̨¼Ü¹¹Êµ¼ù
MySQL¸ßÀ©Õ¹¼Ü¹¹Éè¼Æ
Ïà¹Ø¿Î³Ì

Êý¾ÝÖÎÀí¡¢Êý¾Ý¼Ü¹¹¼°Êý¾Ý±ê×¼
MongoDBʵս¿Î³Ì
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
PostgreSQLÊý¾Ý¿âʵսÅàѵ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

MySQLË÷Òý±³ºóµÄÊý¾Ý½á¹¹
MySQLÐÔÄܵ÷ÓÅÓë¼Ü¹¹Éè¼Æ
SQL ServerÊý¾Ý¿â±¸·ÝÓë»Ö¸´
ÈÃÊý¾Ý¿â·ÉÆðÀ´ 10´óDB2ÓÅ»¯
oracleµÄÁÙʱ±í¿Õ¼äдÂú´ÅÅÌ
Êý¾Ý¿âµÄ¿çƽ̨Éè¼Æ


²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿â
¸ß¼¶Êý¾Ý¿â¼Ü¹¹Éè¼ÆÊ¦
HadoopÔ­ÀíÓëʵ¼ù
Oracle Êý¾Ý²Ö¿â
Êý¾Ý²Ö¿âºÍÊý¾ÝÍÚ¾ò
OracleÊý¾Ý¿â¿ª·¢Óë¹ÜÀí


GE Çø¿éÁ´¼¼ÊõÓëʵÏÖÅàѵ
º½Ìì¿Æ¹¤Ä³×Ó¹«Ë¾ Nodejs¸ß¼¶Ó¦Óÿª·¢
ÖÐÊ¢Òæ»ª ׿Խ¹ÜÀíÕß±ØÐë¾ß±¸µÄÎåÏîÄÜÁ¦
ijÐÅÏ¢¼¼Êõ¹«Ë¾ PythonÅàѵ
ij²©²ÊITϵͳ³§ÉÌ Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À
ÖйúÓÊ´¢ÒøÐÐ ²âÊÔ³ÉÊì¶ÈÄ£Ðͼ¯³É(TMMI)
ÖÐÎïÔº ²úÆ·¾­ÀíÓë²úÆ·¹ÜÀí