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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
InfluxDB TSM´æ´¢ÒýÇæÖ®Êý¾Ý¶ÁÈ¡
 
×÷Õߣº ·¶ÐÀÐÀ
  4847  次浏览      27
2020-2-25
 
±à¼­ÍƼö:
±¾ÎÄÖ÷Òª½áºÏInfluxDBÔ´Âë¶Ô²éѯ¾ÛºÏÇëÇóÔÚ·þÎñÆ÷¶ËµÄ´¦Àí¿ò¼Ü½øÐÐÁËϵͳÀíÂÛ½éÉܵȵȣ¬Ï£Íû¶ÔÄúÓÐËù°ïÖú¡£
±¾ÎÄÀ´×Ôhbasefly£¬ÓÉ»ðÁú¹ûÈí¼þLuca±à¼­¡¢ÍƼö¡£

ÈκÎÒ»¸öÊý¾Ý¿âϵͳÄں˹Ø×¢µÄÖØµãÎÞ·Ç£ºÊý¾ÝÔÚÄÚ´æÖÐÈçºÎ´æ´¢¡¢ÔÚÎļþÖÐÈçºÎ´æ´¢¡¢Ë÷Òý½á¹¹ÈçºÎ´æ´¢¡¢Êý¾ÝдÈëÁ÷³ÌÒÔ¼°Êý¾Ý¶ÁÈ¡Á÷³Ì¡£¹ØÓÚInfluxDB´æ´¢Äںˣ¬±ÊÕßÔÚ֮ǰµÄÎÄÕÂÖÐÒѾ­±È½ÏÈ«ÃæµÄ½éÉÜÁËÊý¾ÝµÄÎļþ´æ´¢¸ñʽ¡¢µ¹ÅÅË÷Òý´æ´¢ÊµÏÖÒÔ¼°Êý¾ÝдÈëÁ÷³Ì£¬±¾ÆªÎÄÕÂÖØµã½éÉÜInfluxDBÖÐʱÐòÊý¾ÝµÄ¶ÁÈ¡Á÷³Ì¡£

InfluxDBÖ§³ÖÀàSQL²éѯ£¬³ÆÎªInfluxQL¡£InfluxQLÖ§³Ö»ù±¾µÄDDL²Ù×÷ºÍDML²Ù×÷Óï¾ä£¬Ïê¼ûInfluxQL_Spec£¬±ÈÈçSelectÓï¾ä£º

select_stmt = "SELECT" fields from_clause [ into_clause ] [ where_clause ]
[ group_by_clause ] [ order_by_clause ] [ limit_clause ]
[ offset_clause ] [ slimit_clause ] [ soffset_clause ] .

ʹÓÃInfluxQL¿ÉÒԷdz£·½±ã¡¢ÈËÐÔ»¯µØ¶ÔInfluxDBÖеÄʱÐòÊý¾Ý½øÐжàά¾ÛºÏ·ÖÎö¡£ÄÇInfluxDBÄÚ²¿ÊÇÈçºÎ´¦ÀíQueryÇëÇóµÄÄØ£¿½ÓÏÂÀ´±ÊÕß½áºÏÔ´Âë¶ÔInfluxDBµÄ²éѯÁ÷³Ì×öÒ»¸öÆÊÎö¡£ÁíÍ⣬Èç¹û¿´¹Ù¶ÔÔ´ÂëÕⲿ·Ö¸ÐÐËȤ£¬ÍƼöÏÈÔĶÁ¹Ù·½Îĵµ¶ÔÓ¦²¿·Ö£ºhttps://docs.influxdata.com/influxdb/v1.0 /query_language/spec/#query-engine-internals

