2011-03-03 107 views
0

我有點傻問題。我有一個小型社區網站。我正在考慮製作特定的網頁,只有經過許可的會員才能查看。所以我想我會在數據庫中添加每個成員ID,當成員嘗試訪問頁面時,我將首先檢查成員是否已登錄,然後檢查用戶ID,如果它存在於數據庫的表中有權查看該內容的用戶。現在我只是想知道如果數據庫增長,不需要很長時間來檢查everythng之前加載頁面?關於數據庫的一般問題

+0

網站運行情況:鑑於你提到MySQL,我假設PHP?我會在必要時向會話中添加一個「授權」令牌,並堅持使用它,所以它不會每次訪問頁面時都會ping。 – 2011-03-03 19:49:43

回答

0

Premature optimization is the root of all evil(高德納)

您可以輕鬆處理數百萬用戶提供一個單一的數據庫,所以直到你的社區是巨大的,這將不會是一個問題。當您達到該步驟時,您可以切換到更多可擴展的數據庫解決方案,如Cassandra

話雖如此,考慮到布拉德克里斯蒂的評論,並使用合理的身份管理,不會不必要地顛覆你的數據庫。

0

「很長時間」是主觀的,取決於很多因素。對於小型社區網站,您可能不會遇到任何與您描述的方法有關的問題。儘管如此,它被認爲是最佳實踐,並且如果您使用適當的索引,將顯着加快查詢速度。應該對將要查詢的列進行索引,例如用戶標識。不使用索引意味着MySQL必須讀取表中的每條記錄並檢查它是否符合條件。

這篇文章可能是你有幫助:

http://www.databasejournal.com/features/mysql/article.php/1382791/Optimizing-MySQL-Queries-and-Indexes.htm

另外,如果你是關心如何當你的數據集的增長你的網站將執行,考慮一束虛擬數據和運行填充它一些測試。這個網站將幫助你生成一堆數據放入你的數據庫。

http://www.generatedata.com/#about

最後,如果頁面不是針對特定的個人或小團體的人,可以考慮使用更普遍的桶進行訪問控制。例如,如果只有管理員可以查看頁面,請將該頁面綁定到「管理員」權限並記下哪些用戶是管理員。然後,您可以快速查看特定人員的類型或用戶類型,並決定是否向他們顯示該頁面。這種類型的系統通常被稱爲訪問控制列表(ACL)。

http://en.wikipedia.org/wiki/Access_control_list