免責事項
この翻訳は MySQL Server Blogの2014/09/28に公開された記事をユーザーが翻訳したものであり、Oracle公式の翻訳ではありません。
MySQLの新しいデータディクショナリー
- 長い間、MySQLのデータディクショナリーはイケてないと言われてきた。Morganのブログ記事やMySQLのアーキテクチャーに関するStewart Smithのブログ記事みたいに、多くの人が「FRMファイルオワコン」と主張している。
我々は新しく改善されたデータディクショナリーを設計して実装しているところ。その設計のゴールは、
- データディクショナリーをトランザクションに対応したストレージの中に入れること。まずはInnoDB、他のストレージエンジンもそれに追随していく。
- バラバラに保存されたデータディクショナリーを一箇所にまとめて保存すること。
- 全てのテーブル定義情報は同じ方法で保存され、ディクショナリーオブジェクトのための統一されたAPIでアクセスするされること。
- ファイルシステムの差による問題を解決すること。
- キャッシュが効くようにAPIを作っておくこと。キャッシュの存在はAPIに隠されて見えないようにする。
- ゆくゆくはレプリケーションの信頼性を向上させる目玉機能であるトランザクショナルDDLを使えるように準備すること。
- Information Schemaをテーブル定義情報を格納したテーブルのビューとして扱うこと。Information Schemaのクエリーが最適化できるように。
- ディクショナリー情報をシリアライズするAPIを提供すること。これは他のストレージエンジンとの共存や、冗長化を簡単にするため。
- テーブル定義の更新をアシストするための、メタデータのバージョニングを追加すること。
- ダンプ/リストアなしで、古いMySQLからデータディクショナリーを移行できる方法を提供すること。
- 大きなデータセットを移動できるような仕組みを作ること。
http://labs.mysql.com で新しいデータディクショナリーの動作をプレビューすることができる。Gopal Shankarのエントリーでは、このラボリリースの内容について説明している。
Alexander NozdrinはOOW14で New Data Dictionary: An Internal Server API That Matters の話をする。
- そのセッションの中では↓の絵のような説明がある予定だ。
- 訳注: 図表はリンクしていないので、原文を参照してください
- そのセッションの中では↓の絵のような説明がある予定だ。
新しいデータディクショナリーが使うスキーマ定義についてもっと詳しいことを知りたければ WL#6379を見て欲しい。WL#6380にはディクショナリーの内部APIの概要が書かれてる。テーブルAPI, ストアドプログラムAPIなどそれぞれのAPIが共通で使うコアAPIのリストWL#7284にある。WL#6382はテーブルオブジェクトに対するAPIが説明されている。
この記事で紹介されている内容は全て、マイナーチェンジされる可能性があって、今後アップデートされると思うので気をつけて。