Process - - - database - Object
Process - Server - User - Object
Process - database - User - Schema - Object
依次是Mysql、Oracle、Db2
沒做過oracle多實例,db2也是剛剛接觸,淺顯的理解
Mysql這種方式很初級最容易被人想到,Database與User分開是跟其他兩個的區別,用授權來關聯用戶和數據庫。
jdbc的連接地址裡面,三者分別指定了Database、User、User(&Schema),Db2如果不單獨創建Schema則形式是跟Oracle一樣的。Db2的User只能是操作系統的用戶,數據庫本身不能創建用戶,這點好像不太好,對於不同的應用系統,Mysql是創建不同的Database,Oracle是創建不同的User,這時Db2有兩種方法,一是創建不同的操作系統用戶,二是在User下創建不同的Schema,然後jdbc連接地址聲明這個Schema。
就應用劃分層面來說,三種數據庫的Database、User、Schema在一個層面。Oracle相比Mysql可以新建多個實例,一個實例等同於Mysql的一個進程,我的理解Oracle的創建實例就是創建database,會新建出一個oracleserver。Db2的Database跟Oracle實例在一個層面,區別是Oracle創建實例比較麻煩,Db2一句話就執行完了。Oracle的兩個實例之間獨立,Db2也是。訪問需要通過特定方式。
統一說來,
1:Oracle的實例與Db2的數據庫是一回事,應該被統一稱作實例比較合適,而Mysql便是單實例模式
2:應用劃分層,三者分別是database、user、schema,統一稱作database比較合適,真正的數據都在這一層。
從這裡理解於是:用戶名與密碼的作用只是用來登陸,以及賦予對database的訪問權限。
mysql中這兩者是無關的。
oracle這裡本沒有database的概念,user就是database,可以理解為創建一個user時同時創建一個同名的database。有幾個user就有幾個database。
db2創建一個user會同時創建一個同名的database作為schema,另外還能再創建其他多個schema。