±¾ÎÄÆª·ùÏà¶Ô½Ï³¤¡£ÎªÁË·½±ãÔĶÁ£¬±¾ÎÄ·ÖΪÉÏÏÂÁ½²¿·Ö£¬Éϰ벿·Ö»á´ÓÔ­Àí²ãÃæ½éÉÜInfluxDBµÄÊý¾Ý¶ÁÈ¡Á÷³Ì£¬Ï°벿·Ö»á¾ÙÒ»¸öÀý×ÓÄ£ÄâÕû¸öÊý¾Ý¶ÁÈ¡µÄ¹ý³Ì¡£

Éϰ벿·Ö£ºInfluxDBÊý¾Ý¶ÁÈ¡Á÷³ÌÔ­Àí

LSM(TSM)ÒýÇæ¶ÔÓÚ¶ÁÁ÷³ÌµÄ´¦Àíͨ³£À´Ëµ¶¼±È½Ï¸´ÔÓ£¬½¨Òé±£³Ö×ã¹»µÄÄÍÐĺÍרעÁ¦¡£ÀíÂÛ²¿·Ö»á·ÖÁ½¸öСģ¿é½øÐнéÉÜ£¬µÚÒ»¸öÄ£¿é»á´Óºê¹Û¿ò¼Ü²ãÃæ¼òµ¥ÊáÀíÕû¸ö¶ÁÈ¡Á÷³Ì£¬µÚ¶þ¸öÄ£¿é»á´Ó΢¹Ûϸ½Ú²ãÃæ·ÖÎöTSM´æ´¢ÒýÇæ£¨TSDB£©ÄÚ²¿ÏêϸµÄÖ´ÐÐÂß¼­¡£

InfluxDB¶ÁÈ¡Á÷³Ì¿ò¼Ü

±ÊÕß¶ÔÕÕÔ´Âë¶ÔÕû¸öÁ÷³Ì×öÁËÒ»¸ö¼òµ¥µÄÊáÀí£¨ÏÂͼ¶ÁÕß¿ÉÄÜ¿´²»Çå³þ£¬ÎÄÄ©¸½ÓиÃͼµÄ¸ßÇå°æ£©£º

Õû¸ö¶ÁÈ¡Á÷³Ì´Óºê¹ÛÉÏ·ÖΪËĸö²¿·Ö£º

1. Query£ºInfluxQLÔÊÐíÓû§Ê¹ÓÃÀàSQLÓï¾äÖ´Ðвéѯ·ÖÎö¾ÛºÏ£¬InfluxQLÓï·¨Ïê¼û£ºhttps://docs.influxdata.com/influxdb/ v1.0/query_language/spec/

2. QueryParser£ºInfluxQL½øÈëϵͳ֮ºó£¬ÏµÍ³Ê×ÏÈ»á¶ÔInfluxQLÖ´ÐÐÇдʲ¢½âÎöΪ³éÏóÓï·¨Ê÷£¨AST£©£¬³éÏóÊ÷Öбêʾ³öÁËÊý¾ÝÔ´¡¢²éѯÌõ¼þ¡¢²éѯÁÐÒÔ¼°¾ÛºÏº¯ÊýµÈµÈ£¬·Ö±ð¶ÔÓ¦ÉÏͼÖÐSource¡¢ConditionÒÔ¼°Aggration¡£InfluxQLûÓÐʹÓÃͨÓõĵÚÈý·½AST½âÎö¿â£¬×Ô¼ºÊµÏÖÁËÒ»Ì×½âÎö¿â£¬¶Ôϸ½Ú¸ÐÐËȤµÄ¿ÉÒԲο¼£ºhttps://github.com/influxdata/influxql¡£½Ó×ÅInfluxDB»á½«³éÏóÊ÷ת»¯ÎªÒ»¸öQueryʵÌå¶ÔÏ󣬹©ºóÐø²éѯÖÐʹÓá£

