【问题标题】:general question about database关于数据库的一般问题
【发布时间】:2011-07-08 07:51:18
【问题描述】:

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

【问题讨论】:

  • 网站在运行什么?我假设 PHP 给你提到 MySQL?我会在必要时向会话添加一个“授权”令牌,并保留它,这样它就不会在每次访问页面时都保持 ping 通。

标签: mysql scalability


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    “很长一段时间”是主观的,取决于许多因素。对于小型社区网站,您描述的方法可能不会遇到任何问题。尽管如此,它仍被认为是最佳实践,如果您使用适当的索引,它将显着加快查询速度。将要查询的列,例如用户 ID,应该被索引。不使用索引意味着 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多