2010-07-18 118 views
1

我正在使用SQL Server後端處理.NET Web項目。數據庫的核心部分是填充庫存數據。這些數據每天由加載應用程序加載。數據庫設計解耦

此數據應保持只讀網站。我的意思是,我不希望Web開發人員修改特定於股票數據的表,也不希望他們將數據寫入這些表,因爲這將被每日更新所覆蓋。

顯然,網站會要求很多表格,例如認證,管理員等,在某些情況下,他們將不得不允許用戶操縱股票數據來執行諸如=> GOOG應顯示「UsersGoogleStock Inc.」的股票名稱而不是存儲的每日加載名稱「Google Inc.」。

我的問題是,我應該有兩個單獨的數據庫?一個用於我的只讀股票數據,另一個用於網站細節?

回答

-1

我應該有兩個單獨的數據庫嗎?

從來沒有。

只需告訴Web開發人員需要更新什麼以及他們不能更新什麼。不要把複雜的技術複雜化爲一個簡單的社會問題。與他們交談。解釋規則。從長遠來看,這比其他方案更容易,更成功。

+1

從不?爲什麼不?同一臺服務器上的多個數據庫是完全有效的建議。在這種情況下,任何值得用鹽的引擎都可以優化。我想他應該把所有的方法都編碼在同一個類中,不想讓它不必要地複雜。 – Joe 2010-07-18 12:09:43

3

不,你應該有一個數據庫。網站使用的身份驗證(通常是用戶名/密碼)應該具有適當的安全性,以控制可以讀取和寫入的內容。

0

您可以在表格的基礎上授予或保留INSERTUPDATEDELETE的必要權限,因此您不需要單獨的數據庫。您可以在同一個數據庫中創建多個模式,以向所有程序員說明他們可以更新什麼,以及他們不能。

請參閱GRANTREVOKE文檔瞭解您選擇的任何數據庫。

2

到目前爲止給出的三個答案都遭到了反對。

爲了給討論添加一個點,有一個modest performance benefit設置數據庫爲只讀,因爲減少了鎖定開銷。

0

我會把它放在一個單獨的數據庫中,因爲您可能只想簡單地恢復僅從外部來源填充的表,並且不需要從事務日誌中恢復。將需要簡單恢復的那些表與那些需要事務日誌詳細信息的表分開以進行數據恢復通常是一個好主意。這將加速導入,並會使需要完全恢復的數據庫運行得更快,因爲它不會因導入而減慢速度。

如果兩者都需要相同的恢復模式,則它們可以位於一個數據庫中,並且可以設置表格以便開發人員無權使用它們。當然,您的開發人員無權修改生產中的任何內容。只有dba或配置人員或經理應該促進生產變更。