3. BuildIterators£ºInfluxQLÓï¾äת»»ÎªQueryʵÌå¶ÔÏóÖ®ºó£¬¾Í½øÈë¶ÁÈ¡Á÷³ÌÖÐ×îÖØÒª×îºËÐĵÄÒ»¸ö»·½Ú ¨C ¹¹½¨IteratorÌåϵ¡£¹¹½¨IteratorÌåϵÊÇÒ»¸ö·Ç³£¸´ÔÓµÄÂß¼­¹ý³Ì£¬ÆäÖÐϸ½Ú·Ç³£·±¸´£¬±ÊÕß¾¡¿ÉÄÜ»¯·±Îª¼ò£¬½«ÆäÖеÄÖ÷Ïß³é³öÀ´¡£ÎªÁË·½±ãÀí½â£¬±ÊÕß½«IteratorÌåϵ·ÖΪÈý¸ö×ÓÌåϵ£º¶¥²ãIterator×ÓÌåϵ¡¢Öмä²ãIterator×ÓÌåϵÒÔ¼°µ×²ãIterator×ÓÌåϵ¡£

£¨1£©¶¥²ãIterator×ÓÌåϵ

InfluxDB»áΪInfluxQLÖÐËùÓвéѯfield¹¹ÔìÒ»¸öFieldIterator£¬FieldIterator±íʾÿ¸ö²éѯÁж¼»á´´½¨Ò»¸öIterator£¨³ÆÎªExprIterator£©£¬ÕâÊÇÒòΪInfluxDBÊÇÁÐʽ´æ´¢ÏµÍ³£¬ËùÓеÄÁж¼ÊǶÀÁ¢´æ´¢µÄ£¬Òò´Ë»ùÓÚÁзֱ𹹽¨Iterator·½±ãÖ´Ðвéѯ¾ÛºÏ²Ù×÷¡£±ÈÈçsum(click)£¬sum(impressions)ºÍsum(revenue)Èý¸ö²éѯÁоͷֱð¶ÔÓ¦Ò»¸öExprIterator¡£

ExprIterator¸ù¾Ý²éѯÁÐÖµÊÇ·ñÐèÒª¾ÛºÏ¿ÉÒÔ·ÖΪVarRefIteratorºÍCallIterator£¬Ç°Õß±íʾÁÐÖµ¿ÉÒÔÖ±½Ó²éѯ·µ»Ø£¬²»ÐèÒª¾ÛºÏ£»ºóÕß±íʾ²éѯÁÐÐèÒªÖ´ÐÐijЩ¾ÛºÏ²Ù×÷¡£Ê¾ÀýÖвéѯsum(click)¾ÍÊǵäÐ͵ÄCallIterator£¬CallIteratorʵ¼ÊʵÏÖ·ÖΪÁ½²½£¬Ê×ÏÈͨ¹ýVarRefIterator°Ñ¶ÔÓ¦µÄÁÐÖµ²éѯµ½£¬ÔÙͨ¹ý¶ÔÓ¦µÄReduceº¯ÊýÖ´ÐÐÏàÓ¦¾ÛºÏ¡£±ÈÈçsum(click)Õâ¸öCallIterator¾ÍÐèÒª¹ÍÓ¶Ò»¸öVarRefIterator°ÑÂú×ãÌõ¼þµÄclickÁÐÖµÄÃÉÏÀ´£¬ÔÙÖ´ÐÐReduceº¯ÊýsumÖ´ÐоۺϲÙ×÷¡£

£¨2£©Öмä²ãIterator×ÓÌåϵ

InfluxDBÖÐÒ»¸ö²éѯÁеÄÖµ¿ÉÄÜ·Ö²¼ÔÚ²»Í¬µÄShardÉÏ£¬ÐèÒª¸ù¾ÝTimeRange¾ö¶¨¸ø¶¨Ê±¼ä¶ÎÔÚÄÄЩshardÉÏ£¬²¢ÎªÃ¿¸öShard¹¹½¨Ò»¸öIterator£¬¹ÍÓ¶Õâ¸öÂß¼­Iterator¸ºÔð²éѯÕâ¸öshardÉ϶ÔÓ¦ÁеÄÁÐÖµ¡£Ä¿Ç°µ¥»ú°æËùÓÐshard¶¼ÔÚͬһ¸öInfluxDBʵÀýÉÏ£¬Èç¹ûʵÏÖ·Ö²¼Ê½¹ÜÀí£¬ÐèÒªÔÚÕâÒ»²ã×ö´¦Àí¡£

