CINXE.COM

データウェアハウス ClickHouse を使ってみた話。 | Basicinc Enjoy Hacking!

<!DOCTYPE html><html lang="ja" data-scope-path="layouts/application"><head prefix="og: http://ogp.me/ns# article: http://ogp.me/ns/article#"><link crossorigin="" href="https://www.google-analytics.com/analytics.js" rel="preconnect" /><link rel="preload" href="/fonts/noto-sans-jp-v24-japanese-regular.woff2" as="font" type="font/woff2" crossorigin="anonymous"><link rel="preload" href="/fonts/noto-sans-jp-v24-japanese-700.woff2" as="font" type="font/woff2" crossorigin="anonymous"><!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=UA-25666851-3"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-25666851-3'); </script> <link rel="stylesheet" media="all" href="/assets/ress-d1ba3a251927ab1f2bcc841c9a810109355bcb4260a522a0f76452fdc2fe6095.css" /><link rel="stylesheet" media="all" href="/assets/scopes/layouts/application-dda4ec688c139c8f29c39a2a795bcf4af04c4326643549a37f5d8843fffaebab.css" /><link rel="stylesheet" media="all" href="/assets/scopes/articles/show-37905516c06229c8fde10714e660fc48bc7b6ce7881755707db8b0327ceb5bf1.css" /><link rel="stylesheet" media="all" href="/assets/scopes/partials/_viewer-3a78a10250bb498047a06b71271b62ea949e304d25b9781c4450cf998aa2640c.css" /><link rel="stylesheet" media="all" href="/assets/scopes/layouts/_header-db87b54171cc020758ab7d1494677f8f6c2e9c93b453e896af82e4814eaacc7c.css" /><link rel="stylesheet" media="all" href="/assets/scopes/layouts/_breadcrumbs-744a099ab0b9eb5c4bd45215617e267c7d7c404ddddce8810eead5335512e637.css" /><link rel="stylesheet" media="all" href="/assets/scopes/layouts/_footer-a06961717440c6d0183c582c7f21768011f334d368f51b614eabc87bb17b3bbf.css" /><script src="/packs/application-02365dbc4dc28919eee1.js" defer="defer"></script><link href="/icon.png" rel="icon" type="image/png" /><link href="/apple-touch-icon.png" rel="apple-touch-icon" type="image/png" /><link href="/feed" rel="alternate" title="RSS2.0" type="application/rss+xml" /><title>データウェアハウス ClickHouse を使ってみた話。 | Basicinc Enjoy Hacking!</title><meta name="csrf-param" content="authenticity_token" /> <meta name="csrf-token" content="a6Cg0zzD00LhZ1s3Hhi/VuhuL6BzZs3qrUDNW1ew3WP5/RVYK1JUxP7zqhHsT72M9FMIU3zL7aENlrKMdRxHbQ==" /><meta content="width=device-width,initial-scale=1" name="viewport" /><meta content="データウェアハウス ClickHouse を使ってみた話。 | Basicinc Enjoy Hacking!" property="og:title" /><meta content="article" property="og:type" /><meta content="2018-10-11T17:00:38+09:00" property="article:published_time" /><meta content="taro-sakura" property="article:author" /><meta content="Technology" property="article:section" /><meta content="https://tech.basicinc.jp/articles/137" property="og:url" /><meta content="https://tech.basicinc.jp/assets/default_eyecatch-9e0d94e7defd5e124532d0b790a8f8cccfdffa0aed4581afa5f932cfec0b39a2.png" property="og:image" /><meta content="image/png" property="og:image:type" /><meta content="1200" property="og:image:width" /><meta content="630" property="og:image:height" /><meta content="こんにちは、ベーシックのDevOpsエンジニア 渡辺です。 主にインフラ保守運用や新しい技術の検証、データ解析周りなどをやっています。 今回はアクセスログなど時系列のデータを保存、集計するのに便利なデータウェアハウス ClickHouse をご紹介します。 https://..." property="og:description" /><meta content="ja_JP" property="og:locale" /><meta content="summary" name="twitter:card" /></head><body><header data-scope-path="layouts/_header"><div class="header-contents"><a class="root-link" href="/"><svg class="site-logo"><use xlink:href="/assets/icons-5bbe775037b55281ef0bc50d30a51f69c7c3914d399c7107e37f0702d98ae8a2.svg#logo"></use></svg><div class="site-title">Enjoy Hacking!</div></a><div class="site-desc">Basicinc エンジニアブログ</div></div></header><nav data-scope-path="layouts/_breadcrumbs"><ul class="breadcrumbs" itemscope="itemscope" itemtype="https://schema.org/BreadcrumbList"><span class="pretext">% cat </span> <li itemprop="itemListElement" itemscope="itemscope" itemtype="https://schema.org/ListItem"><a itemprop="item" href="/"><span itemprop="name">~</span></a><meta itemprop="position" content="1" /></li>/<li class="current" itemprop="itemListElement" itemscope="itemscope" itemtype="https://schema.org/ListItem"><span itemprop="name">データウェアハウスClickHouseを使ってみた話。.md</span><meta itemprop="item" content="https://tech.basicinc.jp/articles/137" /><meta itemprop="position" content="2" /></li></ul></nav><div data-scope-path="articles/show"><article class="article"><h1 class="article-title">データウェアハウス ClickHouse を使ってみた話。</h1><div class="article-desc"><a class="article-author" href="/authors/18"><img class="article-author-avatar" src="https://tech.basicinc.jp/uploads/bc5483fafcd2e67153514e97096deef3.png" /><span class="article-author-name">taro-sakura</span></a><div class="article-date-info"><time class="article-posted-date">Posted 2018-10-11</time></div></div><div class="article-body"><div data-scope-path="partials/_viewer"><p>こんにちは、ベーシックの<a href="https://www.facebook.com/Nobuo.Watanabe.Y">DevOpsエンジニア 渡辺</a>です。<br> 主にインフラ保守運用や新しい技術の検証、データ解析周りなどをやっています。</p> <p>今回はアクセスログなど時系列のデータを保存、集計するのに便利なデータウェアハウス <strong>ClickHouse</strong> をご紹介します。</p> <p><a href="https://clickhouse.yandex/">https://clickhouse.yandex/</a></p> <h1>ClickHouseとは?</h1> <p>ClickHouseとは、SQLクエリを使用してリアルタイムで分析データレポートを生成できるオープンソースの列指向データベース管理システムです。<br> 時系列データの保存、集計に特化していてクエリ検索パフォーマンスがとても優れています。<br> データの更新(UPDATE)ができなかったり削除(DELETE)に制約があったりと通常のRDBMSでできることがClickHouseではできないこともありますが、ログを登録して集計することだけと考えればとてつもなく良いパフォーマンスをもたらしてくれます。</p> <h1>ClickHouseの特徴</h1> <h2>ポジティブ</h2> <ul> <li>データ検索(Select)速度がめっちゃ速い</li> <li>データ集計(GroupByなど)がめっちゃ速い</li> <li>大量データの一括登録(Insert)がめっちゃ速い</li> <li>データサイズがめっちゃ小さい(HDDに優しい)</li> </ul> <h2>ネガティブ</h2> <ul> <li>個別データ登録(Insert)が若干遅い</li> <li>データ更新(Update)ができない</li> <li>データ削除(Delete)ができない(データパーティションを削除することで特定月のデータを削除するなどのようなことはできる。)</li> <li>JOINができない</li> </ul> <p><a href="https://clickhouse.yandex/docs/en/introduction/performance/">※ClickHouseのパフォーマンスに関して(公式サイト)</a></p> <h1>ClickHouseを試してみる</h1> <h2>インストール</h2> <p><a href="https://clickhouse.yandex/#quick-start">https://clickhouse.yandex/#quick-start</a><br> インストール自体はだいたい3分程度で終わります。</p> <pre><code>$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv E0C56BD4 # optional $ echo "deb http://repo.yandex.ru/clickhouse/deb/stable/ main/" | sudo tee /etc/apt/sources.list.d/clickhouse.list $ sudo apt-get update $ sudo apt-get install -y clickhouse-server clickhouse-client $ sudo service clickhouse-server start $ clickhouse-client </code></pre> <h2>使ってみる</h2> <p><strong>ClickHouseはMySQLと親和性が高く</strong>、SQLクエリ自体も比較的似ています。<br> DATE関連の関数は相違がありますが、だいたいのクエリはMySQLのものをそのまま使えたりします。<br> 2018年1月のアップデートでClickHouseからMySQLへ直接クエリを投げられるようにもなりました。</p> <p><strong>テーブルのタイプの概念だけはMySQLと違う</strong>ので<strong>CREATE文を投げる際には注意が必要</strong>です。<br> こちらはアクセスログなどを取り込むテーブルの場合に有効なテーブルタイプを解説している記事ですので参考まで。<br> <a href="https://qiita.com/taro_sakura/items/aa83bc0364d1c4edd68e">ClickHouseの「MergeTree」と「Summing MergeTree」を試してみた。</a></p> <p>公式サイトでチュートリアルが準備されていますので是非試してみてください。<br> <a href="https://clickhouse.yandex/tutorial.html">https://clickhouse.yandex/tutorial.html</a></p> <h1>ベーシックでのClickHouse活用事例</h1> <p>ベーシックではWEBサーバのアクセスログの保存と集計という部分で利用しています。<br> WEBサーバのアクセスログはもちろん、WEBページ内のイベントログも保存し、それらを集計しユーザの行動パターンを解析しています。</p> <p>イベントログなどは<strong>1日あたり150万レコードほど</strong>あったりとなかなかのボリュームがあり、通常のRDBMSではリアルタイム集計は難しいと思います。<br> 大量のデータであるがためにレポートを出す際には集計のために時間をかけてバッチ処理したりする必要があります。<br> それをClickHouseを利用することで<strong>リアルタイムで解析できる</strong>ようになりました。</p> <p>その恩恵として、ベーシックにて利用しているBIツール(<a href="https://redash.io/integrations/">Re:dash</a>)からでも大量のデータに対し、リアルタイムでアクセスログを解析することができるようになり、これまでは都度エンジニアへ解析データの出力を依頼していたところを、マーケター自身がいつでも簡単にデータ解析できるようになりました。</p> <h1>ClickHouseと他データウェアハウスなどとの比較検証</h1> <p><a href="https://www.altinity.com/blog/2017/6/20/clickhouse-vs-redshift">ClickHouse vs Amazon RedShift Benchmark</a><br> <a href="https://www.altinity.com/blog/2017/7/3/clickhouse-vs-redshift-2">ClickHouse vs Amazon RedShift Benchmark #2</a><br> <a href="https://www.percona.com/blog/2017/03/17/column-store-database-benchmarks-mariadb-columnstore-vs-clickhouse-vs-apache-spark/">Column Store Database Benchmarks: MariaDB ColumnStore vs. Clickhouse vs. Apache Spark</a></p> <p>手前味噌ですが、弊社でMySQLとパフォーマンスを比較検証した結果です。<br> 検証結果としてはとても満足できるものとなり、すぐにClickHouseを導入し運用することを決めました。<br> <a href="https://qiita.com/taro_sakura/items/d5a4d376012e4f2c9ed5">ClickHouseとMySQLのベンチマークをとってみた。</a></p> <h1>おわりに</h1> <p>ClickHouseはBIツールの<a href="https://redash.io/integrations/">Re:dash</a>のデータソースのひとつとしても登録されています。<br> まだまだ日本語での情報も少なく、導入事例等も見かけることがほとんどありません。<br> しかしデータウェアハウスとしては簡単に用意することができ、大量のデータをパフォーマンス良く解析でき、そしてローコストで運用できるのでとても便利なデータベースです。<br> もしビッグデータの取り扱いに悩んだら一度試してみることをオススメします!</p></div></div><div class="article-sns-share-buttons"><a rel="nofollow" target="_blank" class="pocket-share sns-share-button" href="http://getpocket.com/edit?title=%E3%83%87%E3%83%BC%E3%82%BF%E3%82%A6%E3%82%A7%E3%82%A2%E3%83%8F%E3%82%A6%E3%82%B9+ClickHouse+%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%81%9F%E8%A9%B1%E3%80%82+by+taro-sakura+%7C+Basicinc+Enjoy+Hacking%21&amp;url=https%3A%2F%2Ftech.basicinc.jp%2Farticles%2F137"><svg class="sns-icon pocket-icon"><use xlink:href="/assets/icons-5bbe775037b55281ef0bc50d30a51f69c7c3914d399c7107e37f0702d98ae8a2.svg#pocket"></use></svg></a><a rel="nofollow" target="_blank" class="hatena-share sns-share-button" href="http://b.hatena.ne.jp/add?mode=confirm&amp;title=%E3%83%87%E3%83%BC%E3%82%BF%E3%82%A6%E3%82%A7%E3%82%A2%E3%83%8F%E3%82%A6%E3%82%B9+ClickHouse+%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%81%9F%E8%A9%B1%E3%80%82+by+taro-sakura+%7C+Basicinc+Enjoy+Hacking%21&amp;url=https%3A%2F%2Ftech.basicinc.jp%2Farticles%2F137"><svg class="sns-icon hatena-icon"><use xlink:href="/assets/icons-5bbe775037b55281ef0bc50d30a51f69c7c3914d399c7107e37f0702d98ae8a2.svg#hatena"></use></svg></a><a rel="nofollow" target="_blank" class="twitter-share sns-share-button" href="https://twitter.com/share?text=%E3%83%87%E3%83%BC%E3%82%BF%E3%82%A6%E3%82%A7%E3%82%A2%E3%83%8F%E3%82%A6%E3%82%B9+ClickHouse+%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%81%9F%E8%A9%B1%E3%80%82+by+taro-sakura+%7C+Basicinc+Enjoy+Hacking%21&amp;url=https%3A%2F%2Ftech.basicinc.jp%2Farticles%2F137"><svg class="sns-icon twitter-icon"><use xlink:href="/assets/icons-5bbe775037b55281ef0bc50d30a51f69c7c3914d399c7107e37f0702d98ae8a2.svg#twitter"></use></svg></a><a rel="nofollow" target="_blank" class="facebook-share sns-share-button" href="http://www.facebook.com/share.php?u=https%3A%2F%2Ftech.basicinc.jp%2Farticles%2F137"><svg class="sns-icon facebook-icon"><use xlink:href="/assets/icons-5bbe775037b55281ef0bc50d30a51f69c7c3914d399c7107e37f0702d98ae8a2.svg#facebook"></use></svg></a></div></article></div><footer data-scope-path="layouts/_footer"><div class="footer-contents"><a class="root-link" href="/"><svg class="site-logo"><use xlink:href="/assets/icons-5bbe775037b55281ef0bc50d30a51f69c7c3914d399c7107e37f0702d98ae8a2.svg#logo"></use></svg><div class="site-title">Enjoy Hacking!</div></a><ul class="link-list"><li class="link-list-item"><a class="link" href="https://basicinc.jp/" rel="noopener" target="_blank">株式会社ベーシック</a></li><li class="link-list-item"><a class="link" href="https://basicinc.jp/enjoy-hacking" rel="noopener" target="_blank">エンジニア募集</a></li><li class="link-list-item"><a class="link" href="https://qiita.com/organizations/basicinc" rel="noopener" target="_blank">Qiita</a></li><li class="link-list-item"><a class="link" href="https://www.wantedly.com/companies/basicinc/projects" rel="noopener" target="_blank">Wantedly</a></li></ul></div></footer></body></html>

Pages: 1 2 3 4 5 6 7 8 9 10