Skip to content

Latest commit

 

History

History
327 lines (200 loc) · 7.71 KB

File metadata and controls

327 lines (200 loc) · 7.71 KB

はじめてのDroonga

subtitle : Droongaの簡単な紹介と、 Groongaからの移行手順

author : 結城洋志

institution : 株式会社クリアコード

theme : groonga

要旨

「自作のアプリケーションを GroongaからDroongaへ 今すぐ移行できるのか?」 にお答えします

気になる点、疑問点

  • 気になる事があったら:
    • メモして後から質問
    • その場で質問してもOK
  • どこが気になったかを 教えてください!

アジェンダ

  • Droongaとは?
    • Droongaの何が嬉しい?
    • Droongaの何が嬉しくない?
  • デモ

Groongaの困った所

  • 分散が流行ってる
  • Groongaは分散処理に 対応していない

Droongaとは

Distributed Groonga =分散Groonga

サーバ構成の違い

{:relative_height='95'}

Groonga互換

{:relative_height='95'}

Groonga互換

  • 今までと同じ感覚で使える
  • Groongaベースの 既存のアプリケーションを 最小の工数で分散対応できる

データベースを分散

  • レプリケーション
    • 現在の開発はここに注力
  • パーティショニング
    • 現在は部分的に対応(これから改善)

レプリケーション?

{:relative_width="35" align="left" relative_margin_left="-20"}

{:relative_width="45" align="right"}

パーティショニング?

{:relative_width="40" align="left" relative_margin_left="-20"}

{:relative_width="50" align="right"}

Groonga→Droonga

今現在得られるメリット

  • レプリケーションできる ようになる
  • ノードを簡単に追加・削除できる

レプリケーション無しだと(1)

{:relative_height='90'}

レプリケーション無しだと(1)

{:relative_height='90'}

レプリケーション無しだと(1)

{:relative_height='90'}

レプリケーション無しだと(2)

{:relative_height='90'}

レプリケーション無しだと(2)

{:relative_height='90'}

レプリケーション有りだと(1)

{:relative_height='90'}

レプリケーション有りだと(1)

{:relative_height='90'}

レプリケーション有りだと(1)

{:relative_height='90'}

レプリケーション有りだと(1)

{:relative_height='90'}

レプリケーション有りだと(2)

{:relative_height='90'}

レプリケーション有りだと(2)

{:relative_height='90'}

クラスタ構成の変更

付属のコマンドラインユーティリティを使用

  • droonga-engine-join
  • droonga-engine-unjoin

ノードの追加

% droonga-engine-join --host=cccc --replica-source-host=bbbb

{:relative_height='100'}

ノードの切り離し

% droonga-engine-unjoin --host=cccc

{:relative_height='100'}

パーティショニング

{:relative_height='90'}

パーティショニング

{:relative_height='90'}

パーティショニング

{:relative_height='90'}

パーティショニング

{:relative_height='90'}

Groonga→Droonga

今現在あるデメリット

  • レイテンシーが低下する
    • 処理のオーバーヘッドがある
  • Groonga非互換の部分が まだある

Groongaとの性能比較

  • 検索対象: Wikipedia日本語版の全ページ
  • 検索クエリ: よく見られているページのタイトル上位1000件
  • キャッシュヒット率: 50%

ベンチマーク取得手順

Groongaとの性能比較

(ここにグラフ)

Groongaとの性能比較

  • Groonga
    • サーバ1台の処理能力では有利
    • 負荷が増えた時に スループットが頭打ちになる
  • Droonga
    • サーバ1台の処理能力では不利
    • 負荷が増えてもノードを増やして スループットの上限を増やせる

オーバーヘッド

  • オーバーヘッドがある(レイテンシーが落ちる)
  • Groongaで単一サーバでさばききれる程度のリクエストに対しては、性能面でのメリットはない。
  • 耐障害性の高さ、アクセスの増加への対応のしやすさとのトレードオフ。

現時点での互換性(概要)

  • スキーマ変更系
  • load, delete
  • select

それ以外は未対応(今後の課題)

現時点での互換性(詳細)

table操作系

  • table_create
  • table_remove
  • table_list

現時点での互換性(詳細)

column操作系

  • column_create
  • column_remove
  • column_rename
  • column_list

現時点での互換性(詳細)

データ更新系

  • load
    • ただし、以下は未対応
      • --ifexists
      • --input_type
  • delete

現時点での互換性(詳細)

検索系

  • select
    • ただし、以下は未対応
      • --scorer
      • --cache
      • --match_escalation_threshold
      • --query_expansion
      • --query_flags
      • --query_expander
      • --adjuster

未対応の機能

  • GQTPは喋れない
  • ダッシュボードがまだ無い(Groongaの管理画面はちょっと動く)
  • サジェストもまだ対応していない
  • 監視機能もまだできていない

とはいえ

{:relative_height="90"}

デモ

  • Groongaベースの アプリケーションを作成
  • バックエンドをDroongaに移行
    • Droongaクラスタを構築
    • データを移行
    • アプリケーションの接続先変更

改善にご協力を!

様々な条件でのベンチマーク結果

改善にご協力を!

実際のWebアプリケーションからの 使い勝手レポート

  • 互換性向上の作業の 優先順位付けの参考にしたい

改善にご協力を!

フィードバックは droonga-engineのissue tracker もしくは groonga-dev ML までお寄せ下さい

参考:Droonga以外の分散Groonga