SlideShare a Scribd company logo

MySQL 8.0でMroonga

MySQL 8.0でMroongaを使うとこんなにうれしい!

1 of 58
Download to read offline
MySQL 8.0でMroonga Powered by Rabbit 2.2.2
MySQL 8.0で
Mroonga
須藤功平 クリアコード
MyNA会 2018年7月
2018-07-23
MySQL 8.0でMroonga Powered by Rabbit 2.2.2
Mroonga
MySQLの
ストレージ
エンジン
MySQL 8.0でMroonga Powered by Rabbit 2.2.2
ストレージエンジン
C++で実装
MySQLのハンドラーAPIを使う
ハンドラーAPIっていう名前なの?
MySQL 8.0でMroonga Powered by Rabbit 2.2.2
ハンドラーAPI
すごくよく変わる
メジャーバージョンアップ
絶対変わる
MyNAバージョンアップ
たまに変わる
MySQL 8.0でMroonga Powered by Rabbit 2.2.2
MySQL 8.0対応
ビルドエラー修正
API変更に対応
1.
新機能対応
新COLLATION対応とか
2.
テストをパスするようにする
ビルドができても期待通りに動くとは限らない
3.
MySQL 8.0でMroonga Powered by Rabbit 2.2.2
制約
対応MySQL族で
Mroongaのテストを
すべてパスし続ける

Recommended

MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システムMySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システムKouhei Sutou
 
MariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システムMariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システムKouhei Sutou
 
Mroonga・PGroonga導入方法
Mroonga・PGroonga導入方法Mroonga・PGroonga導入方法
Mroonga・PGroonga導入方法Kouhei Sutou
 
PGroonga 2 - PostgreSQLでの全文検索の決定版
PGroonga 2 - PostgreSQLでの全文検索の決定版PGroonga 2 - PostgreSQLでの全文検索の決定版
PGroonga 2 - PostgreSQLでの全文検索の決定版Kouhei Sutou
 
MySQLとPostgreSQLと日本語全文検索 - Azure DatabaseでMroonga・PGroongaを使いたいですよね!?
MySQLとPostgreSQLと日本語全文検索 - Azure DatabaseでMroonga・PGroongaを使いたいですよね!?MySQLとPostgreSQLと日本語全文検索 - Azure DatabaseでMroonga・PGroongaを使いたいですよね!?
MySQLとPostgreSQLと日本語全文検索 - Azure DatabaseでMroonga・PGroongaを使いたいですよね!?Kouhei Sutou
 
Mroonga開発者が来たぞ!
Mroonga開発者が来たぞ!Mroonga開発者が来たぞ!
Mroonga開発者が来たぞ!Kouhei Sutou
 
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナーMySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナーKouhei Sutou
 
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!Kouhei Sutou
 

More Related Content

What's hot

PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システムPostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システムKouhei Sutou
 
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システムMySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システムKouhei Sutou
 
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
 PHPでPostgreSQLとPGroongaを使って高速日本語全文検索! PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!Kouhei Sutou
 
初心者向けMroonga・PGroonga情報
初心者向けMroonga・PGroonga情報初心者向けMroonga・PGroonga情報
初心者向けMroonga・PGroonga情報Kouhei Sutou
 
MroongaとPGroonga
MroongaとPGroongaMroongaとPGroonga
MroongaとPGroongaKouhei Sutou
 
いろいろ考えると日本語の全文検索もMySQLがいいね!
いろいろ考えると日本語の全文検索もMySQLがいいね!いろいろ考えると日本語の全文検索もMySQLがいいね!
いろいろ考えると日本語の全文検索もMySQLがいいね!Kouhei Sutou
 
Osc2015 hokkaido postgresql-semi-stuructured-datatype
Osc2015 hokkaido postgresql-semi-stuructured-datatypeOsc2015 hokkaido postgresql-semi-stuructured-datatype
Osc2015 hokkaido postgresql-semi-stuructured-datatypeToshi Harada
 
Kibanaでsysstatを可視化する
Kibanaでsysstatを可視化するKibanaでsysstatを可視化する
Kibanaでsysstatを可視化するKensuke Maeda
 
20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫
20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫
20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫Insight Technology, Inc.
 