£¨3£©µ×²ãIterator×ÓÌåϵ

µ×²ãIterator×ÓÌåϵ¸ºÔ𵥸öshard(engine)ÉÏÂú×ãÌõ¼þµÄijһÁÐÖµµÄ²éÕÒ»òÕßµ¥»ú¾ÛºÏ£¬ÊÇIteratorÌåϵÖÐʵ¼Ê¸É»îµÄIterator¡£±ÈÈçÂú×ãwhere advertiser = ¡°baidu.com¡± Õâ¸öÌõ¼þ¾ÍÐèÒªÏÈÔÚµ¹ÅÅË÷ÒýÖиù¾Ýadvertiser = ¡°baidu.com¡±²éµ½°üº¬¸ÃtagµÄËùÓÐseries£¬ÔÙΪÿ¸öseries¹¹½¨Ò»¸öTagsetIteratorÈ¥²éÕÒ¶ÔÓ¦µÄÁÐÖµ£¬TagsetIterator»á½«²éÕÒÖ¸ÕëÖÃÓÚ×îСµÄÁÐÖµ´¦¡£

×ݹÛÕû¸öIteratorÌåϵµÄ¹¹½¨£¬ÕûÌåÂß¼­»¹ÊǺÜÇåÎúµÄ¡£×ܽáÆðÀ´¾ÍÊÇ£¬²éѯ°´ÕÕ²éѯÁй¹½¨×î¶¥²ãFieldIterator£¬Ã¿¸öFieldIterator»á¸ù¾ÝTimeRange¹ÍÓ¶¶à¸öShardIteratorÈ¥´¦Àíµ¥¸öShardÉÏÃæ¶ÔÓ¦ÁÐÖµµÄ²éÕÒ£¬¶Ô²éÕÒµ½µÄֵҪôֱ½Ó·µ»ØÒªÃ´Ö´ÐÐReduceº¯Êý½øÐоۺϲÙ×÷¡£Ã¿¸öShardÄÚ²¿Ê×ÏÈ»á¸ù¾Ý²éѯÌõ¼þÀûÓõ¹ÅÅË÷Òý¶¨Î»µ½ËùÓÐÂú×ãÌõ¼þµÄseries£¬ÔÙΪÿ¸öseries¹¹½¨Ò»¸öTagsetIteratorÓÃÀ´²éÕÒ¾ßÌåµÄÁÐÖµÊý¾Ý¡£Òò´Ë£¬TagsetIteratorÊÇÕû¸öÌåϵÖÐΨһ¸É»îµÄIterator£¬ËùÓÐÆäËûÉϲãIterator¶¼ÊÇÂß¼­Iterator¡£

ÁíÒ»¸ö·Ç³£ÖØÒªµÄµãÊÇ£¬Í¬Ò»¸öShardÄÚµÄËùÓÐTagsetIteratorÔÚ¹¹½¨Íê³É»áºÏ²¢³ÉÒ»¸öShardIterator£¬Õâ¸öºÏ²¢¹ý³ÌÊǶÔÕâЩTagsetIterator½øÐÐÅÅÐòµÄ¹ý³Ì£¬ÅÅÐò¹æÔòÊǰ´ÕÕseriesÓÉСµ½´óÅÅÐò»òÕßÓÉ´óµ½Ð¡ÅÅÐò£¨ÓÉÓû§SQL¶Ô²éѯ½á¹ûÊÇÓÉСµ½´óÅÅÐò»¹ÊÇÓÉ´óµ½Ð¡ÅÅÐò¾ö¶¨£©¡£Í¬Àí£¬Ò»¸öÁÐÖµ¶ÔÓ¦µÄ¶à¸öShardIterator¹¹½¨Íê³ÉÖ®ºó»áºÏ²¢³ÉÒ»¸öFieldIterator£¬ºÏ²¢¹ý³ÌÒàÊÇÒ»¸öÅÅÐò¹ý³Ì£¬²»¹ýÅÅÐòÊÇÕë¶ÔËùÓÐShardÖеÄTagsetIterator½øÐеģ¬ÅÅÐò¹æÔòÊÇÏȱȽÏseries£¬ÔٱȽÏʱ¼ä¡£¿É¼û£¬Ò»¸öFieldIterator×îÖÕÊÇÓÉһϵÁÐÅÅÐò¹ýµÄTagsetIterator¹¹³ÉµÄ¡£

