Cómo usar ClickHouse no para el propósito para el que fue diseñado

Alexey Milovidov hace ClickHouse y, por supuesto, lo sabe por dentro y por fuera. Incluyendo cómo se puede utilizar además de su estándar y todas las funciones conocidas.





Y hoy hablará de estas formas inusuales de usarlo y, quizás, ni siquiera para almacenar y procesar datos.





ClickHouse para pruebas de hardware

Lo más fácil de hacer con ClickHouse si hay servidores gratuitos es usarlo para pruebas de hardware. Debido a que su conjunto de datos de prueba contiene los mismos datos de producción de Yandex, solo anonimizados, y están disponibles en el exterior para realizar pruebas. Hablé sobre cómo preparar buenos datos anónimos en Saint HighLoad ++ 2019 en San Petersburgo. 





Instalamos ClickHouse en cualquier sistema operativo Linux (x86_64, AArch64) o Mac. ¿Cómo hacerlo? - Lo recopilamos para cada confirmación y solicitud de extracción. ClickHouse Build Check nos mostrará todos los detalles de todas las compilaciones posibles:





— gcc clang , debug, , x86, ARM Mac OS. ClickHouse : CPU, . — , . 





, . 30 ClickHouse. ClickHouse, .





:





:





— . , , , SPECint SPEC. ClickHouse , .





ClickHouse

, ClickHouse — + . - . ClickHouse, code.txt:





, , , C++ . shell- , . , , , — , — , «return false».





1,665 . . , LC_ALL=C, 0,376 , 5 . - . 





? , clickhouse-local, . 





- , , — clickhouse-local SQL . , ( , — TabSeparated), . 0.103 — 3,7–16 ( , ).





- , GitHub Archive — , GitHub, , issue, , -. https://www.gharchive.org/ ( 890 ):





- , ClickHouse local:





time clickhouse-local --query "SELECT * FROM

file('*.json.gz', TSV, 'data String')

WHERE JSONExtractString(data, 'actor', 'login') = 'alexey-milovidov'

LIMIT 10" | jq








file, *.json.gz — TSV, string. JSON JSON‘ 'actor', — 'login' , « » — 10 GitHub.





, 890 1,3 . . , 10 , . , , , GitHub.





clickhouse-local --query "SELECT count() FROM

file('*.json.gz', TSV, 'data String')

WHERE JSONExtractString(data, 'actor', 'login') = 'alexey-milovidov'"








SELECT COUNT... , . , dstat:





, 530 / — ( RAID HDD).





ClickHouse local 980 . ClickHouse url — file https://.../*.json.gz, . 





ClickHouse, :





  1. file.





  2. glob patterns. glob patterns (, .)





  3. gzip, xz zstd . gz .





  4. JSON. , JSON, . - , .





  5. . , . , .





  6. .





, , . — MergeTree. : , SELECT clickhouse-client. — ,   protobuf JSON : 





clickhouse-local --input-format Protobuf --format-schema -

--output-format JSONEachRow ...








: GitHub Archive .





Serverless ClickHouse

ClickHouse serverless-. , ClickHouse - Google Cloud Run: https://mybranch.dev/posts/clickhouse-on-cloud-run/ (Alex Reid). ClickHouse .





, , tab separated (TSV) comma separated (CSV). CustomSeparated, , .





CustomSeparated:





format_custom_escaping_rule







format_custom_field_delimiter







format_custom_row_before/between/after_delimiter







format_custom_result_before/after_delimiter







, . — . , CSV, JSON, CSV. , . | . , ..





Template:





format_template_resultset







format_template_row







format_template_rows_between_delimiter







, , , . XML, .





Regexp:





format_regexp







format_regexp_escaping_rule







format_regexp_skip_unmatched







clickhouse-local awk. , Regexp subpatterns, subpattern . . — , , .





ClickHouse

— ClickHouse. Mongo, . ClickHouse, — .





, , , — . 'message' String. JSON, JSON . — , , 'actor.login', JSON — . ClickHouse , ALTER :





, actor_login , SELECT , — . : 





ALTER TABLE logs UPDATE actor_login = actor_login







, .





MySQL

ClickHouse MySQL. : , , , , ( , ), SELECT 15 :





: MySQL , MySQL , — 15 . , MySQL ?





5 41 — ! ClickHouse - — MySQL ClickHouse . MySQL — ? 





— . ClickHouse “” (20577 13772), MySQL — (44744), collation ( ) GROUP BY. , , :





, . ClickHouse , . . MySQL ClickHouse .   MySQL :





, . SELECT:





6 , — , , , . MySQL ClickHouse . MySQL , MySQL ClickHouse-, ClickHouse. Distributed , , ClickHouse- ClickHouse, , MySQL. 





, - ( ClickHouse). :





, — MergeTree . SELECT:





, SELECT 0,6 . , — ClickHouse!





ClickHouse MySQL. MySQL ClickHouse , , , MySQL. ClickHouse:





ClickHouse . , odbc PostgreSQL, url — REST-. :





: ClickHouse postgresql, PostgreSQL PostgreSQL. .





ClickHouse

ClickHouse CatBoost. , modelEvaluate. 





. : , , : , , . — , , . ClickHouse CatBoost, .





ClickHouse. — , . , , , GROUP BY:





State:





SELECT stochasticLogisticRegressionState(...







k . AggregateFunction(stochasticLogisticRegression(01, 00, 10, 'Adam'), ...), .   applyMLModel:





. , , :





.





ClickHouse

, ClickHouse — , . , . , , pagerank: 





, , , . , Amos Bird. , open-source. .





UDF ClickHouse

, ClickHouse (user defined functions). . , cache- executable, . stdin , stdout . , . 





Python, , —  , — ClickHouse, user defined function.





: UDF roadmap 2021 .





ClickHouse GPU Application Server

. nVidia ClickHouse , . 





Zhang2014 — ClickHouse Application Server. Zhang2014 pull request, HTTP- (SELECT INSERT). POST - , - GET , , SELECT .





ClickHouse — , - , , , - . , ClickHouse - . production!








All Articles