MySQL Casual Talks Vol.4 「MySQL-5.6で始める全文検索 〜InnoDB FTS編〜」
MySQL Casual Talks Vol.4 「MySQL-5.6で始める全文検索 〜InnoDB FTS編〜」MySQL Casual Talks Vol.4 「MySQL-5.6で始める全文検索 〜InnoDB FTS編〜」
MySQL Casual Talks Vol.4 「MySQL-5.6で始める全文検索 〜InnoDB FTS編〜」Kentaro Yoshida
 
JAZUG #26 AKS backup with Velero
JAZUG #26 AKS backup with VeleroJAZUG #26 AKS backup with Velero
JAZUG #26 AKS backup with VeleroTetsuya Sodo
 
Lucandraを使ってみる
Lucandraを使ってみるLucandraを使ってみる
Lucandraを使ってみるFumihiko Sato
 
Mroongaを使ったときの MySQLの制限との戦い
Mroongaを使ったときの MySQLの制限との戦いMroongaを使ったときの MySQLの制限との戦い
Mroongaを使ったときの MySQLの制限との戦いNaoya Murakami
 
VPS借りたけどセキュリティが心配! 初心者が気をつけたいセキュリティの話
VPS借りたけどセキュリティが心配! 初心者が気をつけたいセキュリティの話VPS借りたけどセキュリティが心配! 初心者が気をつけたいセキュリティの話
VPS借りたけどセキュリティが心配! 初心者が気をつけたいセキュリティの話Takashi Uemura
 

What's hot (18)

PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システムPostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
 
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システムMySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
 
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
 PHPでPostgreSQLとPGroongaを使って高速日本語全文検索! PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
 
初心者向けMroonga・PGroonga情報
初心者向けMroonga・PGroonga情報初心者向けMroonga・PGroonga情報
初心者向けMroonga・PGroonga情報
 
MroongaとPGroonga
MroongaとPGroongaMroongaとPGroonga
MroongaとPGroonga
 
Groonga族2016
Groonga族2016Groonga族2016
Groonga族2016
 
いろいろ考えると日本語の全文検索もMySQLがいいね!
いろいろ考えると日本語の全文検索もMySQLがいいね!いろいろ考えると日本語の全文検索もMySQLがいいね!
いろいろ考えると日本語の全文検索もMySQLがいいね!
 
PGroongaの実装
PGroongaの実装PGroongaの実装
PGroongaの実装
 
Groonga族2015
Groonga族2015Groonga族2015
Groonga族2015
 
Osc2015 hokkaido postgresql-semi-stuructured-datatype
Osc2015 hokkaido postgresql-semi-stuructured-datatypeOsc2015 hokkaido postgresql-semi-stuructured-datatype
Osc2015 hokkaido postgresql-semi-stuructured-datatype
 
Kibanaでsysstatを可視化する
Kibanaでsysstatを可視化するKibanaでsysstatを可視化する
Kibanaでsysstatを可視化する
 
20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫
20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫
20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫
 
MySQL Casual Talks Vol.4 「MySQL-5.6で始める全文検索 〜InnoDB FTS編〜」
MySQL Casual Talks Vol.4 「MySQL-5.6で始める全文検索 〜InnoDB FTS編〜」MySQL Casual Talks Vol.4 「MySQL-5.6で始める全文検索 〜InnoDB FTS編〜」
MySQL Casual Talks Vol.4 「MySQL-5.6で始める全文検索 〜InnoDB FTS編〜」
 
JAZUG #26 AKS backup with Velero
JAZUG #26 AKS backup with VeleroJAZUG #26 AKS backup with Velero
JAZUG #26 AKS backup with Velero
 
Lucandraを使ってみる
Lucandraを使ってみるLucandraを使ってみる
Lucandraを使ってみる
 
Mroongaを使ったときの MySQLの制限との戦い
Mroongaを使ったときの MySQLの制限との戦いMroongaを使ったときの MySQLの制限との戦い
Mroongaを使ったときの MySQLの制限との戦い
 
Gossip事始め
Gossip事始めGossip事始め
Gossip事始め
 
VPS借りたけどセキュリティが心配! 初心者が気をつけたいセキュリティの話
VPS借りたけどセキュリティが心配! 初心者が気をつけたいセキュリティの話VPS借りたけどセキュリティが心配! 初心者が気をつけたいセキュリティの話
VPS借りたけどセキュリティが心配! 初心者が気をつけたいセキュリティの話
 

Similar to MySQL 8.0でMroonga

MariaDB Columnstore 使いこなそう
MariaDB Columnstore 使いこなそうMariaDB Columnstore 使いこなそう
MariaDB Columnstore 使いこなそうKAWANO KAZUYUKI
 
