我知道这是一个非常泛化和主观的问题,如果它不符合StackOverflow的礼仪,请随意投票关闭它。但对我来说,值得一试 ;)
直到现在,我从未构建过高流量应用程序,因此我不了解(除了一些网上的阅读材料)有关扩展实践的信息。
如何设计一个数据库,在需要扩展时,我不必重构数据库结构或应用程序代码?
我知道开发(和优化)应该一步一步进行,当瓶颈出现时优化,而且在不知道将有多少用户以及他们如何使用数据库(例如读写比率)时,几乎不可能设计完美的结构,我只是在寻找一个好的起点。
制作一个准备好进行分区
和分片
扩展的最佳实践是什么,而必须绝对避免哪些黑客技巧
?
编辑一些关于我的应用程序的详细信息:
- 应用程序将作为多站点行为运行
- 我将为每个应用程序版本(db_0_0_1、db_0_0_2等)拥有一个数据库*
- 每个“站点”将在数据库中拥有一个模式*和一个可以访问自己模式的角色
- 应用程序代码将主要是PHP和一些Python(守护进程和维护任务)
- Web服务器可能是Nginx和lighttpd或node.js作为长轮询任务的支持(例如聊天)
- 缓存将使用memcached进行(加上apc用于与php代码严格相关的事情,因为它可以在php外部使用)