データベース
MySQLでのスキーマ
えだ
更新日:2021/08/05
今日はデータベースに関する少し細かい話です。
MySQLにスキーマってあるの?
ミドルウェアとして各RDBMSをSQLだけで見た時、その差は許容範囲なことが多いのですが、根底概念に焦点を当てるとやはり違いが多々あります。
僕は元々ORACLERなので、どうしてもそれをベースにして比較してしまいます。
ORACLEとMySQLを比べてまず気づくのがスキーマ概念です。
Oracleではデータベースとユーザーとスキーマがあります。
MySQLではテーブル等の纏まりをデータベースと呼び、スキーマは同義です。
Oracleではスキーマ所有者という概念がありますが、MySQLには所有者の概念はありません。
もっというと、、。
ORACLEのデータベースはその中でデータファイルとインスタンスを作成し、更にユーザとスキーマを作成します。
オブジェクト(テーブルやプロシージャ)は、スキーマ単位で作成します。
で、スキーマに属するオブジェクトはロールを付与することで他のユーザが扱うことができるようになります。
それに対しMYSQLはユーザを作成し、各ユーザはデータベースを作成します。
で、各ユーザーは、ロール(権限セット)を付与することで複数のデータベースを扱えるようになります。
概念は相当違えど、結果的にはだいたい同じことができます。
違うのはORACLEがロール単位なのに対し、MySQLは各ユーザーに対して別々に権限を付与する必要がある点です。
こういった痒いところにてが届くのがORACLEの優位性の1つなのでしょうか。