今から備えるMySQL最新バージョン5.7
今から備えるMySQL最新バージョン5.7今から備えるMySQL最新バージョン5.7
今から備えるMySQL最新バージョン5.7yoku0825
 
MySQLの文字コード事情
MySQLの文字コード事情MySQLの文字コード事情
MySQLの文字コード事情Masahiro Tomita
 
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜Shuji Yamada
 
2015-01-27 Introduction to Docker
2015-01-27 Introduction to Docker2015-01-27 Introduction to Docker
2015-01-27 Introduction to DockerShuji Yamada
 
DB HA Tool - mysqlfailover
DB HA Tool - mysqlfailoverDB HA Tool - mysqlfailover
DB HA Tool - mysqlfailoverJamie Lee
 
Open contrail days 2014 fall
Open contrail days 2014 fallOpen contrail days 2014 fall
Open contrail days 2014 fallDaisuke Nakajima
 
機械学習 (AI/ML) 勉強会 #2 IoT編
機械学習 (AI/ML) 勉強会 #2 IoT編 機械学習 (AI/ML) 勉強会 #2 IoT編
機械学習 (AI/ML) 勉強会 #2 IoT編 Fujio Kojima
 

Similar to MySQL 8.0でMroonga (15)

文字化け
文字化け文字化け
文字化け
 
文字化け
文字化け文字化け
文字化け
 
Mysqlの文字コード
Mysqlの文字コードMysqlの文字コード
Mysqlの文字コード
 
MariaDB Columnstore 使いこなそう
MariaDB Columnstore 使いこなそうMariaDB Columnstore 使いこなそう
MariaDB Columnstore 使いこなそう
 
今から備えるMySQL最新バージョン5.7
今から備えるMySQL最新バージョン5.7今から備えるMySQL最新バージョン5.7
今から備えるMySQL最新バージョン5.7
 
Nseg49 mysql
Nseg49 mysqlNseg49 mysql
Nseg49 mysql
 
MySQLの文字コード事情
MySQLの文字コード事情MySQLの文字コード事情
MySQLの文字コード事情
 
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
 
MHA on AWS+Rails
MHA on AWS+RailsMHA on AWS+Rails
MHA on AWS+Rails
 
20150630_MySQL勉強会
20150630_MySQL勉強会20150630_MySQL勉強会
20150630_MySQL勉強会
 
2015-01-27 Introduction to Docker
2015-01-27 Introduction to Docker2015-01-27 Introduction to Docker
2015-01-27 Introduction to Docker
 
DB HA Tool - mysqlfailover
DB HA Tool - mysqlfailoverDB HA Tool - mysqlfailover
DB HA Tool - mysqlfailover
 
Open contrail days 2014 fall
Open contrail days 2014 fallOpen contrail days 2014 fall
Open contrail days 2014 fall
 
Mysql charset
Mysql charsetMysql charset
Mysql charset
 
機械学習 (AI/ML) 勉強会 #2 IoT編
機械学習 (AI/ML) 勉強会 #2 IoT編 機械学習 (AI/ML) 勉強会 #2 IoT編
機械学習 (AI/ML) 勉強会 #2 IoT編
 

More from Kouhei Sutou

Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021Kouhei Sutou
 
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache ArrowRubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache ArrowKouhei Sutou
 
Rubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェアRubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェアKouhei Sutou
 
Apache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのかApache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのかKouhei Sutou
 
Apache Arrow 1.0 - A cross-language development platform for in-memory data
Apache Arrow 1.0 - A cross-language development platform for in-memory dataApache Arrow 1.0 - A cross-language development platform for in-memory data
Apache Arrow 1.0 - A cross-language development platform for in-memory dataKouhei Sutou
 
Redmine検索の未来像
Redmine検索の未来像Redmine検索の未来像
Redmine検索の未来像Kouhei Sutou
 
Apache Arrow - A cross-language development platform for in-memory data
Apache Arrow - A cross-language development platform for in-memory dataApache Arrow - A cross-language development platform for in-memory data
Apache Arrow - A cross-language development platform for in-memory dataKouhei Sutou
 
Better CSV processing with Ruby 2.6
Better CSV processing with Ruby 2.6Better CSV processing with Ruby 2.6
Better CSV processing with Ruby 2.6Kouhei Sutou
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームKouhei Sutou
 
