Groonga

Groongaのクエリーチューニングの方法

Groongaサポートサービスを担当している1人の須藤です。

Groongaのサポートサービスでは、お客さんから高速化したいクエリーとデータを提供してもらい、より高速に結果を返すようにクエリーをチューニングするという作業もしています。必要であればインデックスの追加・変更やスキーマの変更、Groongaの改良なども実施して高速化します。

クエリーチューニングは長年のカンで実施しているのではなくチューニングを支援するための手法を整備しながら実施しています。この記事では私達がやっているクエリーチューニングの方法をまとめます。ツール類はGroonga本体同様に自由なソフトウェアとして広く公開しているのでサポートサービスを契約していないGroongaユーザーでも同じ方法を使えます。

そういう情報は秘密にしてもっとサポートサービスを利用するように促すほうがいいんじゃないの?と考える人もいるかとは思いますが、クリアコードは情報を独占することで稼ぐのではなく情報を広く共有しながら稼ぎたいのでいいのです。

もっと読む

Mroongaでlock failedとなったときの復旧方法2021 - clearlockしてはいけない!

Mroongaの開発をしている須藤です。

2013年に書かれたgroonga/mroongaの.mrnファイルがlock failedとなった場合の復旧方法 - Y-Ken Studioという記事があるのですが、この記事に書かれているようにclearlockを使ってはいけません!

もっと読む

PostgreSQL Conference Japan 2020:PGroonga 運用技法 ~PGroonga の WAL を放置していませんか?~ #pgcon20j

2020年11月13日(金)にPostgreSQL Conference Japan 2020が開催されます。 私は、「PGroonga 運用技法 ~PGroonga の WAL を放置していませんか?~」という題名で、PGroongaのWALを使う上での注意点を紹介します。

もっと読む

Groongaのダンプから不具合の再現に必要なカラムのデータのみを抽出するには

Groongaのサポートをしていると、Groongaのデータベースのダンプを提供いただいて、不具合を再現させることが多いです。 その際、特定のカラムに問題があることがわかっている場合、問題のカラムだけをダンプから抽出できたほうが効率が良いです。

もっと読む

Groongaのウインドウ関数を使って特定範囲の値を集計する

データベースなどでまとまったデータを取り扱っていると、ある特定の範囲の値を集計したいことがあります。

もっと読む

Groongaである時間範囲のデータを集計する方法

月単位や日単位などある時間範囲で検索したい場面は多いです。 こんな時は月単位、日単位で日付情報を格納するカラムを作り、それを用いて検索したくなります。

もっと読む

GitHub Actionsを使ったGroongaのパッケージのインストール、テストの自動化

Groongaでは、これまでもGitHub Actionsを使ってパッケージの作成を自動化したり、テストの自動化を実施してきました。 いままで自動化してきたテストは、リポジトリーにpushされたソースコードに対してビルド、テストするものでした。 これらの自動化により、リリース前に初めて問題が発覚することが少なくなり、問題が発生した段階で対処を進めることができています。

もっと読む

Groongaの単語抽出演算子を使ったタグの付与

Groongaにはタグ検索という機能があります。

もっと読む

第28回 中国地方DB勉強会 in 岡山:Amazon RDS + Amazon EC2 + ロジカルレプリケーションを使った低コスト高速全文検索 #ChugokuDB

2020年1月25日(土)に第28回 中国地方DB勉強会 in 岡山が開催されました。 私は、昨年の2019年11月に行われた PostgreSQL Conference Japan 2019 の内容(「Amazon RDS + Amazon EC2 + ロジカルレプリケーションを使った低コスト高速全文検索」)を再演させていただきました。

もっと読む

GitHub Actionsを使ったパッケージ作成の自動化

2019年の11月にGitHub Actionsが正式にリリースされました。 GitHub ActionsはGitHubに組み込まれたCI/CD機能でpush等のGitHub上のイベントをトリガーに任意のアクションを実行できるものです。 GitHub ActionsではDockerが使用できるので、様々な環境上でテストの実行やビルドなどができます。

もっと読む