MySQLデータベースにエイリアス機能 (create_synonym_db)があるので見てみる

kakeru kikuchi


kakeru kikuchi
MySQLのデータベースエイリアス
create_synonym_db() プロシージャを使うと既存のデータベースに別名をつけることができる https://dev.mysql.com/doc/refman/8.0/ja/sys-create-synonym-db.html
どういうことなんだろうか…?
エイリアスという名のシンボリックリンク
実際にプロシージャを使うと「別のデータベース」を作る動きのようだ
1. シノニムの元となるデータベースが存在するかチェックする
存在しなければその時点でエラーメッセージを返して終了する
2. シノニムに指定した名前を持つデータベースがすでに存在していないかチェックする
存在していればその時点でエラーメッセージを返して終了する
3. シノニムに指定した名前を持つデータベースを作成する
4. シノニムの元となるデータベースに存在するテーブル1つずつに対してViewを作成する
※ 「別のデータベース」もメタ情報などはコピーされるわけではないっぽいのでcharacter_set 等は元になったデータベースと違う
罠になりそうな誤解
1. 元のデータベースを誤って消して爆死
「コードと設定見てもこのデータベース使われてないな…消しちゃえ!」 → エイリアスのデータベースViewの参照先が消失して爆死
2. エイリアスのデータベースにテーブル作成して混乱
「コードとか設定に書かれているデータベースはこれか…このデータベースにCREATE TABLEだ!」 → 真に管理すべき元のデータベースにはテーブルが作られなくて混乱
雑感
結局使い所がわからないが、何かしらのエッジケースで使えるのだろう…くらいの印象でした (誰か教えてくれぇ)