ククログ(6)
Groonga用のMariaDBのutf8mb4_uca1400照合順序互換ノーマライザー
Mroongaの開発をしている須藤です。MroongaはMySQL/MariaDB/Percona Serverからいい感じにGroongaを使えるようにするストレージエンジンです。Groongaは全文検索エンジンなので、MySQL/MariaDB/Percona Serverだけで(ゼロETLで!っていうとナウいんでしょ!?)Elasticsearchとかなしにいい感じに高速高機能全文検索機能を実現できます。
そんなMroongaは10年くらい前からMariaDBにバンドルされています。MySQL・MariaDB作者のMontyさんがなんかの日本のイベントに来ていたときになんか話して「バンドルするか!」みたいな流れになったような気もするし、それとは別のところでなんやかんやしたような気もして、よく覚えていないのですが、バンドルされています。
なんだろう、思い出せないーと思ってインターネットを漁ってみたら、2014年のMyNA会で使った「MariaDBにバンドルされていないMroonga」になんか関連情報がありますね。歴史に興味がある人は眺めてみてね。
まぁ、そんなMroongaですが、MariaDBにバンドルされているMroongaの更新が大変で全然更新できていません。でも、それはまずいよねぇということでまた数年ぶりにチャレンジしています。で、今回はMroongaのコピーをMariaDBに入れるんじゃなくて、git submoduleでMroongaを入れようとしています。コピーだと、MariaDBが持っているMroongaの方にだけ最新MariaDBの対応が入って、本家のMroongaでは気づかずに「あれー新しいMariaDBでビルドできなくなってるー」みたいなことになるからです。
だいぶ前置きが長くなりましたが、MariaDBにバンドルするMroongaを更新するために、最新のMariaDBでも動くようにする作業をしています。
Termuxに新たにパッケージを追加する方法
本記事を書いている2025年3月、Google PixelでLinuxターミナルが動作するようになり、話題となりました。
今回は、従来からあるAndroid向けターミナルエミュレーターアプリであるTermuxに、それまで利用できなかったパッケージを新規で追加する方法について紹介します。
GroongaでApache Arrowフォーマットを使ってみるよ!
Apache Arrow東京ミートアップ2025に参加予定の阿部です。
GroongaはApache Arrowフォーマットでのデータロードと検索結果の取得に対応しています。 今回は実際にそれを使ってみる企画です。
Apache Arrowフォーマットのデータを作るところからやってみます。 次の流れで進めていきます。
- Apache Arrowフォーマットのデータを作る
- GroongaにApache Arrowフォーマットでデータをロードする
- Groongaで検索してApache Arrowフォーマットでデータを得る
Apache Arrow 20.0.0からAPT/Yumリポジトリーが変わるよ!
Apache Arrowの開発に参加している須藤です。そろそろApache Arrow 20.0.0がフィーチャーフリーズされて、4月の中旬から下旬くらいには20.0.0がリリースされます。そんな20.0.0で予定されている変更の1つであるAPT/Yumリポジトリーに関する変更を紹介します。
互換性があるように変更するのでいきなり動かなくなることはないはずですが、長い目で見ると変更に追従しておいて欲しい、といった変更になります。
RubyKaigi 2025 3日目にアンドパッドさんとコード懇親会を開催するよ! #rubykaigi #codeparty
RubyKaigi 2025の3日目の夜にアンドパッドさんが開催するコード懇親会のお手伝いをする須藤です。
2025年3月19日の10:00から参加登録できるので、「コードで懇親?楽しそう!」と思うRubyKaigi 2025参加者は登録してね。
Microsoft Office製品のファイル内の文字列を検索、置換する
OfficeStringReplacerというMicrosoft Office 製品1のファイル内の文字列を検索・置換するツールを開発した橋田です。
Office文書に含まれる文字列の検索、置換処理を素直に実装するとものすごく時間がかかりますが、OfficeStringReplacerでは現実的な時間に収まるように工夫をしています。 この記事ではその工夫の詳細について解説します。
-
Microsoft Office、Access、 Excel、 PowerPoint、 Word は、マイクロソフト コーポレーションの商標です。 ↩
Roaring bitmapsでビットより大きい情報を表現する方法
Groongaの結果セットにRoaring bitmapsを使えないか検討している須藤です。
以前、ClickHouseみたいにポスティングリストにRoaring bitmapsを使えないか検証しましたが、既存のPForDeltaの方がよかったのでやめました。しかし、結果セットには使えるかも?とは思っていました。ただ、Groongaの結果セットは「ヒットしたレコードはどれか」というビットで表現できる情報だけではなく、「ヒットしてレコードはどれで、それらのスコアはそれぞれいくつか」という「ヒットしたか」(ビットで表現できる)+「スコア」(64bit浮動小数点数で、ビットでは表現できない)というビットでは表現できない情報が必要です。そのため、使えるかも?とは思いつつ、じゃあどうやって?がわからずにそのままになっていました。
この間、なんとなくまたどうにかできないか調べてみたら、Roaring bitmapsのGo実装にはそれを実現する方法が含まれていることを見つけたので紹介します。まだGroongaでは検証していないので、Groongaで使いものになるかどうかはわかりません。
Gandivaが使っているLLVMのJIT機能をMCJITからORCv2にしたらシンボルが見つからないエラーになっていたけどLLVM 18.1で直った
Apache Arrowの開発に参加している須藤です。LLVMは詳しくないし、LLVMのどのコミットで直ったとかも調べていないし、私はレビューとか調査をしていただけで実装していないとかなんですが、最近、数年越しのGandivaの問題が直ったので雰囲気で紹介します。
Apache Arrowフォーマットはどのようにクエリー結果の転送を高速にしているのか
Apache Arrowの開発に参加している須藤です。先月、Apache Arrowの公式ブログにHow the Apache Arrow Format Accelerates Query Result TransferというApache Arrowフォーマットを使うとなぜクエリー結果の転送が高速になるのかを説明した記事が投稿されました。すごくよくまとまっている内容で、今後、何度も参照したくなりそうでした。ということで、Apache Arrowの公式ブログに翻訳記事を追加しておきました。昨今の機械翻訳は精度がかなり上がっているので人手の翻訳がなくても読みたい人は読む気はしますが、検索したときに見つかりやすくなるかもなぁと思ってやっておきました。
詳細はこの翻訳記事を読んでもらうとして、ここでは簡単に概要を紹介しておきます。