4. Emitter.Emit£ºIteratorÌåϵ¹¹½¨Íê³ÉÖ®ºó¾ÍÍê³ÉÁ˲éѯ¾ÛºÏǰµÄ×¼±¸¹¤×÷£¬½ÓÏÂÀ´¾Í¿ªÊ¼¸É»îÁË¡£¸É»îÂß¼­¼òµ¥À´½²ÊDZéÀúËùÓÐFieldIterator£¬¶Ôÿ¸öFieldIteratorÖ´ÐÐÒ»´ÎNextº¯Êý£¬¾Í»á·µ»ØÃ¿¸ö²éѯÁеĽá¹ûÖµ£¬×é×°µ½Ò»Æð¾ÍÊÇÒ»ÐÐÊý¾Ý¡£FieldIteratorÖ´ÐÐNext()º¯Êý»á´«µÝµ½×îµ×²ãµÄTagsetIterator£¬TagsetIteratorÖ´ÐÐNextº¯Êýʵ¼Ê·µ»ØÕæÊµµÄʱÐòÊý¾Ý¡£

TSDB´æ´¢ÒýÇæÖ´ÐÐÂß¼­

TSDB´æ´¢ÒýÇæ£¨Êµ¼ÊÉϾÍÊÇÒ»¸öShard£©¸ù¾ÝÓû§µÄ²éѯÇëÇóÖ´ÐÐԭʼÊý¾ÝµÄ²éѯ¾ÍÊÇÉÏÎÄÖÐÌáµ½µÄµ×²ãIterator×ÓÌåϵµÄ¹¹½¨¡£²éѯ¹ý³Ì·ÖΪÁ½¸ö²¿·Ö£ºµ¹ÅÅË÷Òý²éѯ¹ýÂËÒÔ¼°TSMÊý¾Ý²ã²éѯ£¬Ç°Õßͨ¹ýQueryÖеÄwhereÌõ¼þ½áºÏµ¹ÅÅË÷Òý¹ýÂ˵ô²»Âú×ãÌõ¼þµÄSeriesKey£»ºóÕ߸ù¾ÝÁôϵÄSeriesKeyÒÔ¼°whereÌõ¼þÖÐʱ¼ä¶ÎÐÅÏ¢£¨TimeRange£©ÔÚTSMFileÖÐÒÔ¼°ÄÚ´æÖвé³ö×îÖÕÂú×ãÌõ¼þµÄÊýÖµÁС£TSDB´æ´¢ÒýÇæ»á½«²éѯµ½µÄËùÓÐÂú×ãÌõ¼þµÄԭʼÊýÖµÁзµ»Ø¸øÉϲ㣬Éϲã¸ù¾Ý¾ÛºÏº¯Êý¶ÔԭʼÊý¾Ý½øÐоۺϲ¢½«¾ÛºÏ½á¹û·µ»Ø¸øÓû§¡£Õû¸ö¹ý³ÌÈçÏÂͼËùʾ£º

ÉÏͼÐèÒª´Óµ×²¿ÏòÉÏä¯ÀÀ£¬Õû¸öÁ÷³Ì¿ÉÒÔÕûÀíΪÈçÏ£º

