{"id":293382,"date":"2019-08-14T15:00:45","date_gmt":"2019-08-14T15:00:45","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=293382"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=293382","title":{"rendered":"1.1 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434 \u043f\u043e\u0435\u0437\u0434\u043e\u043a \u043d\u0430 \u0442\u0430\u043a\u0441\u0438: 108-\u044f\u0434\u0435\u0440\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 ClickHouse"},"content":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\"><i>\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432 \u043a\u0443\u0440\u0441\u0430 <a href=\"https:\/\/otus.pw\/uGfL\/\">\u00abData Engineer\u00bb<\/a>.<br \/>  <\/i><br \/>  ___________________<\/p>\n<p>  <a href=\"https:\/\/clickhouse.yandex\/\">ClickHouse<\/a> \u2014 \u044d\u0442\u043e \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u0430\u044f \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c. \u042d\u0442\u043e \u0432\u0435\u043b\u0438\u043a\u043e\u043b\u0435\u043f\u043d\u0430\u044f \u0441\u0440\u0435\u0434\u0430, \u0433\u0434\u0435 \u0441\u043e\u0442\u043d\u0438 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u043e\u0432 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0441\u0442\u0440\u043e \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0434\u0430\u0436\u0435 \u043a\u043e\u0433\u0434\u0430 \u0432\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u043e\u0432 \u043d\u043e\u0432\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0432 \u0434\u0435\u043d\u044c. \u0420\u0430\u0441\u0445\u043e\u0434\u044b \u043d\u0430 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0442\u0430\u043a\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043c\u043e\u0433\u0443\u0442 \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0442\u044c 100 \u0442\u044b\u0441. \u0434\u043e\u043b\u043b\u0430\u0440\u043e\u0432 \u0421\u0428\u0410 \u0432 \u0433\u043e\u0434, \u0438 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0432\u0434\u0432\u043e\u0435 \u043c\u0435\u043d\u044c\u0448\u0435, \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f. \u0412 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u0438\u043d\u0441\u0442\u0430\u043b\u044f\u0446\u0438\u044f ClickHouse \u043e\u0442 \u042f\u043d\u0434\u0435\u043a\u0441 \u041c\u0435\u0442\u0440\u0438\u043a\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043b\u0430 10 \u0442\u0440\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u0437\u0430\u043f\u0438\u0441\u0435\u0439. \u041f\u043e\u043c\u0438\u043c\u043e \u042f\u043d\u0434\u0435\u043a\u0441\u0430, ClickHouse \u0442\u0430\u043a\u0436\u0435 \u0441\u043d\u0438\u0441\u043a\u0430\u043b\u0430 \u0443\u0441\u043f\u0435\u0445 \u0443 Bloomberg \u0438 Cloudflare.<a name=\"habracut\"><\/a><\/p>\n<p>  \u0414\u0432\u0430 \u0433\u043e\u0434\u0430 \u043d\u0430\u0437\u0430\u0434 \u044f \u043f\u0440\u043e\u0432\u0435\u043b <a href=\"https:\/\/tech.marksblogg.com\/billion-nyc-taxi-clickhouse.html\">\u0441\u0440\u0430\u0432\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437<\/a> \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043e\u0434\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b, \u0438 \u043e\u043d\u0430 \u0441\u0442\u0430\u043b\u0430 <a href=\"https:\/\/tech.marksblogg.com\/benchmarks.html\">\u0441\u0430\u043c\u044b\u043c \u0431\u044b\u0441\u0442\u0440\u044b\u043c<\/a> \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u043c \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435\u043c \u0434\u043b\u044f \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u044f \u043a\u043e\u0433\u0434\u0430-\u043b\u0438\u0431\u043e \u0432\u0438\u0434\u0435\u043b. \u0421 \u0442\u0435\u0445 \u043f\u043e\u0440 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043d\u0435 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u0430\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0444\u0438\u0447\u0438, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 Kafka, HDFS \u0438 ZStandard \u0441\u0436\u0430\u0442\u0438\u044f. \u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u043c \u0433\u043e\u0434\u0443 \u043e\u043d\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u043a\u0430\u0441\u043a\u0430\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0441\u0436\u0430\u0442\u0438\u044f, \u0438 <a href=\"https:\/\/github.com\/yandex\/ClickHouse\/issues\/838\">\u0434\u0435\u043b\u044c\u0442\u0430-\u043e\u0442-\u0434\u0435\u043b\u044c\u0442\u044b<\/a> \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0430\u043b\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c. \u041f\u0440\u0438 \u0441\u0436\u0430\u0442\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0440\u044f\u0434\u043e\u0432 gauge-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0445\u043e\u0440\u043e\u0448\u043e \u0441\u0436\u0438\u043c\u0430\u0442\u044c\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u0435\u043b\u044c\u0442\u0430-\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043d\u043e \u0434\u043b\u044f \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u043e\u0432 (counter) \u0431\u0443\u0434\u0435\u0442 \u043b\u0443\u0447\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0435\u043b\u044c\u0442\u0430-\u043e\u0442-\u0434\u0435\u043b\u044c\u0442\u044b-\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435. \u0425\u043e\u0440\u043e\u0448\u0435\u0435 \u0441\u0436\u0430\u0442\u0438\u0435 \u0441\u0442\u0430\u043b\u043e \u043a\u043b\u044e\u0447\u043e\u043c \u043a \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 ClickHouse.<\/p>\n<p>  ClickHouse \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 170 \u0442\u044b\u0441\u044f\u0447 \u0441\u0442\u0440\u043e\u043a C++ \u043a\u043e\u0434\u0430, \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a, \u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043d\u0430\u0438\u043c\u0435\u043d\u044c\u0448\u0438\u0445 \u043a\u043e\u0434\u043e\u0432\u044b\u0445 \u0431\u0430\u0437 \u0434\u043b\u044f \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445. \u0414\u043b\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f, SQLite \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0438 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 235 \u0442\u044b\u0441\u044f\u0447 \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0421. \u041d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0441\u0432\u043e\u0439 \u0432\u043a\u043b\u0430\u0434 \u0432 ClickHouse \u0432\u043d\u0435\u0441\u043b\u0438 207 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432, \u0438 \u0438\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>  \u0412 \u043c\u0430\u0440\u0442\u0435 2017 \u0433\u043e\u0434\u0430 ClickHouse \u043d\u0430\u0447\u0430\u043b \u0432\u0435\u0441\u0442\u0438 <a href=\"https:\/\/github.com\/yandex\/ClickHouse\/blob\/master\/CHANGELOG.md\">\u0436\u0443\u0440\u043d\u0430\u043b \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439<\/a> \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443. \u041e\u043d\u0438 \u0442\u0430\u043a\u0436\u0435 \u0440\u0430\u0437\u0431\u0438\u043b\u0438 \u043c\u043e\u043d\u043e\u043b\u0438\u0442\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043d\u0430 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u044e \u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 Markdown. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0438 \u0444\u0438\u0447\u0438 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 GitHub, \u0438 \u0432 \u0446\u0435\u043b\u043e\u043c \u044d\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u043b\u043e \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0431\u043e\u043b\u0435\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043b\u0435\u0442.<\/p>\n<p>  \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0441\u044c \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 ClickHouse \u043d\u0430 AWS EC2 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c 36-\u044f\u0434\u0435\u0440\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432 \u0438 NVMe-\u043d\u0430\u043a\u043e\u043f\u0438\u0442\u0435\u043b\u044f.<\/p>\n<blockquote><p>\u0410\u041f\u0414\u0415\u0419\u0422: \u0427\u0435\u0440\u0435\u0437 \u043d\u0435\u0434\u0435\u043b\u044e \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0441\u0442\u0430 \u044f \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b \u0442\u0435\u0441\u0442 \u0441 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 \u0438 \u0434\u043e\u0441\u0442\u0438\u0433 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043b\u0443\u0447\u0448\u0438\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432. \u042d\u0442\u043e\u0442 \u043f\u043e\u0441\u0442 \u0431\u044b\u043b \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u0440\u0430\u0437\u0438\u0442\u044c \u044d\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f.<\/p><\/blockquote>\n<h3>\u0417\u0430\u043f\u0443\u0441\u043a \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 AWS EC2<\/h3>\n<p>  \u042f \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0440\u0438 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 c5d.9xlarge EC2 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0441\u0442\u0430. \u041a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043d\u0438\u0445 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 36 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0426\u041f, 72 \u0413\u0411 \u041e\u0417\u0423, 900 \u0413\u0411 \u043d\u0430\u043a\u043e\u043f\u0438\u0442\u0435\u043b\u044f NVMe SSD \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 10-\u0433\u0438\u0433\u0430\u0431\u0438\u0442\u043d\u0443\u044e \u0441\u0435\u0442\u044c. \u041e\u043d\u0438 \u0441\u0442\u043e\u044f\u0442 $1,962\/\u0447\u0430\u0441 \u043a\u0430\u0436\u0434\u044b\u0439 \u0432 \u0440\u0435\u0433\u0438\u043e\u043d\u0435 eu-west-1 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043f\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044e. \u042f \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Ubuntu Server 16.04 LTS \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b.<\/p>\n<p>  \u0424\u0430\u0435\u0440\u0432\u043e\u043b \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d \u0442\u0430\u043a, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c \u0431\u0435\u0437 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439, \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u0439 IPv4-\u0430\u0434\u0440\u0435\u0441 \u0437\u0430\u043d\u0435\u0441\u0435\u043d \u0432 \u0431\u0435\u043b\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a SSH \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435.<\/p>\n<h3>NVMe-\u043d\u0430\u043a\u043e\u043f\u0438\u0442\u0435\u043b\u044c \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 <\/h3>\n<p>  \u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b ClickHouse \u044f \u0441\u043e\u0437\u0434\u0430\u043c \u0432 NVMe-\u043d\u0430\u043a\u043e\u043f\u0438\u0442\u0435\u043b\u0435 \u0444\u0430\u0439\u043b\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 EXT4 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0438\u0437 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432.<\/p>\n<pre><code class=\"sql\">$ sudo mkfs -t ext4 \/dev\/nvme1n1 $ sudo mkdir \/ch $ sudo mount \/dev\/nvme1n1 \/ch<\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u0432\u0441\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043e, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0442\u043e\u0447\u043a\u0443 \u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 783 \u0413\u0411 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0433\u043e \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043c.<\/p>\n<pre><code class=\"sql\">$ lsblk<\/code><\/pre>\n<pre><code class=\"sql\">NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT loop0         7:0    0  87.9M  1 loop \/snap\/core\/5742 loop1         7:1    0  16.5M  1 loop \/snap\/amazon-ssm-agent\/784 nvme0n1     259:1    0     8G  0 disk \u2514\u2500nvme0n1p1 259:2    0     8G  0 part \/ nvme1n1     259:0    0 838.2G  0 disk \/ch<\/code><\/pre>\n<pre><code class=\"sql\">$ df -h<\/code><\/pre>\n<pre><code class=\"sql\">Filesystem      Size  Used Avail Use% Mounted on udev             35G     0   35G   0% \/dev tmpfs           6.9G  8.8M  6.9G   1% \/run \/dev\/nvme0n1p1  7.7G  967M  6.8G  13% \/ tmpfs            35G     0   35G   0% \/dev\/shm tmpfs           5.0M     0  5.0M   0% \/run\/lock tmpfs            35G     0   35G   0% \/sys\/fs\/cgroup \/dev\/loop0       88M   88M     0 100% \/snap\/core\/5742 \/dev\/loop1       17M   17M     0 100% \/snap\/amazon-ssm-agent\/784 tmpfs           6.9G     0  6.9G   0% \/run\/user\/1000 \/dev\/nvme1n1    825G   73M  783G   1% \/ch<\/code><\/pre>\n<p>  \u041d\u0430\u0431\u043e\u0440 \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u044d\u0442\u043e\u043c \u0442\u0435\u0441\u0442\u0435, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0434\u0430\u043c\u043f \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b \u0438\u0437 1.1 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u0430 \u043f\u043e\u0435\u0437\u0434\u043e\u043a \u043d\u0430 \u0442\u0430\u043a\u0441\u0438, \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0445 \u0432 \u041d\u044c\u044e-\u0419\u043e\u0440\u043a\u0435 \u0437\u0430 \u0448\u0435\u0441\u0442\u044c \u043b\u0435\u0442. \u0412 \u0431\u043b\u043e\u0433\u0435 <a href=\"https:\/\/tech.marksblogg.com\/billion-nyc-taxi-rides-redshift.html\">\u041c\u0438\u043b\u043b\u0438\u0430\u0440\u0434 \u043f\u043e\u0435\u0437\u0434\u043e\u043a \u043d\u0430 \u0442\u0430\u043a\u0441\u0438 \u0432 Redshift<\/a> \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u044f \u0441\u043e\u0431\u0440\u0430\u043b \u044d\u0442\u043e\u0442 \u043d\u0430\u0431\u043e\u0440 \u0434\u0430\u043d\u043d\u044b\u0445. \u041e\u043d\u0438 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 AWS S3, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u043d\u0430\u0441\u0442\u0440\u043e\u044e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 AWS \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u043e\u0435\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0438 \u0441\u0435\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u043a\u043b\u044e\u0447\u0435\u0439.<\/p>\n<pre><code class=\"sql\">$ sudo apt update $ sudo apt install awscli $ aws configure<\/code><\/pre>\n<p>  \u042f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u044e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043d\u0430 100, \u0447\u0442\u043e\u0431\u044b \u0444\u0430\u0439\u043b\u044b \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u043b\u0438\u0441\u044c \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043c \u043f\u0440\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445.<\/p>\n<pre><code class=\"sql\">$ aws configure set \\     default.s3.max_concurrent_requests \\     100<\/code><\/pre>\n<p>  \u042f \u0441\u043a\u0430\u0447\u0430\u044e \u043d\u0430\u0431\u043e\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u0435\u0437\u0434\u043e\u043a \u043d\u0430 \u0442\u0430\u043a\u0441\u0438 \u0441 AWS S3 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044e \u0435\u0433\u043e \u043d\u0430 \u0434\u0438\u0441\u043a\u0435 NVMe \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435. \u042d\u0442\u043e\u0442 \u043d\u0430\u0431\u043e\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 ~ 104 \u0413\u0411 \u0432 GZIP-\u0441\u0436\u0430\u0442\u043e\u043c CSV-\u0444\u043e\u0440\u043c\u0430\u0442\u0435.<\/p>\n<pre><code class=\"sql\">$ sudo mkdir -p \/ch\/csv $ sudo chown -R ubuntu \/ch\/csv $ aws s3 sync s3:\/\/&lt;bucket&gt;\/csv \/ch\/csv<\/code><\/pre>\n<h3>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 ClickHouse<\/h3>\n<p>  \u042f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u044e \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432 OpenJDK \u0434\u043b\u044f Java 8, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 Apache ZooKeeper, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0433\u043e \u0434\u043b\u044f \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 ClickHouse \u043d\u0430 \u0432\u0441\u0435\u0445 \u0442\u0440\u0435\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445.<\/p>\n<pre><code class=\"sql\">$ sudo apt update $ sudo apt install \\     openjdk-8-jre \\     openjdk-8-jdk-headless<\/code><\/pre>\n<p>  \u0417\u0430\u0442\u0435\u043c \u044f \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0441\u0440\u0435\u0434\u044b <code>JAVA_HOME<\/code>.<\/p>\n<pre><code class=\"sql\">$ sudo vi \/etc\/profile   export JAVA_HOME=\/usr   $ source \/etc\/profile<\/code><\/pre>\n<p>  \u0417\u0430\u0442\u0435\u043c \u044f \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043a\u0435\u0442\u0430\u043c\u0438 \u0432 Ubuntu \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 ClickHouse 18.16.1, glances \u0438 ZooKeeper \u043d\u0430 \u0432\u0441\u0435 \u0442\u0440\u0438 \u043c\u0430\u0448\u0438\u043d\u044b.<\/p>\n<pre><code class=\"sql\">$ sudo apt-key adv \\     --keyserver hkp:\/\/keyserver.ubuntu.com:80 \\     --recv E0C56BD4 $ echo \"deb http:\/\/repo.yandex.ru\/clickhouse\/deb\/stable\/ main\/\" | \\     sudo tee \/etc\/apt\/sources.list.d\/clickhouse.list $ sudo apt-get update<\/code><\/pre>\n<pre><code class=\"sql\">$ sudo apt install \\     clickhouse-client \\     clickhouse-server \\     glances \\     zookeeperd<\/code><\/pre>\n<p>  \u042f \u0441\u043e\u0437\u0434\u0430\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0434\u043b\u044f ClickHouse, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0432\u0435\u0440\u0448\u0443 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043d\u0430 \u0432\u0441\u0435\u0445 \u0442\u0440\u0435\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445.<\/p>\n<pre><code class=\"sql\">$ sudo mkdir \/ch\/clickhouse $ sudo chown -R clickhouse \/ch\/clickhouse  $ sudo mkdir -p \/etc\/clickhouse-server\/conf.d $ sudo vi \/etc\/clickhouse-server\/conf.d\/taxis.conf<\/code><\/pre>\n<p>  \u042d\u0442\u043e \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c.<\/p>\n<pre><code class=\"sql\">&lt;?xml version=\"1.0\"?&gt; &lt;yandex&gt;     &lt;listen_host&gt;0.0.0.0&lt;\/listen_host&gt;     &lt;path&gt;\/ch\/clickhouse\/&lt;\/path&gt; <\/code><\/pre>\n<p>   <\/p>\n<pre><code class=\"sql\"> &lt;remote_servers&gt;         &lt;perftest_3shards&gt;             &lt;shard&gt;                 &lt;replica&gt;                     &lt;host&gt;172.30.2.192&lt;\/host&gt;                     &lt;port&gt;9000&lt;\/port&gt;                  &lt;\/replica&gt;             &lt;\/shard&gt;             &lt;shard&gt;                  &lt;replica&gt;                     &lt;host&gt;172.30.2.162&lt;\/host&gt;                     &lt;port&gt;9000&lt;\/port&gt;                  &lt;\/replica&gt;             &lt;\/shard&gt;             &lt;shard&gt;                  &lt;replica&gt;                     &lt;host&gt;172.30.2.36&lt;\/host&gt;                     &lt;port&gt;9000&lt;\/port&gt;                  &lt;\/replica&gt;             &lt;\/shard&gt;         &lt;\/perftest_3shards&gt;     &lt;\/remote_servers&gt;<\/code><\/pre>\n<pre><code class=\"sql\">  &lt;zookeeper-servers&gt;         &lt;node&gt;             &lt;host&gt;172.30.2.192&lt;\/host&gt;             &lt;port&gt;2181&lt;\/port&gt;         &lt;\/node&gt;         &lt;node&gt;             &lt;host&gt;172.30.2.162&lt;\/host&gt;             &lt;port&gt;2181&lt;\/port&gt;         &lt;\/node&gt;         &lt;node&gt;             &lt;host&gt;172.30.2.36&lt;\/host&gt;             &lt;port&gt;2181&lt;\/port&gt;         &lt;\/node&gt;     &lt;\/zookeeper-servers&gt;<\/code><\/pre>\n<pre><code class=\"sql\"> &lt;macros&gt;         &lt;shard&gt;03&lt;\/shard&gt;         &lt;replica&gt;01&lt;\/replica&gt;     &lt;\/macros&gt; &lt;\/yandex&gt;<\/code><\/pre>\n<p>  \u0417\u0430\u0442\u0435\u043c \u044f \u0437\u0430\u043f\u0443\u0449\u0443 ZooKeeper \u0438 \u0441\u0435\u0440\u0432\u0435\u0440 ClickHouse \u043d\u0430 \u0432\u0441\u0435\u0445 \u0442\u0440\u0435\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445.<\/p>\n<pre><code class=\"sql\">$ sudo \/etc\/init.d\/zookeeper start $ sudo service clickhouse-server start<\/code><\/pre>\n<h3>\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 ClickHouse<\/h3>\n<p>  \u041d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u044f \u0441\u043e\u0437\u0434\u0430\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043f\u043e\u0435\u0437\u0434\u043e\u043a (<code>trips<\/code>), \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u043d\u0430\u0431\u043e\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u0435\u0437\u0434\u043e\u043a \u0432 \u0442\u0430\u043a\u0441\u0438 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0434\u0432\u0438\u0436\u043a\u0430 Log.<\/p>\n<pre><code class=\"sql\">$ clickhouse-client --host=0.0.0.0   CREATE TABLE trips (     trip_id                 UInt32,     vendor_id               String,      pickup_datetime         DateTime,     dropoff_datetime        Nullable(DateTime),      store_and_fwd_flag      Nullable(FixedString(1)),     rate_code_id            Nullable(UInt8),     pickup_longitude        Nullable(Float64),     pickup_latitude         Nullable(Float64),     dropoff_longitude       Nullable(Float64),     dropoff_latitude        Nullable(Float64),     passenger_count         Nullable(UInt8),     trip_distance           Nullable(Float64),     fare_amount             Nullable(Float32),     extra                   Nullable(Float32),     mta_tax                 Nullable(Float32),     tip_amount              Nullable(Float32),     tolls_amount            Nullable(Float32),     ehail_fee               Nullable(Float32),     improvement_surcharge   Nullable(Float32),     total_amount            Nullable(Float32),     payment_type            Nullable(String),     trip_type               Nullable(UInt8),     pickup                  Nullable(String),     dropoff                 Nullable(String),      cab_type                Nullable(String),      precipitation           Nullable(Int8),     snow_depth              Nullable(Int8),     snowfall                Nullable(Int8),     max_temperature         Nullable(Int8),     min_temperature         Nullable(Int8),     average_wind_speed      Nullable(Int8),      pickup_nyct2010_gid     Nullable(Int8),     pickup_ctlabel          Nullable(String),     pickup_borocode         Nullable(Int8),     pickup_boroname         Nullable(String),     pickup_ct2010           Nullable(String),     pickup_boroct2010       Nullable(String),     pickup_cdeligibil       Nullable(FixedString(1)),     pickup_ntacode          Nullable(String),     pickup_ntaname          Nullable(String),     pickup_puma             Nullable(String),      dropoff_nyct2010_gid    Nullable(UInt8),     dropoff_ctlabel         Nullable(String),     dropoff_borocode        Nullable(UInt8),     dropoff_boroname        Nullable(String),     dropoff_ct2010          Nullable(String),     dropoff_boroct2010      Nullable(String),     dropoff_cdeligibil      Nullable(String),     dropoff_ntacode         Nullable(String),     dropoff_ntaname         Nullable(String),     dropoff_puma            Nullable(String) ) ENGINE = Log;<\/code><\/pre>\n<p>  \u0417\u0430\u0442\u0435\u043c \u044f \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u044e \u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044e \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 CSV-\u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043f\u043e\u0435\u0437\u0434\u043e\u043a (<code>trips<\/code>). \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u0437\u0430 55 \u043c\u0438\u043d\u0443\u0442 \u0438 10 \u0441\u0435\u043a\u0443\u043d\u0434. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u043b 134 \u0413\u0411.<\/p>\n<pre><code class=\"sql\">$ time (for FILENAME in \/ch\/csv\/trips_x*.csv.gz; do             echo $FILENAME             gunzip -c $FILENAME | \\                 clickhouse-client \\                     --host=0.0.0.0 \\                     --query=\"INSERT INTO trips FORMAT CSV\"         done)<\/code><\/pre>\n<p>  \u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0438\u043c\u043f\u043e\u0440\u0442\u0430 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u0430 155 \u041c\u0411 \u043d\u0435\u0441\u0436\u0430\u0442\u043e\u0433\u043e CSV-\u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443. \u042f \u043f\u043e\u0434\u043e\u0437\u0440\u0435\u0432\u0430\u044e, \u0447\u0442\u043e \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u0443\u0437\u043a\u0438\u043c \u043c\u0435\u0441\u0442\u043e\u043c \u0432 GZIP-\u0434\u0435\u043a\u043e\u043c\u043f\u0440\u0435\u0441\u0441\u0438\u0438. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0431\u044b\u043b\u043e \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0444\u0430\u0439\u043b\u044b gzip \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f xargs, \u0430 \u0437\u0430\u0442\u0435\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435. \u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0441\u043e\u043e\u0431\u0449\u0430\u043b\u043e\u0441\u044c \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0438\u043c\u043f\u043e\u0440\u0442\u0430 CSV.<\/p>\n<pre><code class=\"sql\">$ sudo glances<\/code><\/pre>\n<pre><code class=\"sql\">ip-172-30-2-200 (Ubuntu 16.04 64bit \/ Linux 4.4.0-1072-aws)                                                                                                 Uptime: 0:11:42 CPU       8.2%  nice:     0.0%                           LOAD    36-core                           MEM      9.8%  active:    5.20G                           SWAP      0.0% user:     6.0%  irq:      0.0%                           1 min:    2.24                            total:  68.7G  inactive:  61.0G                           total:       0 system:   0.9%  iowait:   1.3%                           5 min:    1.83                            used:   6.71G  buffers:   66.4M                           used:        0 idle:    91.8%  steal:    0.0%                           15 min:   1.01                            free:   62.0G  cached:    61.6G                           free:        0  NETWORK     Rx\/s   Tx\/s   TASKS 370 (507 thr), 2 run, 368 slp, 0 oth sorted automatically by cpu_percent, flat view ens5        136b    2Kb lo         343Mb  343Mb     CPU%  MEM%  VIRT   RES   PID USER        NI S    TIME+ IOR\/s IOW\/s Command                            100.4   1.5 1.65G 1.06G  9909 ubuntu       0 S  1:01.33     0     0 clickhouse-client --host=0.0.0.0 --query=INSERT INTO trips FORMAT CSV DISK I\/O     R\/s    W\/s     85.1   0.0 4.65M  708K  9908 ubuntu       0 R  0:50.60   32M     0 gzip -d -c \/ch\/csv\/trips_xac.csv.gz loop0          0      0     54.9   5.1 8.14G 3.49G  8091 clickhous    0 S  1:44.23     0   45M \/usr\/bin\/clickhouse-server --config=\/etc\/clickhouse-server\/config.xml loop1          0      0      4.5   0.0     0     0   319 root         0 S  0:07.50    1K     0 kworker\/u72:2 nvme0n1        0     3K      2.3   0.0 91.1M 28.9M  9912 root         0 R  0:01.56     0     0 \/usr\/bin\/python3 \/usr\/bin\/glances nvme0n1p1      0     3K      0.3   0.0     0     0   960 root       -20 S  0:00.10     0     0 kworker\/28:1H nvme1n1    32.1M   495M      0.3   0.0     0     0  1058 root       -20 S  0:00.90     0     0 kworker\/23:1H<\/code><\/pre>\n<p>  \u042f \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0443 \u043c\u0435\u0441\u0442\u043e \u043d\u0430 NVMe-\u043f\u0440\u0438\u0432\u043e\u0434\u0435, \u0443\u0434\u0430\u043b\u0438\u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 CSV-\u0444\u0430\u0439\u043b\u044b, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c.<\/p>\n<pre><code class=\"sql\">$ sudo rm -fr \/ch\/csv<\/code><\/pre>\n<h3>\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u0443\u044e \u0444\u043e\u0440\u043c\u0443<\/h3>\n<p>  \u0414\u0432\u0438\u0436\u043e\u043a Log ClickHouse \u0431\u0443\u0434\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0441\u0442\u0440\u043e\u043a\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435. \u0427\u0442\u043e\u0431\u044b \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435, \u044f \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u044e \u0438\u0445 \u0432 \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u0432\u0438\u0436\u043a\u0430 MergeTree.<\/p>\n<pre><code class=\"sql\">$ clickhouse-client --host=0.0.0.0<\/code><\/pre>\n<p>  \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u0437\u0430 34 \u043c\u0438\u043d\u0443\u0442\u044b \u0438 50 \u0441\u0435\u043a\u0443\u043d\u0434. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u043b 237 \u0413\u0411.<\/p>\n<pre><code class=\"sql\">CREATE TABLE trips_mergetree     ENGINE = MergeTree(pickup_date, pickup_datetime, 8192)     AS SELECT         trip_id,         CAST(vendor_id AS Enum8('1' = 1,                                 '2' = 2,                                 'CMT' = 3,                                 'VTS' = 4,                                 'DDS' = 5,                                 'B02512' = 10,                                 'B02598' = 11,                                 'B02617' = 12,                                 'B02682' = 13,                                 'B02764' = 14)) AS vendor_id,         toDate(pickup_datetime)                 AS pickup_date,         ifNull(pickup_datetime, toDateTime(0))  AS pickup_datetime,         toDate(dropoff_datetime)                AS dropoff_date,         ifNull(dropoff_datetime, toDateTime(0)) AS dropoff_datetime,         assumeNotNull(store_and_fwd_flag)       AS store_and_fwd_flag,         assumeNotNull(rate_code_id)             AS rate_code_id,          assumeNotNull(pickup_longitude)         AS pickup_longitude,         assumeNotNull(pickup_latitude)          AS pickup_latitude,         assumeNotNull(dropoff_longitude)        AS dropoff_longitude,         assumeNotNull(dropoff_latitude)         AS dropoff_latitude,         assumeNotNull(passenger_count)          AS passenger_count,         assumeNotNull(trip_distance)            AS trip_distance,         assumeNotNull(fare_amount)              AS fare_amount,         assumeNotNull(extra)                    AS extra,         assumeNotNull(mta_tax)                  AS mta_tax,         assumeNotNull(tip_amount)               AS tip_amount,         assumeNotNull(tolls_amount)             AS tolls_amount,         assumeNotNull(ehail_fee)                AS ehail_fee,         assumeNotNull(improvement_surcharge)    AS improvement_surcharge,         assumeNotNull(total_amount)             AS total_amount,         assumeNotNull(payment_type)             AS payment_type_,         assumeNotNull(trip_type)                AS trip_type,          pickup AS pickup,         pickup AS dropoff,          CAST(assumeNotNull(cab_type)             AS Enum8('yellow' = 1, 'green' = 2))                                 AS cab_type,          precipitation           AS precipitation,         snow_depth              AS snow_depth,         snowfall                AS snowfall,         max_temperature         AS max_temperature,         min_temperature         AS min_temperature,         average_wind_speed      AS average_wind_speed,          pickup_nyct2010_gid     AS pickup_nyct2010_gid,         pickup_ctlabel          AS pickup_ctlabel,         pickup_borocode         AS pickup_borocode,         pickup_boroname         AS pickup_boroname,         pickup_ct2010           AS pickup_ct2010,         pickup_boroct2010       AS pickup_boroct2010,         pickup_cdeligibil       AS pickup_cdeligibil,         pickup_ntacode          AS pickup_ntacode,         pickup_ntaname          AS pickup_ntaname,         pickup_puma             AS pickup_puma,          dropoff_nyct2010_gid    AS dropoff_nyct2010_gid,         dropoff_ctlabel         AS dropoff_ctlabel,         dropoff_borocode        AS dropoff_borocode,         dropoff_boroname        AS dropoff_boroname,         dropoff_ct2010          AS dropoff_ct2010,         dropoff_boroct2010      AS dropoff_boroct2010,         dropoff_cdeligibil      AS dropoff_cdeligibil,         dropoff_ntacode         AS dropoff_ntacode,         dropoff_ntaname         AS dropoff_ntaname,         dropoff_puma            AS dropoff_puma     FROM trips;<\/code><\/pre>\n<p>  \u0412\u043e\u0442 \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b glance-\u0432\u044b\u0432\u043e\u0434 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438:<\/p>\n<pre><code class=\"sql\">ip-172-30-2-200 (Ubuntu 16.04 64bit \/ Linux 4.4.0-1072-aws)                                                                                                 Uptime: 1:06:09 CPU      10.3%  nice:     0.0%                           LOAD    36-core                           MEM     16.1%  active:    13.3G                           SWAP      0.0% user:     7.9%  irq:      0.0%                           1 min:    1.87                            total:  68.7G  inactive:  52.8G                           total:       0 system:   1.6%  iowait:   0.8%                           5 min:    1.76                            used:   11.1G  buffers:   71.8M                           used:        0 idle:    89.7%  steal:    0.0%                           15 min:   1.95                            free:   57.6G  cached:    57.2G                           free:        0  NETWORK     Rx\/s   Tx\/s   TASKS 367 (523 thr), 1 run, 366 slp, 0 oth sorted automatically by cpu_percent, flat view ens5         1Kb    8Kb lo           2Kb    2Kb     CPU%  MEM%  VIRT   RES   PID USER        NI S    TIME+ IOR\/s IOW\/s Command                            241.9  12.8 20.7G 8.78G  8091 clickhous    0 S 30:36.73   34M  125M \/usr\/bin\/clickhouse-server --config=\/etc\/clickhouse-server\/config.xml DISK I\/O     R\/s    W\/s      2.6   0.0 90.4M 28.3M  9948 root         0 R  1:18.53     0     0 \/usr\/bin\/python3 \/usr\/bin\/glances loop0          0      0      1.3   0.0     0     0   203 root         0 S  0:09.82     0     0 kswapd0 loop1          0      0      0.3   0.1  315M 61.3M 15701 ubuntu       0 S  0:00.40     0     0 clickhouse-client --host=0.0.0.0 nvme0n1        0     3K      0.3   0.0     0     0     7 root         0 S  0:00.83     0     0 rcu_sched nvme0n1p1      0     3K      0.0   0.0     0     0   142 root         0 S  0:00.22     0     0 migration\/27 nvme1n1    25.8M   330M      0.0   0.0 59.7M 1.79M  2764 ubuntu       0 S  0:00.00     0     0 (sd-pam)<\/code><\/pre>\n<p>  \u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u0442\u0435\u0441\u0442\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0431\u044b\u043b\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u044b \u0438 \u043f\u0435\u0440\u0435\u0441\u0447\u0438\u0442\u0430\u043d\u044b. \u042f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b, \u0447\u0442\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u044d\u0442\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0434\u043e\u043b\u0436\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0432 \u044d\u0442\u043e\u043c \u043d\u0430\u0431\u043e\u0440\u0435 \u0434\u0430\u043d\u043d\u044b\u0445. \u0414\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u044f \u0443\u0434\u0430\u043b\u0438\u043b \u043d\u0435\u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043b \u0434\u0430\u043d\u043d\u044b\u0435 \u0431\u0435\u0437 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u0431\u043e\u043b\u0435\u0435 \u0434\u0435\u0442\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0442\u0438\u043f\u044b.<\/p>\n<h3>\u0420\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0443<\/h3>\n<p>  \u042f \u0431\u0443\u0434\u0443 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u0432\u0441\u0435\u043c \u0442\u0440\u0435\u043c \u0443\u0437\u043b\u0430\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0438\u0436\u0435 \u044f \u0441\u043e\u0437\u0434\u0430\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043d\u0430 \u0432\u0441\u0435\u0445 \u0442\u0440\u0435\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445.<\/p>\n<pre><code class=\"sql\">$ clickhouse-client --host=0.0.0.0<\/code><\/pre>\n<pre><code class=\"sql\">CREATE TABLE trips_mergetree_third (     trip_id                 UInt32,     vendor_id               String,     pickup_date             Date,     pickup_datetime         DateTime,     dropoff_date            Date,     dropoff_datetime        Nullable(DateTime),     store_and_fwd_flag      Nullable(FixedString(1)),     rate_code_id            Nullable(UInt8),     pickup_longitude        Nullable(Float64),     pickup_latitude         Nullable(Float64),     dropoff_longitude       Nullable(Float64),     dropoff_latitude        Nullable(Float64),     passenger_count         Nullable(UInt8),     trip_distance           Nullable(Float64),     fare_amount             Nullable(Float32),     extra                   Nullable(Float32),     mta_tax                 Nullable(Float32),     tip_amount              Nullable(Float32),     tolls_amount            Nullable(Float32),     ehail_fee               Nullable(Float32),     improvement_surcharge   Nullable(Float32),     total_amount            Nullable(Float32),     payment_type            Nullable(String),     trip_type               Nullable(UInt8),     pickup                  Nullable(String),     dropoff                 Nullable(String),      cab_type                Nullable(String),      precipitation           Nullable(Int8),     snow_depth              Nullable(Int8),     snowfall                Nullable(Int8),     max_temperature         Nullable(Int8),     min_temperature         Nullable(Int8),     average_wind_speed      Nullable(Int8),      pickup_nyct2010_gid     Nullable(Int8),     pickup_ctlabel          Nullable(String),     pickup_borocode         Nullable(Int8),     pickup_boroname         Nullable(String),     pickup_ct2010           Nullable(String),     pickup_boroct2010       Nullable(String),     pickup_cdeligibil       Nullable(FixedString(1)),     pickup_ntacode          Nullable(String),     pickup_ntaname          Nullable(String),     pickup_puma             Nullable(String),      dropoff_nyct2010_gid    Nullable(UInt8),     dropoff_ctlabel         Nullable(String),     dropoff_borocode        Nullable(UInt8),     dropoff_boroname        Nullable(String),     dropoff_ct2010          Nullable(String),     dropoff_boroct2010      Nullable(String),     dropoff_cdeligibil      Nullable(String),     dropoff_ntacode         Nullable(String),     dropoff_ntaname         Nullable(String),     dropoff_puma            Nullable(String) ) ENGINE = MergeTree(pickup_date, pickup_datetime, 8192);<\/code><\/pre>\n<p>  \u0417\u0430\u0442\u0435\u043c \u044f \u043f\u043e\u0437\u0430\u0431\u043e\u0447\u0443\u0441\u044c \u043e \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0432\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u043c\u043e\u0433 \u0432\u0438\u0434\u0435\u0442\u044c \u0432\u0441\u0435 \u0442\u0440\u0438 \u0443\u0437\u043b\u0430 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435.<\/p>\n<pre><code class=\"sql\">SELECT * FROM system.clusters WHERE cluster = 'perftest_3shards' FORMAT Vertical;<\/code><\/pre>\n<pre><code class=\"sql\">Row 1: \u2500\u2500\u2500\u2500\u2500\u2500 cluster:          perftest_3shards shard_num:        1 shard_weight:     1 replica_num:      1 host_name:        172.30.2.192 host_address:     172.30.2.192 port:             9000 is_local:         1 user:             default default_database:<\/code><\/pre>\n<pre><code class=\"sql\">Row 2: \u2500\u2500\u2500\u2500\u2500\u2500 cluster:          perftest_3shards shard_num:        2 shard_weight:     1 replica_num:      1 host_name:        172.30.2.162 host_address:     172.30.2.162 port:             9000 is_local:         0 user:             default default_database:<\/code><\/pre>\n<pre><code class=\"sql\">Row 3: \u2500\u2500\u2500\u2500\u2500\u2500 cluster:          perftest_3shards shard_num:        3 shard_weight:     1 replica_num:      1 host_name:        172.30.2.36 host_address:     172.30.2.36 port:             9000 is_local:         0 user:             default default_database:<\/code><\/pre>\n<p>  \u0417\u0430\u0442\u0435\u043c \u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044e \u043d\u043e\u0432\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0430 \u043d\u0430 \u0441\u0445\u0435\u043c\u0435 <code>trips_mergetree_third<\/code> \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0434\u0432\u0438\u0436\u043e\u043a Distributed.<\/p>\n<pre><code class=\"sql\">CREATE TABLE trips_mergetree_x3     AS trips_mergetree_third     ENGINE = Distributed(perftest_3shards,                          default,                          trips_mergetree_third,                          rand());<\/code><\/pre>\n<p>  \u0417\u0430\u0442\u0435\u043c \u044f \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u044e \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 MergeTree \u043d\u0430 \u0432\u0441\u0435 \u0442\u0440\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u0437\u0430 34 \u043c\u0438\u043d\u0443\u0442\u044b \u0438 44 \u0441\u0435\u043a\u0443\u043d\u0434\u044b.<\/p>\n<pre><code class=\"sql\">INSERT INTO trips_mergetree_x3     SELECT * FROM trips_mergetree;<\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0439 \u0432\u044b\u0448\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u044f \u0434\u0430\u043b ClickHouse 15 \u043c\u0438\u043d\u0443\u0442, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043e\u0439\u0442\u0438 \u043e\u0442 \u043e\u0442\u043c\u0435\u0442\u043a\u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430. \u041a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0438\u0442\u043e\u0433\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u0438 264 \u0413\u0411, 34 \u0413\u0411 \u0438 33 \u0413\u0411 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0438\u0437 \u0442\u0440\u0435\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432.<\/p>\n<h3>\u041e\u0446\u0435\u043d\u043a\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 ClickHouse<\/h3>\n<p>  \u0422\u043e, \u0447\u0442\u043e \u044f \u0443\u0432\u0438\u0434\u0435\u043b \u0434\u0430\u043b\u044c\u0448\u0435, \u0431\u044b\u043b\u043e \u0441\u0430\u043c\u044b\u043c \u0431\u044b\u0441\u0442\u0440\u044b\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u044f \u0432\u0438\u0434\u0435\u043b \u043f\u0440\u0438 \u043c\u043d\u043e\u0433\u043e\u043a\u0440\u0430\u0442\u043d\u043e\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 <code>trips_mergetree_x3<\/code>.<\/p>\n<pre><code class=\"sql\">$ clickhouse-client --host=0.0.0.0<\/code><\/pre>\n<p>  \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u0437\u0430 2.449 \u0441\u0435\u043a\u0443\u043d\u0434\u044b.<\/p>\n<pre><code class=\"sql\">SELECT cab_type, count(*) FROM trips_mergetree_x3 GROUP BY cab_type;<\/code><\/pre>\n<p>  \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u0437\u0430 0.691 \u0441\u0435\u043a\u0443\u043d\u0434\u044b.<\/p>\n<pre><code class=\"sql\">SELECT passenger_count,        avg(total_amount) FROM trips_mergetree_x3 GROUP BY passenger_count;<\/code><\/pre>\n<p>  \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u0437\u0430 0.,582 \u0441\u0435\u043a\u0443\u043d\u0434\u044b.<\/p>\n<pre><code class=\"sql\">SELECT passenger_count,        toYear(pickup_date) AS year,        count(*) FROM trips_mergetree_x3 GROUP BY passenger_count,          year;<\/code><\/pre>\n<p>  \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u0437\u0430 0.983 \u0441\u0435\u043a\u0443\u043d\u0434\u044b.<\/p>\n<pre><code class=\"sql\">SELECT passenger_count,        toYear(pickup_date) AS year,        round(trip_distance) AS distance,        count(*) FROM trips_mergetree_x3 GROUP BY passenger_count,          year,          distance ORDER BY year,          count(*) DESC;<\/code><\/pre>\n<p>  \u0414\u043b\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043b \u0442\u0435 \u0436\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 MergeTree, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435.<\/p>\n<h3>\u041e\u0446\u0435\u043d\u043a\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0443\u0437\u043b\u0430 ClickHouse<\/h3>\n<p>  \u0422\u043e, \u0447\u0442\u043e \u044f \u0443\u0432\u0438\u0434\u0435\u043b \u0434\u0430\u043b\u044c\u0448\u0435, \u0431\u044b\u043b\u043e \u0441\u0430\u043c\u044b\u043c \u0431\u044b\u0441\u0442\u0440\u044b\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u044f \u0432\u0438\u0434\u0435\u043b \u043f\u0440\u0438 \u043c\u043d\u043e\u0433\u043e\u043a\u0440\u0430\u0442\u043d\u043e\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 <code>trips_mergetree_x3<\/code>.<\/p>\n<p>  \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u0437\u0430 0.241 \u0441\u0435\u043a\u0443\u043d\u0434\u044b.<\/p>\n<pre><code class=\"sql\">SELECT cab_type, count(*) FROM trips_mergetree GROUP BY cab_type;<\/code><\/pre>\n<p>  \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u0437\u0430 0.826 \u0441\u0435\u043a\u0443\u043d\u0434\u044b.<\/p>\n<pre><code class=\"sql\">SELECT passenger_count,        avg(total_amount) FROM trips_mergetree GROUP BY passenger_count;<\/code><\/pre>\n<p>  \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u0437\u0430 1.209 \u0441\u0435\u043a\u0443\u043d\u0434\u044b.<\/p>\n<pre><code class=\"sql\">SELECT passenger_count,        toYear(pickup_date) AS year,        count(*) FROM trips_mergetree GROUP BY passenger_count,          year;<\/code><\/pre>\n<p>  \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u0437\u0430 1.781 \u0441\u0435\u043a\u0443\u043d\u0434\u044b.<\/p>\n<pre><code class=\"sql\">SELECT passenger_count,        toYear(pickup_date) AS year,        round(trip_distance) AS distance,        count(*) FROM trips_mergetree GROUP BY passenger_count,          year,          distance ORDER BY year,          count(*) DESC;<\/code><\/pre>\n<h3>\u0420\u0430\u0437\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u044f \u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u0445<\/h3>\n<p>  \u042d\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0430\u044f \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0431\u0430\u0437\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0441\u043c\u043e\u0433\u043b\u0430 \u043f\u0440\u0435\u0432\u0437\u043e\u0439\u0442\u0438 \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 GPU \u0432 \u043c\u043e\u0438\u0445 \u0442\u0435\u0441\u0442\u0430\u0445. \u0422\u0430 \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 GPU \u0441 \u0442\u0435\u0445 \u043f\u043e\u0440 \u043f\u043e\u0434\u0432\u0435\u0440\u0433\u043b\u0430\u0441\u044c \u0434\u0432\u0443\u043c \u0440\u0435\u0432\u0438\u0437\u0438\u044f\u043c, \u043d\u043e, \u0442\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u0443\u044e ClickHouse \u043f\u043e\u043a\u0430\u0437\u0430\u043b \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0443\u0437\u043b\u0435, \u043e\u0447\u0435\u043d\u044c \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u044f\u0435\u0442.<\/p>\n<p>  \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 Query 1 \u043d\u0430 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c \u0434\u0432\u0438\u0436\u043a\u0435 \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0435 \u0440\u0430\u0441\u0445\u043e\u0434\u044b \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0432\u044b\u0448\u0435. \u042f \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0442\u043e \u0447\u0442\u043e-\u0442\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u043b \u0432 \u0441\u0432\u043e\u0435\u043c \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0438 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0441\u0442\u0430, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0445\u043e\u0440\u043e\u0448\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u043a\u0430\u043a \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0441\u043d\u0438\u0436\u0430\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e \u0431\u043e\u043b\u044c\u0448\u0435 \u0443\u0437\u043b\u043e\u0432 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440. \u041e\u0434\u043d\u0430\u043a\u043e \u044d\u0442\u043e \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0442\u043e \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0440\u043e\u0441\u043b\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432 2 \u0440\u0430\u0437\u0430.<\/p>\n<p>  \u0411\u044b\u043b\u043e \u0431\u044b \u043d\u0435\u043f\u043b\u043e\u0445\u043e, \u0435\u0441\u043b\u0438 \u0431\u044b ClickHouse \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u043b\u0441\u044f \u0432 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043e\u0442\u0434\u0435\u043b\u0438\u0442\u044c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0438 \u043c\u043e\u0433\u043b\u0438 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 HDFS, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u044b\u043b\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u043c \u0433\u043e\u0434\u0443, \u043c\u043e\u0436\u0435\u0442 \u0441\u0442\u0430\u0442\u044c \u0448\u0430\u0433\u043e\u043c \u043a \u044d\u0442\u043e\u043c\u0443. \u0427\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439, \u0435\u0441\u043b\u0438 \u043e\u0434\u0438\u043d \u0437\u0430\u043f\u0440\u043e\u0441 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u0441\u043a\u043e\u0440\u0435\u043d \u043f\u0440\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0443\u0437\u043b\u043e\u0432 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440, \u0442\u043e \u0431\u0443\u0434\u0443\u0449\u0435\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u0431\u0435\u0437\u043e\u0431\u043b\u0430\u0447\u043d\u044b\u043c.<\/p>\n<p>  \u0421\u043f\u0430\u0441\u0438\u0431\u043e, \u0447\u0442\u043e \u043d\u0430\u0448\u043b\u0438 \u0432\u0440\u0435\u043c\u044f, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u043e\u0441\u0442. \u042f \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043a\u043e\u043d\u0441\u0430\u043b\u0442\u0438\u043d\u0433, \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u0438 \u0443\u0441\u043b\u0443\u0433\u0438 \u043f\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044e \u0434\u043b\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u0432 \u0421\u0435\u0432\u0435\u0440\u043d\u043e\u0439 \u0410\u043c\u0435\u0440\u0438\u043a\u0435 \u0438 \u0415\u0432\u0440\u043e\u043f\u0435. \u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0431\u0441\u0443\u0434\u0438\u0442\u044c, \u043a\u0430\u043a \u043c\u043e\u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043c\u043e\u0447\u044c \u0432\u0430\u0448\u0435\u043c\u0443 \u0431\u0438\u0437\u043d\u0435\u0441\u0443, \u0441\u0432\u044f\u0436\u0438\u0442\u0435\u0441\u044c \u0441\u043e \u043c\u043d\u043e\u0439 \u0447\u0435\u0440\u0435\u0437 <a href=\"https:\/\/uk.linkedin.com\/in\/marklitwintschik\/\">LinkedIn<\/a>.<\/div>\n<p>               <script class=\"js-mediator-script\">!function(e){function t(t,n){if(!(n in e)){for(var r,a=e.document,i=a.scripts,o=i.length;o--;)if(-1!==i[o].src.indexOf(t)){r=i[o];break}if(!r){r=a.createElement(\"script\"),r.type=\"text\/javascript\",r.async=!0,r.defer=!0,r.src=t,r.charset=\"UTF-8\";var d=function(){var e=a.getElementsByTagName(\"script\")[0];e.parentNode.insertBefore(r,e)};\"[object Opera]\"==e.opera?a.addEventListener?a.addEventListener(\"DOMContentLoaded\",d,!1):e.attachEvent(\"onload\",d):d()}}}t(\"\/\/mediator.mail.ru\/script\/2820404\/\",\"_mediator\")}(window);<\/script>     <br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/463665\/\"> https:\/\/habr.com\/ru\/company\/otus\/blog\/463665\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\"><i>\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432 \u043a\u0443\u0440\u0441\u0430 <a href=\"https:\/\/otus.pw\/uGfL\/\">\u00abData Engineer\u00bb<\/a>.<br \/>  <\/i><br \/>  ___________________<\/p>\n<p>  <a href=\"https:\/\/clickhouse.yandex\/\">ClickHouse<\/a> \u2014 \u044d\u0442\u043e \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u0430\u044f \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c. \u042d\u0442\u043e \u0432\u0435\u043b\u0438\u043a\u043e\u043b\u0435\u043f\u043d\u0430\u044f \u0441\u0440\u0435\u0434\u0430, \u0433\u0434\u0435 \u0441\u043e\u0442\u043d\u0438 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u043e\u0432 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0441\u0442\u0440\u043e \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0434\u0430\u0436\u0435 \u043a\u043e\u0433\u0434\u0430 \u0432\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u043e\u0432 \u043d\u043e\u0432\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0432 \u0434\u0435\u043d\u044c. \u0420\u0430\u0441\u0445\u043e\u0434\u044b \u043d\u0430 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0442\u0430\u043a\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043c\u043e\u0433\u0443\u0442 \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0442\u044c 100 \u0442\u044b\u0441. \u0434\u043e\u043b\u043b\u0430\u0440\u043e\u0432 \u0421\u0428\u0410 \u0432 \u0433\u043e\u0434, \u0438 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0432\u0434\u0432\u043e\u0435 \u043c\u0435\u043d\u044c\u0448\u0435, \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f. \u0412 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u0438\u043d\u0441\u0442\u0430\u043b\u044f\u0446\u0438\u044f ClickHouse \u043e\u0442 \u042f\u043d\u0434\u0435\u043a\u0441 \u041c\u0435\u0442\u0440\u0438\u043a\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043b\u0430 10 \u0442\u0440\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u0437\u0430\u043f\u0438\u0441\u0435\u0439. \u041f\u043e\u043c\u0438\u043c\u043e \u042f\u043d\u0434\u0435\u043a\u0441\u0430, ClickHouse \u0442\u0430\u043a\u0436\u0435 \u0441\u043d\u0438\u0441\u043a\u0430\u043b\u0430 \u0443\u0441\u043f\u0435\u0445 \u0443 Bloomberg \u0438 Cloudflare.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-293382","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/293382","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=293382"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/293382\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=293382"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=293382"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=293382"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}