Database 我应该使用什么技术来创建高性能的可伸缩web应用程序?
了解一下我目前的情况:Database 我应该使用什么技术来创建高性能的可伸缩web应用程序?,database,performance,scalability,Database,Performance,Scalability,了解一下我目前的情况: 我对OOP PHP有相当的了解 我对MySQL有很好的理解,它是我选择的数据库(主要是因为它是我所知道的全部) 我对Symfony2+学说有很好的理解 我当前的网站使用Elastica(用于弹性搜索的PHP库)。。。尽管我注意到,与facebook搜索相比,结果的返回速度非常慢 我将jQuery用于前端开发 我对html/css有很好的理解 我在AmazonEC2上托管我的站点 我想回答几个具体问题 请随意添加您认为有帮助的其他内容。我的主要目标是学习创建高性能企业应
- 我对OOP PHP有相当的了解
- 我对MySQL有很好的理解,它是我选择的数据库(主要是因为它是我所知道的全部)
- 我对Symfony2+学说有很好的理解
- 我当前的网站使用Elastica(用于弹性搜索的PHP库)。。。尽管我注意到,与facebook搜索相比,结果的返回速度非常慢
- 我将jQuery用于前端开发
- 我对html/css有很好的理解
- 我在AmazonEC2上托管我的站点
提前谢谢。愉快的编码。可伸缩性是指数据的位置、检索方式和更新方式。实现语言几乎是无关紧要的 如果你有一个单一的真相来源,它立即成为瓶颈。这可能还没有那么糟糕。如果瓶颈是50000 QPS,您可能暂时不需要修复它 你问了很多关于Facebook的问题,然后解释说你不想建立一个。扩展一个系统就是选择一种适合您试图提供的数据的设计。因此,除非你给我们一些想法,你想建立什么,帮助你设计缩放是相当困难的 作为一个简单但具体的例子,Google的websearch和GMail系统的数据存储设计完全不同。两者都非常快,但它们的设计不同,因为数据、使用模式、更新和特性都非常不同 要开始数据设计过程,请先了解您需要什么样的数据。然后想想
画一张你的设计图。指向上面的每个框(框是计算机、路由器、数据库实例、磁盘、内存中的数据结构等,而不是表或数据库行)。如果答案是“1”,那么您的设计是不可伸缩的。如果答案是“尽可能多,但它们需要同步”,那将是您的扩展挑战;再看一看上面的编号点。这确实让我思考。在我的应用程序中,有些领域应该具有全局一致性。这通常是通过某种类型的javascript计时器完成的,该计时器根据特定条件检查后端是否有新的更新。有一个领域我非常有兴趣了解更多。也就是说,facebook的搜索是如何在几乎瞬间恢复的(并在键入时检索结果?)我想你误解了什么是全球一致性。这是一个系统的属性,在该系统中,任何给定时刻的所有外部交互都显示相同的数据视图。例如,你和我在同一天的10:00:00.000查看(比如)推特,必须看到相同的推特。相反,如果我在你之后8秒才看到用户@foobar发布的最新推文,那么只要我真的能看到它,那又有什么害处呢?用户通常更关心性能和数据持久性。