虽然我可以找到关于PHP + MySQL开发的几乎任何具体问题的答案,但我没有找到的一个资源是针对高级问题的好的解决方案。
我想要实现一个小型的留言板类型的系统,可以通过AJAX查询,但是它有太多的规范,不能由预构建的库来填充,而且我不需要关于如何实现和使用数据库的教程。
我要找的是一个资源,它可以为高级用户提供更好的解决方案,解决更复杂的问题,而不是“存储消息并打印最后10条消息”-style教程。
例如:我的网站将有每一个用户数的组页面,而私有组页面将有一个小的“墙”-like留言板。在设计这个特定的桌子时,我应该考虑什么?如何实现锁定?等。
当然,我不希望有一个教程来解决我的问题,但是我想要一个数据库驱动的网站的完整解决方案,这个解决方案可以被理解(不像WordPress --有点分散),而且实际上是有效的(不像你有时在参考书后面找到的完整解决方案)。
发布于 2009-06-22 23:19:51
我是一个.net的家伙,所以我将保持通用是我的解决方案。我不认为你需要的解决方案是语言特定的任何方式。您需要研究的是用于执行某些事情的设计模式和企业方法。成功的关键不在于(完全)通过数据库实现,而在于如何使用数据。要进行扩展,您需要能够快速写入(写入队列而不是数据库)和快速读取(在可能的情况下从缓存层读取而不是db)和快速搜索(从Lucene索引搜索而不是db)。许多人被挂在数据库上,他们这样做通常是正确的。它是应用程序数据存储和查询的中心部分。但它通常也是任何系统中最大的单一瓶颈之一。当然,将所有数据存储到db中,只是不要直接这样做。当然,只有在绝对必要时才从db...but读取和查询数据(使用索引来定位数据,然后从数据库读取数据)。
当您的应用程序与外部服务对话时,情况也是如此。以发送电子邮件为例。而不是通过连接到SMTP服务器并打包并发送email...stick来发送电子邮件,而是将消息打包并发送到队列中,并创建一个队列读取器来连接并通过SMTP发送电子邮件。这样,您的web应用程序继续顺利运行。
成功的关键是以性能为导向的研究和良好的建筑设计。查找领域驱动设计、控制反转、测试驱动开发、存储库模式、模型视图控制器、memcached、速度、队列、MSMQ、数据库邮件队列等。
发布于 2009-06-22 23:14:34
您会发现,您提到的所有东西(想必是“高级问题”)都是以深思熟虑的方式构建在一起的一系列相当简单的方法和技术。
锁定一个表以防止多个用户同时编辑是一个相当简单的问题。锁定问题已得到解决在这里无数次了。
至于将成员分配给组,这只是几个表之间的一对多关系。您将拥有“用户表”、“组表”和“用户到组”表。这是假设一个用户可以属于多个组。
通过在查询中进行几个小的连接,您可以从不同的用户那里获得特定组的帖子,从而填充特定组的版面。此外,您可以通过调整用户在该组中的存在来将该板私有化,以便读取该面板--这只是对“用户到组”表的快速查询,以查看该UserID是否与该GroupID一起存在。
https://stackoverflow.com/questions/1029843
复制相似问题