當連接到特定的表中我可能提供以下信息SQLAlchemy中的數據庫名稱和模式名稱之間的區別?
Database: protocol://user:[email protected]:port/dbname
Table: myschema.mytable
是什麼dbname
和myschema
之間這裏的區別數據庫?他們的使用對我來說似乎多餘。
當連接到特定的表中我可能提供以下信息SQLAlchemy中的數據庫名稱和模式名稱之間的區別?
Database: protocol://user:[email protected]:port/dbname
Table: myschema.mytable
是什麼dbname
和myschema
之間這裏的區別數據庫?他們的使用對我來說似乎多餘。
模式是一組數據庫對象(表,視圖等)within
數據庫。它是邏輯分區數據庫內對象的一種方式。
假設用戶擁有適當的權限,他們可以使用一個數據庫連接訪問多個模式中的表。連接表(甚至來自多個模式)也是微不足道的。當對象存儲在多個數據庫中時,您需要每個數據庫都有一個連接來訪問這些對象,並且連接通常更加困難(您的RDBMS或ORM可能會隱藏其中一些難點)。每個數據庫也都有獨立的登錄。
經過多一點閱讀,我相信模式只是方法或分區數據庫。這對管理權限和爲具有相似名稱的表提供唯一性很有用。因此可以將一組表,查看,觸發器收集到一個模式中,並在那裏設置權限。然後,我可以爲該模式設置燙髮並將其交給用戶。
此外,我還可以重載表名,但通過該模式提供唯一性。我相信這種情況在事務數據庫中經常發生,其中用戶可能具有名稱相似的表,但每個用戶的架構不同。
這個定義/使用與使用多個數據庫有何不同? – MRocklin 2014-10-31 19:10:15