1. ¸ù¾Ýwhere conditionÒÔ¼°ËùÓе¹ÅÅË÷ÒýÎļþ²é´¦ËùÓÐÂú×ãÌõ¼þµÄSeriesKey

2. ½«Âú×ãÌõ¼þµÄSeriesKey¸ù¾ÝGroupByά¶ÈÁнøÐзÖ×飬²»Í¬·Ö×éºóÐøµÄËùÓвÙ×÷¶¼¿ÉÒÔ¶ÀÁ¢²¢·¢Ö´ÐУ¬Òò´Ë¿ÉÒÔ¶àÏ̴߳¦Àí

3. Õë¶Ôij¸ö·Ö×éµÄSeriesKey¼¯ºÏÒÔ¼°´ý²éѯÁУ¬¸ù¾ÝÖ¸¶¨²éѯʱ¼ä¶Î£¨TimeRange£©ÔÚËùÓÐTSMFileÖиù¾ÝB+Ê÷Ë÷Òý¹¹½¨²éѯiterator

4. ½«Âú×ãÌõ¼þµÄԭʼÊý¾Ý·µ»Ø¸øÉÏ²ã½øÐоۺÏÔËË㣬²¢½«¾ÛºÏÔËËãµÄ½á¹û·µ»Ø¸øÓû§

ʵ¼ÊÖ´ÐеĹý³Ì¿ÉÄܱȽϳéÏó£¬ÎªÁ˸üºÃµÄÀí½â£¬±ÊÕßÔÚϰ벿·Ö¾ÙÁËÒ»¸öʾÀý¡£Ã»ÓÐÀí½âÉÏÃæµÄÂß¼­Ã»¹ØÏµ£¬¿ÉÒÔÏÈ¿´ÏÂÃæµÄʾÀý£¬¿´ÍêÖ®ºóÔÙ¿´ÉÏÃæµÄÀíÂÛÂß¼­ÏàÐÅ»á¸ü¼ÓÈÝÒ×Àí½â¡£

ϰ벿·Ö£ºInfluxDB²éѯÁ÷³ÌʾÀý

ÎÄÕÂÉϰ벿·Ö´ÓÀíÂÛ²ãÃæ¶ÔInfluxDB²éѯÁ÷³Ì½øÐÐÁ˽éÉÜ¡£ÎªÁË·½±ãÀí½âTSDB´æ´¢ÒýÇæ´¦Àí²éѯÁ÷³ÌµÄÂß¼­£¬±ÊÕßͨ¹ýÈçÏÂÒ»¸öÕæÊµÊ¾Àý½«ÆäÖеĺËÐIJ½Öè½øÐÐ˵Ã÷¡£Ï±íΪԭʼʱÐòÊý¾Ý±í£¬±íÖÐÓÐ3¸öά¶ÈÁУºpublisher¡¢advertiserÒÔ¼°gender£¬3¸öÊýÖµÁУºimpression¡¢clickÒÔ¼°revenue£º

ÏÖÔÚÓû§Ïë²éѯ2018Äê1Ô·ݷ¢²¼ÔÚbaidu.comƽ̨ÉϵIJ»Í¬¹ã¸æÉÌµÄÆØ¹âÁ¿¡¢µã»÷Á¿ÒÔ¼°×ÜÊÕÈ룬SQLÈçÏÂËùʾ£º

select sum(click),sum(impression),sum(revenue) from table group by publisher where advertiser = "baidu.com" and timestamp > "2018-01-01" and timestamp < "2018-02-01"

²½ÖèÒ»£ºµ¹ÅÅË÷Òý¹ýÂË+groupby·Ö×é

ԭʼ²éѯÓï¾ä£ºselect ¡­. from ad_datasource where advertiser = ¡°baidu.com¡± ¡­¡­ ¡£µ¹ÅÅË÷Òý¼´¸ù¾ÝÌõ¼þadvertiser=¡±baidu.com¡±ÔÚËùÓÐIndex FileÖбéÀú²éѯ°üº¬¸ÃtagµÄËùÓÐSeriesKey£¬¾ßÌåÔ­Àí£¨Ïê¼û¡¶Ê±ÐòÊý¾Ý¿â¼¼ÊõÌåϵ ¨C InfluxDB ¶àά²éѯ֮µ¹ÅÅË÷Òý¡·£©ÈçÏ£º

