这是我的应用程序:
当用户尝试从我的网站访问X时,他会被提供服务并记录他的请求(他的用户名)。 他每天只能提出10份请求/服务。
现在我可以毫无问题地打开,读取,写入mysql数据库,但我正在考虑使用更少资源的东西,这是我的想法:
不是连接到数据库,而是为名为<date>_<username>.txt
的用户创建本地文件,例如:
2011-06-16_stackoverflow.txt
然后只是存在一个文件,如果是,打开文件,读取访问权限,如果&lt; 10,allow,和++ 1。 (每天我都会根据日期删除最后几天的文件)
对于大约40,000人使用数据库,这不是一个更少的资源解决方案吗?
或者仍然建议使用DB吗?
谢谢!
答案 0 :(得分:4)
过早优化失败。最有价值的资源是你的时间。
使用数据库。它将更简单,更一致,更易于维护或扩展。记住:在出现问题之前没有问题。
快乐的编码。
答案 1 :(得分:3)
老实说,如果你只是在一天内查看请求,我会说Memcached。可能比你建议的两个选项都快,而且设置起来也不是很难。所有操作都在O(1)时间内完成。
或者,DB也可以。就个人而言,我会避免使用您概述的方式对文件执行此操作 - 检查文件,打开文件,读取文件,重写文件,关闭文件的开销......所有更复杂,可能更多开销密集而不仅仅是点击数据库。
答案 2 :(得分:3)
这是一个有趣的问题。但正如您所知道或将会知道的, 磁盘访问 是应用程序中成本最高的元素。在这两种情况下,服务器/应用程序都将具有磁盘访问权限,但对于数据库服务器,它将涉及严格的优化。
一开始,使用您自己的系统将比数据库系统快得多,但构建应用程序需要大视野。
如果有一天,您的应用程序将为付费用户提供更多访问权限,该怎么办?知道哪些用户最常使用您的服务不是很有趣吗?有数据来定义商业报价?在这种情况下,有关 可查询 的日志记录信息将对您有所帮助。
如果明天很多用户开始使用您的应用程序,那么您的I / O将会饱和。再一次,数据库服务器有几件事来防止这种行为,例如缓存。 或者想象一下,您的应用程序部署在多台服务器上,您打算怎么做?
另一个原因可能是服务器迁移。您还必须在progres期间移动文件。但是,嘿,等等,从linux / unix服务器转到Windows服务器将是一个非常有趣的任务。 (讽刺)
...
那里有男人的理由。你爱怎么做就怎么做。这是你的申请。两者都是可行的,一个是标准的,另一个是自制的。没有人能告诉你该怎么做。可以肯定的是,你正是因为正确的理由而这样做的! ;)
答案 3 :(得分:2)
我建议使用数据库,因为它可以让您轻松创建没有任何PHP代码的报告。对于你正在做的事情,文件和数据库之间不会有任何明显的性能。
答案 4 :(得分:1)
你绝对应该使用数据库。这是一种更简单,更直观的解决方案,在您同时拥有数千名在线用户之前,性能不会成为问题。