PGroonga 2 – Make PostgreSQL rich full text search system backend!
PGroonga 2 – Make PostgreSQL rich full text search system backend!PGroonga 2 – Make PostgreSQL rich full text search system backend!
PGroonga 2 – Make PostgreSQL rich full text search system backend!Kouhei Sutou
 
Improve extension API: C++ as better language for extension
Improve extension API: C++ as better language for extensionImprove extension API: C++ as better language for extension
Improve extension API: C++ as better language for extensionKouhei Sutou
 
全文検索でRedmineをさらに活用!
全文検索でRedmineをさらに活用!全文検索でRedmineをさらに活用!
全文検索でRedmineをさらに活用!Kouhei Sutou
 
株式会社クリアコード
株式会社クリアコード株式会社クリアコード
株式会社クリアコードKouhei Sutou
 
OSSの開発に参加しよう! - OSS Gate
OSSの開発に参加しよう! - OSS GateOSSの開発に参加しよう! - OSS Gate
OSSの開発に参加しよう! - OSS GateKouhei Sutou
 

More from Kouhei Sutou (20)

Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
 
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache ArrowRubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
 
Rubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェアRubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェア
 
Apache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのかApache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのか
 
Apache Arrow 1.0 - A cross-language development platform for in-memory data
Apache Arrow 1.0 - A cross-language development platform for in-memory dataApache Arrow 1.0 - A cross-language development platform for in-memory data
Apache Arrow 1.0 - A cross-language development platform for in-memory data
 
Apache Arrow 2019
Apache Arrow 2019Apache Arrow 2019
Apache Arrow 2019
 
Redmine検索の未来像
Redmine検索の未来像Redmine検索の未来像
Redmine検索の未来像
 
Apache Arrow - A cross-language development platform for in-memory data
Apache Arrow - A cross-language development platform for in-memory dataApache Arrow - A cross-language development platform for in-memory data
Apache Arrow - A cross-language development platform for in-memory data
 
Better CSV processing with Ruby 2.6
Better CSV processing with Ruby 2.6Better CSV processing with Ruby 2.6
Better CSV processing with Ruby 2.6
 
Apache Arrow
Apache ArrowApache Arrow
Apache Arrow
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォーム
 
Apache Arrow
Apache ArrowApache Arrow
Apache Arrow
 
My way with Ruby
My way with RubyMy way with Ruby
My way with Ruby
 
Red Data Tools
Red Data ToolsRed Data Tools
Red Data Tools
 
PGroonga 2 – Make PostgreSQL rich full text search system backend!
PGroonga 2 – Make PostgreSQL rich full text search system backend!PGroonga 2 – Make PostgreSQL rich full text search system backend!
PGroonga 2 – Make PostgreSQL rich full text search system backend!
 
Improve extension API: C++ as better language for extension
Improve extension API: C++ as better language for extensionImprove extension API: C++ as better language for extension
Improve extension API: C++ as better language for extension
 
PGroonga & Zulip
PGroonga & ZulipPGroonga & Zulip
PGroonga & Zulip
 
全文検索でRedmineをさらに活用!
全文検索でRedmineをさらに活用!全文検索でRedmineをさらに活用!
全文検索でRedmineをさらに活用!
 
株式会社クリアコード
株式会社クリアコード株式会社クリアコード
株式会社クリアコード
 
OSSの開発に参加しよう! - OSS Gate
OSSの開発に参加しよう! - OSS GateOSSの開発に参加しよう! - OSS Gate
OSSの開発に参加しよう! - OSS Gate
 

Recently uploaded

解説: Token Extensions - Solana Developer Hub Online #SolDevHub
解説: Token Extensions - Solana Developer Hub Online #SolDevHub解説: Token Extensions - Solana Developer Hub Online #SolDevHub
解説: Token Extensions - Solana Developer Hub Online #SolDevHubK Kinzal
 
HarukiShinkawa_果樹農家が期待する行動への変容を促す仕掛け設計のための収穫作業体験者の行動観察とモデル化_仕掛学2024.pdf
HarukiShinkawa_果樹農家が期待する行動への変容を促す仕掛け設計のための収穫作業体験者の行動観察とモデル化_仕掛学2024.pdfHarukiShinkawa_果樹農家が期待する行動への変容を促す仕掛け設計のための収穫作業体験者の行動観察とモデル化_仕掛学2024.pdf
HarukiShinkawa_果樹農家が期待する行動への変容を促す仕掛け設計のための収穫作業体験者の行動観察とモデル化_仕掛学2024.pdfMatsushita Laboratory
 