1. ¸ù¾ÝIndex FileÖÐMeasurement Block¸ù¾Ý¡±ad_datasource¡±½øÐйýÂË£¬¿ÉÒÔÖ±½Ó¶¨Î»µ½¸ø¶¨source¶ÔÓ¦µÄËùÓÐTagKeyËùÔÚµÄÎļþoffset|size¡£

2. ¼ÓÔØ³ö¶ÔÓ¦TagKeyÇøÓòµÄHash Index£¬Ê¹Óøø¶¨TagKey£¨¡±advertiser¡±£©½øÐÐhash¿ÉÒÔÖ±½Ó¶¨Î»µ½¸ÃTagKey¶ÔÓ¦µÄTagValueµÄÎļþoffset|size¡£

3. ¼ÓÔØ³öTagKey¶ÔÓ¦TagValueÇøÓòµÄHash Index£¬Ê¹ÓùýÂËÌõ¼þTagValue£¨¡±baidu.com¡±£©½øÐÐhash¿ÉÒÔÖ±½Ó¶¨Î»µ½¸ÃTagValue¶ÔÓ¦µÄËùÓÐSeriesID¡£

4. SeriesID¾ÍÊǶÔÓ¦SeriesKeyÔÚË÷ÒýÎļþÖеÄoffset£¬Ö±½Ó¸ù¾ÝSeriesID¿ÉÒÔ¼ÓÔØ³ö¶ÔÓ¦µÄSeriesKey¡£

Âú×ãÌõ¼þµÄËùÓÐSeriesKeyÈçϱíËùʾ£¬¹²ÓÐ3¸ö£º

¸ù¾Ýµ¹ÅÅË÷Òý²éѯµÃµ½ËùÓеÄSeriesKeyÖ®ºó£¬ÕâÀïÓÐÒ»¸ö·Ç³£ÖØÒªµÄ²½Ö裺¸ù¾ÝgroupbyÌõ¼þ¶ÔSeriesKey½øÐзÖ×飬·Ö×éË㷨Ϊhash¡£Ê¾Àý²éѯÖоۺÏÌõ¼þΪgroup by publisher£¬Òò´ËÐèÒª½«ÉÏÃæµÃµ½µÄ3¸öSeriesKey°´ÕÕpublisherµÄ²»Í¬·Ö³ÉÈçÏÂÁ½×飺

ÔÚµ¹ÅÅË÷ÒýÖ®ºóÖ´ÐзÖ×éÒâÒå·Ç³£Öش󣬷Ö×éºó²»Í¬groupµÄSeriesKeyÊÇ¿ÉÒÔ²¢ÐжÀÁ¢Ö´Ðвéѯ²¢×îÖÕÖ´Ðоۺϵģ¬Òò´ËºóÐøµÄËùÓвÙ×÷¶¼¿ÉÒÔʹÓöà¸öÏ̲߳¢·¢Ö´ÐУ¬¼«´óÌáÉýÕû¸ö²éѯÐÔÄÜ¡£

²½Öè¶þ£ºTSMÎļþÊý¾Ý¼ìË÷

µ½ÕâÒ»²½£¬ÎÒÃÇÒѾ­°´ÕÕgroupbyµÃµ½·Ö×éºóµÄSeriesKey¼¯ºÏ¡£½ÓÏÂÀ´ÐèÒª¸ù¾ÝSeriesKeyÒÔ¼°TimeRangeÔÚTSMÊý¾ÝÎļþÖвéÕÒÂú×ãÌõ¼þµÄ´ý²éѯÁС£ÔÚTSMÊý¾ÝÎļþÖиù¾ÝSeriesKeyÒÔ¼°TimeRange²éѯfieldµÄ¾ßÌå¹ý³ÌÈçÏ£º

