±³¾°
ÐÂÒ»´úµÄBonree ONEÖ÷ÒªÌåÏÖÔÚÇáÓ¯¡¢ÓÐÐò¡¢¾«×¼Èý¸öÁÁµã£¬¶øÕâÈý¸ö·½Ïò¶¼Àë²»¿ªÒ»¸öÎȶ¨¡¢¿É¿¿¡¢¸ßЧµÄÊý¾Ý´æ´¢µ××ù¡£Ä¿Ç°£¬Bonree ONE»ùÓÚClickhouse½øÐд洢£¬ÈÝÄÉÁË°üÀ¨APM¡¢RUM¡¢LOG¡¢»á»°¡¢Óû§ÐÐΪÅÙÎöµÈ¶à¸öÒµÎñÄ£¿éµÄ³¡¾°Êý¾Ý¡£
´æ´¢µÄÄѵã
Bonree ONEÈÝÄÉÄ£¿é½Ï¶à£¬Êý¾ÝʹÓó¡¾°¸´ÔÓ¶à±ä£¬¶ÔÓڵײãÊý¾Ý´æ´¢£¬Ö÷ÒªÄѵãÈçÏ£º
¡¤ Êý¾ÝдÈëÁ¿´ó£¬Êý¾ÝÁ¿¼¶Òª¿ÉÒÔÀ©Õ¹µ½PB¼¶±ðµÄÊý¾ÝÉãÈ룻
¡¤ ÒµÎñÁ÷Á¿´æÔÚ²¨·åºÍ²¨¹È£¬¶øÇÒ²¨·åºÍ²¨¹ÈµÄ²î¾à½Ï´ó£¬´æÔÚÍ»·¢³¬¸ß·åдÈëµÄ³¡¾°£»
¡¤ ²éѯ³¡¾°¸´ÔÓ£¬ÓÐolapÅÙÎö¡¢Ã÷ϸÊý¾Ý²éѯÒÔ¼°¸´ÔӵĶà×Ö¶ÎÅÅÐò³¡¾°£»
¡¤ ²éѯÎȶ¨ÐÔÒªÇó½Ï¸ß£¬¶ÔÓڸ澯¡¢ÖØÒªÖ¸±êÒª×öµ½ms¼¶±ðÏìÓ¦£»
¡¤ ¼¯ÈºÎ¬»¤³¡¾°¸´ÔӶȸߣ¬ÒªÓ¦¶Ô¼¯ÈºÀ©ËõÈÝ¡¢Êý¾Ý¾ùºâÒÔ¼°Êý¾ÝÖØ·Ö²¼µÈ³¡¾°£»
ΧÈÆClickhouseµÄ¸ÄÉÆ
Õë¶ÔÒÔÉÏÄѵ㣬ÎÒÃÇÐèÒªÔÚдÈë¡¢¶ÁÈ¡¡¢¶à×⻧ÒÔ¼°failover»úÖƵIJßÂÔÏìÓ¦ÉϽøÐиÄÉÆ£¬Âú×ãBonree ONEÓ¦¶Ô³¬´óÊý¾ÝÁ¿Ó¦Óó¡¾°µÄÐèÇó¡£
дÈë¸ÄÉÆ
¡¤ °´±íÔÜÅú
ClickhouseÊÇÉó¤°´ÅúдÈëÊý¾ÝµÄ£¬Åú´ÎµÄÊý¾ÝÔ½´ó£¬ÍÌÍÂÁ¿Ô½¸ß¡£ÎªÓ¦¶Ô¶à³¡¾°Êý¾ÝÉæÈëµÄ×´¿öºÍ¼õÉÙÒµÎñ¶Ë¶ÔÊý¾Ý´æ´¢¸ÐÖªµÄÐèÇó£¬ÎÒÃÇͨ¹ýÏû·Ñ½ÚµãÀ´Íê³ÉÔÜÅúÂß¼£¬¸ù¾Ýÿ¸ö±íµÄ¸öÐÔ»¯¶¨ÖƲßÂÔ£¬ÊµÏÖÔÜÅúЧ¹ûµÄ×î´ó»¯£¬Õâ¼ÈÄÜÂú×ãÒµÎñЧÂʵÄÒªÇó£¬ÓÖÄÜʵÏÖClickhouseÊý¾ÝÉãÈëµÄ×î´óÍÌÍÂÁ¿¡£
¡¤ ÏÞÁ÷
ÔÚÓÐÏÞ´æ´¢×ÊÔ´µÄÇé¿öÏ£¬Clickhouse¼¯ÈºÖ§³ÖµÄÉãÈëÁ¿ÊÇÓÐÏ޵ģ¬¹ý´óµÄÊý¾ÝдÈëÖ÷ÒªÓÐÁ½¸öά¶ÈµÄÔÒò£¬Ò»¸öÊÇдÈëµÄÊý¾ÝÁ¿¹ý¶à£¬ÁíÒ»¸öÊÇдÈëµÄ·åÖµ¹ý¸ß¡£Ç°Õß»áͨ¹ý¸æ¾¯¹¦ÄÜËÍ´ïÔËάÍŶӣ¬Í¨¹ýÀ©ÈÝ»òÕßÊý¾Ý²Ã¼ôµÄ²Ù×÷À´½â¾öÎÊÌâ¡£ºóÕßÔòͨ¹ýÏÞÁ÷À´±£Ö¤´æ´¢¼¯ÈºµÄÎȶ¨ÐÔ¡£Ä¿Ç°£¬ÔÚconsumer½Úµã£¬ÎÒÃÇÔö¼ÓÁË´°¿ÚÂß¼À´Âú×ãÏÞÁ÷²Ù×÷²ßÂÔ½éÈëµÄÐèÒª£¬±ÈÈçÿÃëдÈë´ÎÊý¡¢Ð´Èëʱ¼ä¼ä¸ôµÈ¡£
¶ÁÈ¡¸ÄÉÆ
Ϊ֧³Ö¶àÒµÎñÓиüÎȶ¨µÄÊý¾ÝʹÓÃЧÂÊ£¬ÔÚÊý¾Ý²éѯÉÏ£¬¸ßƵ²éѯµÄÏìӦЧÂÊÎñ±Ø¸ßЧ£¬ÎÒÃÇÖ÷Òª´ÓÒÔϽǶÈ×ÅÊÖ¸ÄÉÆ£º
¡¤ ²éѯ¼ÓËÙ
¡¤ orderBy ºÍ primaryKeyµÄ¸ßЧʹÓãºorderByÏà¹Ø×Ö¶ÎÊDZíÊý¾ÝµÄÅÅÐòÉèÖã¬Ëü¶Ô¸ßƵ²éѯµÄЧÂÊÓÐÖØÒª¡£Ò»°ãorderByµÄÉèÖÃÒª¾¡Á¿¸²¸Çµ±Ç°±íÒµÎñµÄ¸ßƵ²éѯ£¬´ÓµÍ»ùÊýµ½¸ß»ùÊý½øÐÐÅÅÐòÉèÖá£primaryKeyĬÈÏÓëorderByÒ»Ö£¬Èç¹ûfilterÌõ¼þûÓи²¸ÇËùÓеÄorderBy×ֶΣ¬Ôò¿ÉÒÔÌáÈ¡²¿·Ö×Ö¶Î×÷Ϊ primaryKey £¬µ«ÊÇprimaryKey ±ØÐëÊÇ orderBy×ֶεÄǰ׺¡£
¡¤ Ë÷Òý£ºÕë¶ÔµÈÖµ¹ýÂËʹÓÃBFË÷Òý£¬Õë¶Ô·¶Î§²éѯʹÓÃminmaxË÷Òý£¬Õë¶ÔÈ«ÎļìË÷£¬Ê¹ÓÃtokenbfË÷Òý¡£
¡¤ ÎﻯÊÓͼ£ºÕë¶Ô¹Ì¶¨¸ÄÉƲéѯ³¡¾°£¬Ê¹ÓÃÎﻯÊÓͼ£¬Âú×ãÊý¾ÝÒ»ÖÂÐÔµÄͬʱ£¬´ó´óÌá¸ß²éѯЧÂÊ¡£
¡¤ projection£ºÕë¶Ô²¿·ÖÔ¤¾ÛºÏ³¡¾°£¬Ê¹ÓÃprojectionµÄЧÂʸü¸ß£¬¶øÇÒÓиüÓѺõÄ×Ô¶¯Â·ÓÉ£¬¼õÉÙÒµÎñÇÖÈë¡£
¡¤ ѹËõºÍ±àÂë
ClickhouseÌṩÁ˶àÖÖ±àÂëÒÔ¼°¶àÖÖ±à½âÂëÆ÷£¬¼«´óÌá¸ßÊý¾ÝµÄѹËõЧÂÊ£¬½ÚÊ¡IO¡¢´æ´¢µÈ×ÊÔ´¡£ClickhouseÖ§³ÖµÄѹËõËã·¨ÈçÏ£º
¡¤NONE : No Compression.
¡¤LZ4 : Applies LZ4 fast compression.
¡¤LZ4HC[(level)] : LZ4 HC (high compression) algorithm with configurable level.
¡¤ZSTD[(level)] : ZSTD compression algorithm with configurable level.
¾¹ý²âÊԶԱȣ¬ZSTDµÄѹËõЧÂÊÊÇLZ4µÄ5~~6±¶¡£
ÈôÏëÒª¸ü¸ßµÄѹËõЧÂÊ£¬Êý¾ÝµÄ´æ´¢±àÂëÊÇÒ»ÖÖ¸üºÃµÄ¸ÄÉÆÊֶΡ£ClickhouseÌṩµÄ±àÂëËã·¨ÈçÏ£º
¡¤Delta : This approach stores the difference between 2 neighbor values. It can be combined with LZ4 and ZSTD.
¡¤DoubleDelta : This approach stores the difference between 2 neighbor delta values (delta of deltas). Suitable for time series data.
¡¤Gorilla : Calculates XOR between current and previous value. Suitable for slowly changing floating numbers.
¡¤T64 : It crops unused high bits of values in integer data types(include Enum, Date, DateTime) and puts them into a 64¡Á64 bit matrix.
¡¤FPC : Used in floating point values. XOR between the actual value and the predicted value.
Õë¶ÔÒÔÉϱàÂëËã·¨µÄÌØÐÔ£¬Ê±¼ä×Ö¶ÎÎÒÃÇÑ¡Ôñ»ùÓÚDoubleDelta±àÂëµÄZSTD(1)ѹËõËã·¨£¬StringÀàÐÍʹÓÃZSTD(1)µÄѹËõËã·¨¡£
¡¤ ×Ö¶ÎÀàÐ;«Ï¸»¯
ClickhouseÌṩÁ˷dz£¾«Ï¸µÄÊý¾Ý×ֶνøÐÐѹËõ£¬±ÈÈçÕûÊý¾ÍÖ§³Öint8¡¢int16¡¢int32¡¢int64£¬ClickhouseÖ®ËùÒÔÕâôϸ»¯Êý¾ÝÀàÐÍ£¬ÊÇΪÁ˸ßЧµÄ´æ´¢ºÍ¼ÆË㣬ËùÒÔÔÚÒµÎñʹÓöˣ¬Ò²Òª×öµ½¾«È·»¯¹ÜÀí¡£
¡¤ µÍ»ùÊýµÄStringʹÓà LowCardinality(String)¡£
¡¤ ÄÜÓøüÉÙλÊýµÄÊý¾Ý´æ´¢£¬¾ÍÑ¡Ôñ×îÉÙλÊýµÄÊý¾Ý´æ´¢£¬±ÈÈçÓÅÏÈʹÓÃint8£¬¶ø²»ÊÇĬÈÏʹÓÃint64¡£
¡¤ °ë½á¹¹»¯Êý¾ÝÓÅÏÈʹÓÃMap½á¹¹£¬Æä´ÎÊÇJSON½á¹¹¡£
¶à×⻧
ClickhouseΪÁ˱£Õ϶àÒµÎñÎȶ¨²éѯ£¬Ö§³ÖÁ˶à×⻧£¬¼õÉÙÒµÎñÖ®¼äµÄÓ°Ïì¡£ÎÒÃÇ»ùÓÚClickhouseµÄ¶à×⻧ÄÜÁ¦£¬¸øÓèÿÌõ²úÆ·Ïßµ¥¶ÀµÄ×⻧£¬ÊµÏÖ×⻧×ÊÔ´¸öÐÔ»¯ÅäÖã¬Âú×㲻ͬҵÎñ²»Í¬ÓÅÏȼ¶µÄËßÇó¡£
ϵͳÊǸù¾Ý¸÷¸ö×⻧µÄÒµÎñÖØÒª³Ì¶ÈÓ볡¾°ÏìÓ¦ÐèÇóÀ´Öƶ¨¶ÔÓ¦µÄ×⻧×ÊÔ´ÏÔʾµÄ¡£Ä¿Ç°ClickhouseÖ§³ÖÁ˶à×⻧£¬µ«ÊǶÔÓÚClickhouseÄÚ²¿µÄ×ÊÔ´¸ôÀëÆäʵÊDz»¾ß±¸µÄ£¬ÔÚÕâÒ»µãÉÏ£¬ÎÒÃÇÊÇͨ¹ýÍêÕûµÄ¼à¿Ø¸æ¾¯Á´Â·À´¸ú½ø£¬¼õÉÙ×ÊÔ´³åÍ»´øÀ´µÄ²»Îȶ¨ÐÔ£¬Ö§³Ö×⻧×ÊÔ´µÄ¿ìËÙÊÍ·Å£¬´Ó¶ø¿ìËÙ½â¾öijЩӦ¼±³¡¾°¡£
failover²ßÂÔ
Êý¾ÝµÄÉãÈëºÍ¶ÁÈ¡ÐèÒª¸ß¿ÉÓûúÖÆÀ´Âú×ãÐèÇ󣬱ÈÈçдÈë¶Ëij¸öconsumer½ÚµãÒì³££¬»òÕßij¸öclickhouse½ÚµãÒì³£µÈÇé¿ö£¬ÎÒÃÇÈçºÎ±£Ö¤¼¯ÈºµÄÎȶ¨ÐÔ¡£
µ±consumer½Úµã»òÕßclickhouse½ÚµãÓöµ½Ò쳣ʱ£¬ch-manager½ÚµãÄܹ»¸ÐÖªµ½½ÚµãÒì³£½øÐÐÁ÷Á¿µ÷¶È£¬Ê¹Òì³£½Úµã²»Ó°ÏìÊý¾ÝÕý³£ÉãÈëºÍ²éѯ£¬Í¬Ê±µ÷ÕûÁ÷Á¿Ð´Èë²ßÂÔ£¬±£Ö¤consumer½ÚµãдÈëµÄÎȶ¨ÐÔ£¬ÐÒÃâ ·¢Éú¼¶ÁªÑ©±À×´¿ö¡£
Ч¹û
¡¤ дÈëЧÂÊ£ºBonree ONE×îа汾µÄдÈëЧÂʽϴº¼¾°æ±¾Ìá¸ß3-5±¶£¬ÇÒÎȶ¨ÐÔ¸üÇ¿£¬Äܹ»´ÓÈÝÓ¦¶Ô³¬Ô¤ÆÚµÄÁ÷Á¿Ð´Èë¡£
¡¤ ¶ÁȡЧÂÊ£ºÄ¿Ç°Bonree ONE¹«ÓÐÔÆÉú²ú»·¾³Clickhouse¼¯ÈºµÄ¶ÁȡЧÂÊ£¬TP99ÔÚS¼¶ÒÔÄÚ¡£
¡¤ Îȶ¨ÐÔ£ºClickhouse¼¯ÈºÖ§³ÖÈÎÒâµ¥½Úµã·þÎñµôÏߣ¬¶ø²»Ó°Ï켯ȺÕûÌåµÄдÈëºÍ²éѯ£¬consumerÈÎÒâµ¥½ÚµãµôÏߣ¬Ò²²»Ó°Ï켯ȺÕûÌåдÈë¡£
×îºó