The source code for this blog is available on GitHub.

Blog.

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

Cover Image for 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. 1. シノニムの元となるデータベースが存在するかチェックする

    1. 存在しなければその時点でエラーメッセージを返して終了する

  2. 2. シノニムに指定した名前を持つデータベースがすでに存在していないかチェックする

    1. 存在していればその時点でエラーメッセージを返して終了する

  3. 3. シノニムに指定した名前を持つデータベースを作成する

  4. 4. シノニムの元となるデータベースに存在するテーブル1つずつに対してViewを作成する

※ 「別のデータベース」もメタ情報などはコピーされるわけではないっぽいのでcharacter_set 等は元になったデータベースと違う

罠になりそうな誤解

1. 元のデータベースを誤って消して爆死

「コードと設定見てもこのデータベース使われてないな…消しちゃえ!」 → エイリアスのデータベースViewの参照先が消失して爆死

2. エイリアスのデータベースにテーブル作成して混乱

「コードとか設定に書かれているデータベースはこれか…このデータベースにCREATE TABLEだ!」 → 真に管理すべき元のデータベースにはテーブルが作られなくて混乱

雑感

結局使い所がわからないが、何かしらのエッジケースで使えるのだろう…くらいの印象でした (誰か教えてくれぇ)

参考


More Stories

Cover Image for Streamlit + LangChain + ChatGPT APIでホビープログラムを書いてみる

Streamlit + LangChain + ChatGPT APIでホビープログラムを書いてみる

ChatGPT APIを使える自前のアプリケーションを作ってみた

kakeru kikuchi
kakeru kikuchi
Cover Image for GPTにまつわる内容をChatGPT(GPT-4)でまとめてみる

GPTにまつわる内容をChatGPT(GPT-4)でまとめてみる

ChatGPT(GPT-4)すごい

kakeru kikuchi
kakeru kikuchi