00001_test_automation_portfolio_20240227
00001_test_automation_portfolio_2024022700001_test_automation_portfolio_20240227
00001_test_automation_portfolio_20240227ssuserf8ea02
 
AWS (Amazon Web Services) を勉強してみる おさらい 2024/02/16の勉強会で発表されたものです。
AWS (Amazon Web Services) を勉強してみる おさらい 2024/02/16の勉強会で発表されたものです。AWS (Amazon Web Services) を勉強してみる おさらい 2024/02/16の勉強会で発表されたものです。
AWS (Amazon Web Services) を勉強してみる おさらい 2024/02/16の勉強会で発表されたものです。iPride Co., Ltd.
 
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
20240222_Neko_IoTLT_vol9_kitazaki_v1.pdf
20240222_Neko_IoTLT_vol9_kitazaki_v1.pdf20240222_Neko_IoTLT_vol9_kitazaki_v1.pdf
20240222_Neko_IoTLT_vol9_kitazaki_v1.pdfAyachika Kitazaki
 
オリジナルNFTを発行するブロックチェーン開発ハンズオン(NFTの発行に必要なツールから実装まで)
オリジナルNFTを発行するブロックチェーン開発ハンズオン(NFTの発行に必要なツールから実装まで)オリジナルNFTを発行するブロックチェーン開発ハンズオン(NFTの発行に必要なツールから実装まで)
オリジナルNFTを発行するブロックチェーン開発ハンズオン(NFTの発行に必要なツールから実装まで)Kanta Sasaki
 
scikit-learn以外の分類器でpipelineを作ってみた! いずみん
scikit-learn以外の分類器でpipelineを作ってみた! いずみんscikit-learn以外の分類器でpipelineを作ってみた! いずみん
scikit-learn以外の分類器でpipelineを作ってみた! いずみんtoshinori622
 

Recently uploaded (8)

解説: Token Extensions - Solana Developer Hub Online #SolDevHub
解説: Token Extensions - Solana Developer Hub Online #SolDevHub解説: Token Extensions - Solana Developer Hub Online #SolDevHub
解説: Token Extensions - Solana Developer Hub Online #SolDevHub
 
HarukiShinkawa_果樹農家が期待する行動への変容を促す仕掛け設計のための収穫作業体験者の行動観察とモデル化_仕掛学2024.pdf
HarukiShinkawa_果樹農家が期待する行動への変容を促す仕掛け設計のための収穫作業体験者の行動観察とモデル化_仕掛学2024.pdfHarukiShinkawa_果樹農家が期待する行動への変容を促す仕掛け設計のための収穫作業体験者の行動観察とモデル化_仕掛学2024.pdf
HarukiShinkawa_果樹農家が期待する行動への変容を促す仕掛け設計のための収穫作業体験者の行動観察とモデル化_仕掛学2024.pdf
 
00001_test_automation_portfolio_20240227
00001_test_automation_portfolio_2024022700001_test_automation_portfolio_20240227
00001_test_automation_portfolio_20240227
 
AWS (Amazon Web Services) を勉強してみる おさらい 2024/02/16の勉強会で発表されたものです。
AWS (Amazon Web Services) を勉強してみる おさらい 2024/02/16の勉強会で発表されたものです。AWS (Amazon Web Services) を勉強してみる おさらい 2024/02/16の勉強会で発表されたものです。
AWS (Amazon Web Services) を勉強してみる おさらい 2024/02/16の勉強会で発表されたものです。
 
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 
20240222_Neko_IoTLT_vol9_kitazaki_v1.pdf
20240222_Neko_IoTLT_vol9_kitazaki_v1.pdf20240222_Neko_IoTLT_vol9_kitazaki_v1.pdf
20240222_Neko_IoTLT_vol9_kitazaki_v1.pdf
 
オリジナルNFTを発行するブロックチェーン開発ハンズオン(NFTの発行に必要なツールから実装まで)
オリジナルNFTを発行するブロックチェーン開発ハンズオン(NFTの発行に必要なツールから実装まで)オリジナルNFTを発行するブロックチェーン開発ハンズオン(NFTの発行に必要なツールから実装まで)
オリジナルNFTを発行するブロックチェーン開発ハンズオン(NFTの発行に必要なツールから実装まで)
 
