2020-01-25 の第28回 中国地方DB勉強会 in 岡山 に参加してきました。
※シリアルナンバーが28まで伸びてる地方IT勉強会ってすごい
最後のセッションはクリアコード 堀本さんの「Amazon RDS + Amazon EC2 + ロジカルレプリケーションを使った低コスト高速全文検索」
自分の担当productはAurora MySQLなので、「MySQL+mroongaでもこの話は成立するんでしょうか」と質問しました。
「MySQLのリプリケーションがPostgreSQLロジカルレプリケーションと同様に機能拡張差があるサーバ間でできるなら、いけそうに思います。実績があるかどうか今この場ではわかりません」
ドキュメントベースで調べてみました。
Aurora から EC2 MySQLへレプリケーション
Aurora と MySQL との間、または Aurora と別の Aurora DB クラスターとの間のレプリケーション
MySQL と互換性があるため、MySQL データベースと Amazon Aurora MySQL DB クラスターとの間のレプリケーションを設定できます。
いいぞ。Aurora と MySQL は物理層には互換がありませんから「ロジカル」なはずですよね。
MySQL のバージョン 5.5 以降を実行することをお勧めします。
互換バージョン揃えなくても大丈夫っぽいし
Amazon RDS MySQL DB インスタンス(Amazon RDS の外部 MySQL データベース)または別の Aurora MySQL DB クラスターにレプリケートできます。
RDSじゃない、外部のMySQLにも言及あります。第1関門クリア
MySQLレプリケーションはテーブル単位でもできるか
全文検索の対象にしたいのはデータベース全体ではなく一部になるはず。
MySQLリファレンスマニュアルの テーブルレベルレプリケーションオプションの評価
--replicate-ignore-table または --replicate-wild-ignore-table オプション
ありますね。 --replicate-ignore-db
も当然あると。第2関門クリア
Mroonga と PGroonga は同等機能か
とくにスライドのPGroongaで注目したところ
- SQL CREATE INDEX で全文検索index作成
- SQL INSERT で全文検索登録
- SQL WHERE などで使える全文検索演算子
- SQL LIKE で全文検索index活用
- 読みがな検索
- 異体字同一視
Mroonga v9.11 documentation » 4. チュートリアル » 4.4.2. 全文検索の利用方法
検索演算子はなくて、検索構文がちょっと違うのかな。
Mroonga v9.11 documentation » 5. リファレンス » 5.2. SQL commands
LIKE
の言及も無い。
でも、大体いけそうな感じ。
FULLTEXT INDEX (content) COMMENT 'tokenizer "TokenMecab"'
Mecabも使っているので、読みがな検索、異体字同一視もいけてそう。第3関門クリア
他の Tokenizer として Trigram なんかはあって差し替え可能な設計になってるけれど、"sudachi"はまだ無さそう。
結論
堀本さんのRDS PostgreSQL + EC2 PostgreSQL+PGroonga の構成は Aurora MySQL とMroongaでも試してみる価値あり。