ÉÏͼÖÐÖм䲿·ÖΪË÷Òý²ã£¬TSMÔÚÆô¶¯Ö®ºó¾Í»á½«TSMÎļþµÄË÷Òý²¿·Ö¼ÓÔØµ½Äڴ棬Êý¾Ý²¿·ÖÒòΪ̫´ó²¢²»»áÖ±½Ó¼ÓÔØµ½ÄÚ´æ¡£Óû§²éѯ¿ÉÒÔ·ÖΪÈý²½£º

1. Ê×Ïȸù¾ÝKey£¨SeriesKey+fieldKey£©ÕÒµ½¶ÔÓ¦µÄSeriesIndex Block£¬ÒòΪKeyÊÇÓÐÐòµÄ£¬ËùÒÔ¿ÉÒÔʹÓöþ·Ö²éÕÒÀ´¾ßÌåʵÏÖ

2. ÕÒµ½SeriesIndex BlockÖ®ºóÔÙ¸ù¾Ý²éÕÒµÄʱ¼ä·¶Î§£¬Ê¹ÓÃ[MinTime, MaxTime]Ë÷Òý¶¨Î»µ½¿ÉÄܵÄSeries Data BlockÁбí

3. ½«Âú×ãÌõ¼þµÄSeries Data Block¼ÓÔØµ½ÄÚ´æÖнâѹ½øÒ»²½Ê¹Óöþ·Ö²éÕÒËã·¨²éÕÒ¼´¿ÉÕÒµ½

ÔÚTSMÖвéѯÂú×ãTimeRangeÌõ¼þµÄSeriesKey¶ÔÓ¦µÄ´ý²éѯÁÐÖµ£¬ÒòΪInfluxDB»á¸ù¾Ý²»Í¬µÄ²éѯÁÐÉèÖöÀÁ¢µÄFieldIterator£¬Òò´Ë²éѯÁÐÓжàÉÙ¾ÍÓжàÉÙ¸öFieldIterator£¬ÈçÏÂËùʾ£º

²½ÖèÈý£ºÔ­Ê¼Êý¾Ý¾ÛºÏ

²éѯµ½Âú×ãÌõ¼þµÄËùÓÐԭʼÊý¾ÝÖ®ºó£¬InfluxDB»á¸ù¾Ý²éѯ¾ÛºÏº¯Êý¶ÔԭʼÊý¾Ý½øÐоۺϣ¬ÈçÏÂͼËùʾ£º

ÎÄÕÂ×ܽá

±¾ÎÄÖ÷Òª½áºÏInfluxDBÔ´Âë¶Ô²éѯ¾ÛºÏÇëÇóÔÚ·þÎñÆ÷¶ËµÄ´¦Àí¿ò¼Ü½øÐÐÁËϵͳÀíÂÛ½éÉÜ£¬Í¬Ê±ÉîÈë½éÉÜÁËInfluxDB Shard EngineÊÇÈçºÎÀûÓõ¹ÅÅË÷Òý¡¢Ê±ÐòÊý¾Ý´æ´¢Îļþ£¨TSMFile£©´¦ÀíÓû§µÄ²éѯÇëÇó¡£×îºó£¬¾ÙÁËÒ»¸öʾÀý¶ÔShard EngineµÄÖ´ÐÐÁ÷³Ì½øÐÐÁËÐÎÏó»¯ËµÃ÷¡£Õû¸ö¶ÁÈ¡µÄʾÒâͼ¸½¼þ£º

InfluxDB×îаæ(1.6)²éѯ¾ÛºÏ¿ò¼Ü

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

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

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

Êý¾ÝÖÎÀí¡¢Êý¾Ý¼Ü¹¹¼°Êý¾Ý±ê×¼
MongoDBʵս¿Î³Ì
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
PostgreSQLÊý¾Ý¿âʵսÅàѵ