scikit-learn以外の分類器でpipelineを作ってみた! いずみん
scikit-learn以外の分類器でpipelineを作ってみた! いずみんscikit-learn以外の分類器でpipelineを作ってみた! いずみん
scikit-learn以外の分類器でpipelineを作ってみた! いずみん
 

MySQL 8.0でMroonga

  • 1. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 MySQL 8.0で Mroonga 須藤功平 クリアコード MyNA会 2018年7月 2018-07-23
  • 2. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 Mroonga MySQLの ストレージ エンジン
  • 3. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 ストレージエンジン C++で実装 MySQLのハンドラーAPIを使う ハンドラーAPIっていう名前なの?
  • 4. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 ハンドラーAPI すごくよく変わる メジャーバージョンアップ 絶対変わる MyNAバージョンアップ たまに変わる
  • 5. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 MySQL 8.0対応 ビルドエラー修正 API変更に対応 1. 新機能対応 新COLLATION対応とか 2. テストをパスするようにする ビルドができても期待通りに動くとは限らない 3.
  • 6. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 制約 対応MySQL族で Mroongaのテストを すべてパスし続ける
  • 7. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 対応MySQL族 MySQL 5.5, 5.6, 5.7 MariaDB 5.5, 10.0, 10.1, 10.2, 10.3 Percona Server for MySQL 5.6, 5.7
  • 8. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 Travis CI
  • 9. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 AppVeyor
  • 10. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 MySQL 8.0対応の現状 ビルドエラー修正 完了 1. 新機能対応 完了 2. テストをパスするようにする 未完(全然おわんねーの) 3.
  • 11. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 ビルドエラー修正までの道 90コミット
  • 12. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 API変更パターン ふつうのC++になった すごくよいこと 1. 名前が変わった2. 新しいなにかが増えた3.
  • 13. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 ふつうのC++ my_bool→bool 必要なヘッダーだけ#include HASH→std::unordered_map std::stringを使える! autoを使える!
  • 14. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 名前が変わった 型:st_select_lex→SELECT_LEX API: order->direction == ORDER_ASC order->direction == ORDER::ORDER_ASC order->asc
  • 15. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 対応方針 上位互換APIを用意して使う 使わない引数は単に無視 コード中で#ifしない メンテナンスできないコードのできあがり!
  • 16. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 互換型 #if MYSQL_VERSION_ID >= 80011 && !defined(MRN_MARIADB_P) class SELECT_LEX; typedef SELECT_LEX mrn_select_lex; #else typedef st_select_lex mrn_select_lex; #endif // mrn_select_lex *select_lex = table_list->select_lex;
  • 17. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 互換API #if MYSQL_VERSION_ID >= 80011 # define MRN_ORDER_IS_ASC(order) ((order)->direction == ORDER_ASC) #elif MYSQL_VERSION_ID >= 50603 # define MRN_ORDER_IS_ASC(order) ((order)->direction == ORDER::ORDER_ASC) #else # define MRN_ORDER_IS_ASC(order) ((order)->asc) #endif // if (MRN_ORDER_IS_ASC(order)) {...}
  • 18. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 新しいなにかが増えた dd::*が増えた data dictionaryだって テーブル定義の取得方法が変わった handlerにメンバー関数追加 実装して対応しないといけない
  • 19. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 対応方針 説明が面倒に なってきたので 省略
  • 20. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 新機能対応 新COLLATION対応 utf8mb4_0900_ai_ci utf8mb4_0900_as_ci utf8mb4_0900_as_cs utf8mb4_ja_0900_as_cs utf8mb4_ja_0900_as_cs_ks
  • 21. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 groonga-normalizer-mysql 1.1.4で全部対応!
  • 22. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 テストデータ CREATE TABLE x ( a text, FULLTEXT INDEX (a) ) ENGINE=Mroonga; INSERT INTO x VALUES ("はひふへほ"); INSERT INTO x VALUES ("ばびぶべぼ"); INSERT INTO x VALUES ("ハヒフヘホ"); INSERT INTO x VALUES ("バビブベボ"); INSERT INTO x VALUES ("ハヒフヘホ"); INSERT INTO x VALUES ("バビブベボ");
  • 23. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 確認方法 SELECT * FROM x WHERE MATCH(a) AGAINST('+バビブベボ' IN BOOLEAN MODE);
  • 24. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 utf8mb4_0900_ai_ci ALTER TABLE x MODIFY COLUMN a text COLLATE utf8mb4_0900_ai_ci; -- +--------------------------------+ -- | a | -- +--------------------------------+ -- | はひふへほ | -- | ばびぶべぼ | -- | ハヒフヘホ | -- | バビブベボ | -- | ハヒフヘホ | -- | バビブベボ | -- +--------------------------------+
  • 25. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 utf8mb4_0900_as_cs ALTER TABLE x MODIFY COLUMN a text COLLATE utf8mb4_0900_as_cs; -- +-----------------+ -- | a | -- +-----------------+ -- | バビブベボ | -- +-----------------+
  • 26. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 utf8mb4_ja_0900_as_cs ALTER TABLE x MODIFY COLUMN a text COLLATE utf8mb4_ja_0900_as_cs; -- +-----------------+ -- | a | -- +-----------------+ -- | ばびぶべぼ | -- | バビブベボ | -- +-----------------+
  • 27. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 utf8mb4_ja_0900_as_cs_ks ALTER TABLE x MODIFY COLUMN a text COLLATE utf8mb4_ja_0900_as_cs_ks; -- +-----------------+ -- | a | -- +-----------------+ -- | バビブベボ | -- +-----------------+
  • 28. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 Mroongaの正規化 MySQLとはステージが違う 濁点とかひらがなとかカタカナとか小文 字とか絵文字とかそういうステージじゃ ないから
  • 29. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 使用Unicodeのバージョン MySQL: 9.0.0 Mroonga: 10.0.0 2018-07時点の最新Unicodeバージョン:11.0.0
  • 30. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 使い方 CREATE TABLE x ( a text, FULLTEXT INDEX (a) -- MariaDBだとNORMALIZER='NormalizerNFKC100'と書ける! COMMENT='normalizer "NormalizerNFKC100"' ) ENGINE=Mroonga;
  • 31. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 デフォルト AGAINST('+バビブベボ' IN BOOLEAN MODE) -- +-----------------+ -- | a | -- +-----------------+ -- | バビブベボ | -- | バビブベボ | -- +-----------------+
  • 32. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 unify_kana -- COMMENT='normalizer -- "NormalizerNFKC100('unify_kana', true)"' AGAINST('+バビブベボ' IN BOOLEAN MODE) -- +-----------------+ -- | a | -- +-----------------+ -- | ばびぶべぼ | -- | バビブベボ | -- | バビブベボ | -- +-----------------+
  • 33. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 unify_voiced_sound_mark -- COMMENT='normalizer -- "NormalizerNFKC100('unify_voiced_sound_mark', true)"' AGAINST('+バビブベボ' IN BOOLEAN MODE) -- +--------------------------------+ -- | a | -- +--------------------------------+ -- | ハヒフヘホ | -- | バビブベボ | -- | ハヒフヘホ | -- | バビブベボ | -- +--------------------------------+
  • 34. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 unify_kana_case INSERT INTO x VALUES ("やゆよ"); INSERT INTO x VALUES ("ゃゅょ"); INSERT INTO x VALUES ("ヤユヨ"); INSERT INTO x VALUES ("ャュョ"); INSERT INTO x VALUES ("ヤユヨ"); INSERT INTO x VALUES ("ャュョ");
  • 35. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 unify_kana_case -- COMMENT='normalizer -- "NormalizerNFKC100('unify_kana_case', true)"' AGAINST('+ヤユヨ' IN BOOLEAN MODE) -- +-----------+ -- | a | -- +-----------+ -- | ヤユヨ | -- | ャュョ | -- | ヤユヨ | -- | ャュョ | -- +-----------+
  • 36. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 unify_hyphen ハイフンっぽい文字を -˗֊‐‑‒–⁃⁻₋− ハイフンへ -(U+002D) ユースケース:電話番号検索
  • 37. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 unify_prolonged_sound_mark 長音記号っぽい文字を ー—―─━ー 長音記号へ ー(U+30FC) ユースケース:電話番号検索
  • 38. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 unify_hyphen_and_ prolonged_sound_mark ハイフンっぽい文字と -˗֊‐‑‒–⁃⁻₋− 長音記号っぽい文字を ー—―─━ー ハイフンへ -(U+002D)
  • 39. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 unify_middle_dot 中点っぽい文字を ·ᐧ•∙⋅⸱・・ 中点へ ·(U+00B7) ユースケース:外来語検索
  • 40. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 unify_katakana_v_sounds ヴァヴィヴヴェヴォを バビブベボへ ユースケース:外来語検索(ワイン名)
  • 41. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 unify_katakana_bu_sound ヴァヴィヴヴェヴォを ブへ ユースケース:外来語検索(ワイン名)
  • 42. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 オプションは組み合わせ可能 -- ワイン名検索用 -- COMMENT='normalizer -- "NormalizerNFKC100( -- 'unify_middle_dot', true, -- 'unify_katakana_bu_sound', true)"'
  • 43. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 トークナイザー MySQLとはステージが違う ゆるく検索するモード 電話番号・ワイン名検索に便利
  • 44. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 ゆるく検索 loose_symbol 記号の有無に関係なくマッチ loose_blank 空白文字の有無に関係なくマッチ
  • 45. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 書き方 -- MariaDBだと↓と書ける! -- TOKENIZER='TokenNgram("loose_symbol", true)' -- COMMENT='tokenizer -- "TokenNgram('loose_symbol', true)"'
  • 46. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 電話番号検索例 INSERT INTO x VALUES ('(123)4567-8901'); INSERT INTO x VALUES ('123-4567-8901'); INSERT INTO x VALUES ('12345678901'); INSERT INTO x VALUES ('(123)4567−8901'); INSERT INTO x VALUES ('123 4567 8901');
  • 47. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 電話番号検索例 -- NormalizerNFKC100('unify_hyphen_and_prolonged_sound_mark', true) -- TokenNgram('loose_symbol', true, -- 'loose_blank', true) AGAINST('+1234567ー8901' IN BOOLEAN MODE) -- +--------------------------------------------+ -- | a | -- +--------------------------------------------+ -- | (123)4567-8901 | -- | 123-4567-8901 | -- | 12345678901 | -- | (123)4567−8901 | -- | 123 4567 8901 | -- +--------------------------------------------+
  • 48. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 ワイン名検索例 INSERT INTO x VALUES ('セーヴェル エ メーヌ'); INSERT INTO x VALUES ('セブルエメーヌ'); INSERT INTO x VALUES ('セーブル・エ・メーヌ'); INSERT INTO x VALUES ('セーヴル エメーヌ');
  • 49. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 ワイン名検索例 -- NormalizerNFKC100('unify_middle_dot', true, -- 'unify_hyphen_and_prolonged_sound_mark', true, -- 'unify_katakana_bu_sound', true) -- TokenNgram('loose_symbol', true, -- 'loose_blank', true) AGAINST('+セーヴェルエメーヌ' IN BOOLEAN MODE) -- +--------------------------------+ -- | a | -- +--------------------------------+ -- | セーヴェル エ メーヌ | -- | セブルエメーヌ | -- | セーブル・エ・メーヌ | -- | セーヴル エメーヌ | -- +--------------------------------+
  • 50. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 テストがパスしない原因 そもそも動かない 動くけどクラッシュする 動くけど期待通りじゃない 動くし期待通りだけど期待通りじゃない
  • 51. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 そもそも動かない例 mysql-test/include/*が減った have_innodb.inc:InnoDB必須だから not_embedded.inc:libmysqldを辞めたから 互換.incを用意
  • 52. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 動くけどクラッシュする例 JSON型のカラムの更新 ラッパーモード 使っている人いる? 削除していい?
  • 53. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 動くけど期待通りじゃない例 FOREIGN KEYの制約チェック dd::*からうまく主キー情報を 取得できていない
  • 54. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 動くし期待通りだけど 期待通りじゃない例 デフォルト値変更→期待結果も変わる 例:COLLATIONの変更 SHOW CREATE TABLEの結果が変わる テスト方法・結果の変更で対応 例:非デフォルトCOLLATIONを使う ただただ面倒
  • 55. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 テストがまだパスしていない要因 テスト実行が遅くなった JSONのやつがなんで動かなくなったか わからん dd::*の使い方がわからん
  • 56. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 テスト実行が遅い mysql-test-runが遅くなった テスト実行開始まで30秒くらい メモリー3GB食うようになった Mroongaのテストは約770個 gdbの起動が遅くなった mysqldのシンボル読込に15秒くらい
  • 57. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 テストがパスするための支援方法 クリアコードに開発案件を発注 仕事の時間で開発できる!
  • 58. MySQL 8.0でMroonga Powered by Rabbit 2.2.2 次回リリース 8月か9月の肉の日かなぁ db tech showcase Tokyo 2018の前に リリースできるといいなぁ