スマートスタイル TECH BLOG

Percona Live 2019 in Texas Austin 現地レポ(Session Day 1) – Side.A (1/3)

この記事は Percona Live 2019 in Texas Austin 現地レポ(Session Day 1) の1つ目です。

Opensource Column Store Databases: MariaDB ColumnStore vs. ClickHouse

OSSのDHW製品として有名なYandex社のClickhouseとMariaDB Columnstoreの比較を行うセッションでした。

一般的な行指向であるRDBMS(MySQL)の遅い理由として以下が挙げられていました。

  • 行指向である
    • 例えば2つのフィールドしか必要が無くても基本的には行に含まれるすべてのフィールドを読み込む
  • InnoDB のデフォルトのページサイズは16kなので、より多くのデータが必要なクエリではI/O回数が増え非効率
  • 基本的に1つの更新クエリに対しては1つのCPUしか使用しないため

Yandex Clickhouseとの対比として、以下が挙げられていました。

  • 接続方法
    • Clickhouseでは以下の方法がある
    • clickhouse-mysql-data-reader https://github.com/Altinity/clickhouse-mysql-data-reader
      • MySQLからClickhouseへのデータ同期ツール(レプリケーションスレーブのように動作)
    • Clickhouse native connector
      • Clickhouse内にMySQLテーブルを読み込むためのビューを作成して操作
    • ProxySQLを使用した接続
      • mysql clientからProxySQLを通してClickhouseへ接続
    • ColumnstoreはMariaDB互換なのでMySQL Clientから操作できる

データロードについては以下の比較がされていました

  • Columnstoreにおけるデータロード
    • 高速に動作する方法 = cpimport
    • 簡単な方法 = InnoDBテーブルをColumnstore上に作成してinsert .. select to Columnstoreテーブル
    • ColumnstoreではJOINはInnoDB/Columnstoreを混ぜても実行できる
  • Clickhouseにおけるデータロード
    • clickhouse-mysql-data-readerをスレーブのように動作させ、MySQL -> Clickhouseでレプリケーション
    • Clickhouse native connectorで作成したVIEWからINSERT * SELECT..

なおColumnstoreではMySQLからのレプリケーション機能は実装予定

UPDATE/DELETEについては以下の説明がありました

  • UPDATE/DELETEはカラムデータベースは遅い
  • single row のupdateで1msかかる
  • Clickhouseではalter table updateというSQLを実行

ダミーデータを使用したSELECTの実行速度比較については以下の説明がありました
比較的Clickhouseは高速です。

  • single row select
    • mysql(InnoDB) => 0.00sec
    • Columnstore => 0.03sec
    • Clickhouse => 0.02sec

その他range select等を実行したグラフが紹介されていましたが、単純なSELECT以外においてはClickhouseが高速に動作するという結果となっていました。

一方でClickhouseはマルチノードで動作する前提ではないため、物理的なリソース(メモリ)を大量に積む必要があり、MariaDB Columnstoreでは比較的少ないメモリのノードを複数台用意することで、個々のリソースを減らすことができるということでした。

また、MySQLとの互換性はMariaDB Serverが組み込まれているMariaDB Columnstoreが優位でした。

アプリケーションも含めた運用をMySQLベースでなくてもよい場合はClickhouse、すでにあるMySQLベースのアプリケーションからの利用が想定される場合はColumnstoreと使い分けができますね。

New Features in ProxySQL 2.0

ProxySQL 2.0がGAしたため、2.0で実装された新機能について紹介されていました。

AWS Aurora用テーブルが追加されており、AWSとの連携が強化されていました。
多岐に渡るため、以下箇条書きで記載します。

  • Query Cache機能の改善
    • キャッシュの手動パージの実装
    • 空のクエリ結果をキャッシュしないためのmysql_query_rules.cahe_empty_result列を追加
  • mysql-query_digests_track_hostnameの追加により、クエリログの取得クライアントを選択可能に
  • Gtid Casual Reads
    • GTIDから最も最新のデータを持つレプリカを判定してSELECTをルーティング
    • 現在はUbuntuのみに対応しているようです
  • galera native support
    • ProxySQL本体にmysql_galera_hostgroupsテーブルを追加し、Galera Cluster(or PXC)への接続が可能に
    • 追加の統計情報用テーブルの実装
  • systemd
    • Ubuntu18/Debian9ではスクリプトを同梱
    • CentOS/RHELでは未実装
  • DockerhubにProxySQL 2.0.4が追加された
  • Aurora support(mysql_aws_aurora_hostgroups)
    • 自動でレプリカの判断
    • 自動でレプリカの追加、削除
    • AZを意識したルーティング
    • MS単位でのレプリケーションラグの監視
    • replica_host_statusからメトリックの取得
    • mysql_aws_aurora_hostgroupの追加
  • Frontend SSL
  • LDAP
  • JSON Support
    • stats_mysql_processlist, stats_mysql_free_connectionsテーブルのextended_info列にJSON型を実装
    • JSON_EXTRACT関数の実装
  • AUDIT LOG (2.0.5)
    • 接続などのロギング
    • Adminの操作のロギング

MySQL Community Award

午前のセッション完了後、MySQL Community Awardが開催されました。

表彰者は以下の通りでした。

皆さんとてもうれしそうです!

いつの日かここに立てますように…


Percona
Return Top