Groonga

PGroongaの並列インデックス構築の並列度を最大にする方法

PGroongaのメンテナンスもしている堀本です。

PGroongaは4.0.0からPostgreSQL 17以降を使っている場合に限り、複数のCPUコアを活用してインデックスの構築を並列で実行できます。 (PostgreSQL 17より前のバージョンでは動作しないので注意してください。) 並列に実行するため、インデックス構築速度の高速化が期待できますが、場合によっては思ったほど高速にならない可能性もあります。

今回は、PGroonga 4.0.0を使ってもあまりインデックス構築が高速にならない人向けの記事です。

もっと読む

2025年のGroonga族の肉の日メジャーリリース!

Groongaの開発に参加している須藤です。今年も年に一度の肉の日(2月9日のこと)が来ましたね!例年通り、GroongaとMroongaはメジャーバージョンアップしました!今年はついでにPGroongaもメジャーバージョンアップしました!この一年でどのくらいGroonga・Mroonga・PGroongaがよくなったかを紹介します。

ちなみに、世間ではメジャーバージョンアップをすると互換性がなくなってアップグレードが大変!というソフトウェアが多いですが、Groonga・Mroongaは非互換なしなのでいつもどおり安心してアップグレードできます!PGroongaは非互換がありますが、普通は関係のない非互換なのでいつもどおり安心してアップグレードできます!そこらへんは後述します。

もっと読む

Groonga: パトリシアトライのキーをデフラグのバグ修正

Groongaのパトリシアトライについてちょっとわかってきたつもりの阿部です。

ちょっと前に意気揚々とパトリシアトライのキーをデフラグする機能を追加したことを紹介したのですが、その機能にバグがありました。かなしい。

本記事ではどのようなバグがあってどのように修正したのかを紹介します。

バグの説明をするためにパトリシアトライのレコード削除やレコードの再利用について知っておく必要があるので、はじめにその辺の説明をします。

前の記事の続編な内容なので、前回の記事を読んでから本記事を読んでもらえるとうれしいです。)

もっと読む

Groongaの並列オフラインインデックス構築

Groongaの開発に参加している須藤です。14.1.3で並列オフラインインデックス構築機能を実装したので実装内容を紹介します。

もっと読む

PGroongaの演算子に新しいデータ型のサポートを追加する方法

最近、PGroongaの演算子を改良した堀本です。 今回、正規表現を用いた検索で使う演算子に新しいデータ型のサポートを追加したので、どうやって追加したかを紹介します。

もっと読む

Groonga: パトリシアトライのキーをデフラグ

Groongaの開発をがんばっている阿部です。

最近はパトリシアトライのキーをデフラグする機能を実装したのでその機能について紹介します。

(わかりやすさを優先するため説明を割愛している部分や厳密には正確ではない説明も含まれますがご了承ください。)

もっと読む

index_column_diffコマンドのインデックス破損の誤検知を解消

最近、Groongaindex_column_diffコマンドの誤検知を解消した児玉です。 index_column_diffはインデックスの破損を検出するコマンドですが、 このコマンドが誤検知を起こすケースがあったので解消しました。

この記事では、index_column_diffの詳細と誤検知の原因およびその解消方法を紹介します。

ここから先は、Groongaのインデックスの仕組みを理解していることを前提として進めていきます。 インデックスの仕組みを知らないよという方は、次の記事を読んだ後に戻ってくると理解しやすいと思います。

もっと読む

Mroongaでgrn_p()を利用する方法

最近、Mroongaの開発をしている児玉です。

Mroongaを開発する中で特定のオブジェクトの中身をデバッグしたい状況になりました。 そんな時に、便利なのがGroongaのオブジェクトの状態を標準出力に表示するgrn_p()です。

しかし、grn_p()を使ってターミナル上にオブジェクトの状態を表示しようとしたところ、 うまく表示されませんでした。どうやら標準出力が別の場所に向けられているようです。

今回この問題を解決し、grn_p()で快適にMroongaをデバッグできるようになったので、 その方法を紹介します!

この記事が、Mroongaのデバッグをしたい方の参考になれば幸いです。 MroongaはMySQLやMariaDBと組み合わせて利用できますが、今回はMariaDBを例に説明します。 (Mroongaに限らず、標準出力先がどこか分からずに困っている方にも役立つかもしれません。)

もっと読む

PostgreSQLがPGroongaのインデックスを使ってくれないときのチェックポイント

こんにちは、PGroongaの開発やサポートをしている堀本です。

この記事では、PGroongaのインデックスを設定しているにも関わらず、 シーケンシャルサーチで検索が実行されてしまう時に確認すべきポイントを紹介します。

PGroongaはPostgreSQLで高速に全文検索するための拡張ですが、 PGroongaのインデックスを設定しているのに、検索が速くならないことがあります。

色々な原因が考えられるのですが、よくあるケースとしては PostgreSQLがPGroongaのインデックスを使用せず、シーケンシャルサーチで検索が実行されていているケースです。

以下では、なぜシーケンシャルサーチが選択されるのか、PGroongaのインデックスを選択して 検索を実行するにはどうしたらいいかを解説します。

最初に、シーケンシャルサーチで検索が実行されているかどうかを確認します。 その後に、シーケンシャルサーチで検索が実行される原因とその解決方法を4つ記載します。

もっと読む

GroongaでANN検索(HNSWアルゴリズム)への道2: USearchに入門と調査

USearchに入門中の阿部です。

入門することにした経緯などはUSearchに入門する準備をご覧ください。

ということで、前回に入門する準備をしたので今回は入門したいと思います。

記事に登場するコード例はmain-devブランチの113a7862f80bf2eb347c559da8487c4be05a5cc4時点のコードを利用しています。

もっと読む