关于数据库的一般问题

时间:2011-03-03 19:46:56

标签: mysql scalability

我有点傻问题。我有一个小社区网站。我想制作特定页面,只有拥有许可的成员才能查看。所以我想我会在数据库中添加每个成员ID,当成员尝试访问该页面时,我将首先检查该成员是否已登录,然后我将检查用户ID,如果它存在于数据库表中有权查看该内容的用户。现在我只是想知道数据库是否会成长,在加载页面之前不需要花很长时间来检查每个数据库吗?

2 个答案:

答案 0 :(得分:0)

  

Premature optimization is the root of all evil(唐纳德克努特)

您可以使用单个数据库轻松处理数百万用户,因此在社区规模庞大之前,这不会成为问题。当您到达该步骤时,您可以切换到更具伸缩性的数据库解决方案,如Cassandra

话虽如此,请考虑Brad Christie的评论,并使用合理的身份管理,不会不必要地破坏您的数据库。

答案 1 :(得分:0)

“很长一段时间”是主观的,取决于很多因素。对于小型社区网站,您可能不会遇到与您所描述的方法有关的任何问题。尽管如此,它仍被视为最佳实践,并且如果您使用适当的索引,将显着加快查询速度。应该对要查询的列(例如用户ID)编制索引。不使用索引意味着MySQL必须读取表中的每条记录,并检查它是否符合您的标准。

本文可能对您有用:

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

此外,如果您担心在数据集增长时网站将如何执行,请考虑使用一堆虚拟数据填充它并运行一些测试。该站点将帮助您生成要放入数据库的大量数据。

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

最后,如果页面不是特定于某个人或一小群人,请考虑使用更通用的存储桶进行访问控制。例如,如果只有管理员可以查看页面,则将该页面绑定到“admin”权限并记下哪些用户是管理员。然后,您可以快速检查特定人员的用户类型,并决定是否向他们显示该页面。此类系统通常称为访问控制列表(ACL)。

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