Engineer's Way

主にソフトウェア関連について色々書くブログです。

Amazon RDSのMariaDBにMroongaが指定できるか試してみた

 

Amazon RDSをMariaDBとして使っているとき、全文検索エンジンのMroongaが
使えるかどうか気になったので調べて見た。

とりあえずEC2からRDSにログインしてshow engines;を実行しても
「Mroonga」とは出てこないけど、実際には「create table」で指定してもエラーにはならない。 ので、使えることは使える模様。

mysql> create table test(col text, fulltext(col)) engine=Mroonga default charset=utf8;
Query OK, 0 rows affected, 2 warnings (0.08 sec)

mysql> insert into test(col) values('あいうえお かきくけこ’);
Query OK, 1 row affected (0.00 sec)

mysql> select * from test5 where match(col) against('あ*' in boolean mode);
+---------------------------------+
| col                             |
+---------------------------------+
| あいうえお かきくけこ                 |
+---------------------------------+
1 rows in set (0.01 sec)

mysql> select * from test where match(col) against('か*' in boolean mode);
+---------------------------------+
| col                             |
+---------------------------------+
| あいうえお かきくけこ                 |
+---------------------------------+
1 rows in set (0.01 sec)

(2018/5/24追記) Twitterでご指摘頂いたので追加調査してみたところ、確かにエラーにはならないものの、Mroongaが使えている訳でもありませんでした。
MariaDB 10.0.17にて確認。

mysql> create table test(col text, fulltext(col)) engine=Mroonga default charset=utf8;
Query OK, 0 rows affected, 2 warnings (0.09 sec)

mysql> show warnings;
+---------+------+----------------------------------------------+
| Level   | Code | Message                                      |
+---------+------+----------------------------------------------+
| Warning | 1286 | Unknown storage engine 'Mroonga'             |
| Warning | 1266 | Using storage engine InnoDB for table 'test' |
+---------+------+----------------------------------------------+
2 rows in set (0.00 sec)


mysql> use information_schema;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select table_schema, table_name, engine from tables where table_name = 'test';
+--------------+------------+--------+
| table_schema | table_name | engine |
+--------------+------------+--------+
| mroonga_test | test       | InnoDB |
+--------------+------------+--------+
1 row in set (0.00 sec)

という訳で、実際にはデフォルトのInnoDBが使われることになります。

公式のドキュメントにも

他のストレージエンジンは、現在 MariaDB 用の Amazon RDS ではサポートされていません。

と書かれていますね。

Amazon RDS の MariaDB - Amazon Relational Database Service

ちゃんとWarningメッセージは読まねば...