Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 我应该使用什么技术来创建高性能的可伸缩web应用程序?_Database_Performance_Scalability - Fatal编程技术网

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上托管我的站点

我想回答几个具体问题

请随意添加您认为有帮助的其他内容。我的主要目标是学习创建高性能企业应用程序的最新技术。此外,我很好奇,比如说,升级我的亚马逊盒子,我会注意到性能提高了多少。和DDD,关于问题:

  • facebook是如何在打字时如此快速、几乎即时地返回搜索结果的

  • facebook如何在聊天窗口上方实现状态更新。我可以很容易地将一些东西组合在一起,每5秒调用一个后端脚本或其他什么,并更新UI,但我不确定我会遇到什么类型的性能问题,或者facebook是否就是这样做的

  • facebook状态更新如何聚合并仅与好友和/或订阅源首选项相关

  • MySQL是否不再是速度和可扩展性方面的首选数据库

  • 我应该阅读哪些资源和书籍?我每天都在读我已经在用的东西。。。但我想把精力更好地集中在可能更有用的事情上

  • 一般来说,什么技术的“堆栈”,包括语言、服务器和数据库,将用于创建类似facebook的东西(请注意,我不想创建社交网站)

  • 与编写定制的解决方案相比,使用symfony2这样的框架是否会对性能造成很大影响?(我知道代码的质量显然很重要,但一般来说)

  • 如果你不能回答所有这些问题,那么数字3、4和5可能是最重要的


    提前谢谢。愉快的编码。

    可伸缩性是指数据的位置、检索方式和更新方式。实现语言几乎是无关紧要的

    如果你有一个单一的真相来源,它立即成为瓶颈。这可能还没有那么糟糕。如果瓶颈是50000 QPS,您可能暂时不需要修复它

    你问了很多关于Facebook的问题,然后解释说你不想建立一个。扩展一个系统就是选择一种适合您试图提供的数据的设计。因此,除非你给我们一些想法,你想建立什么,帮助你设计缩放是相当困难的

    作为一个简单但具体的例子,Google的websearch和GMail系统的数据存储设计完全不同。两者都非常快,但它们的设计不同,因为数据、使用模式、更新和特性都非常不同

    要开始数据设计过程,请先了解您需要什么样的数据。然后想想

  • 全局一致性—是否所有用户都需要查看一致的数据视图?如果是这样的话,扩展将非常困难。(想想Facebook、GMail和Stackoverflow——在这些情况下,你和我不需要看到即时一致的数据视图)

  • 耐久性-丢失更新是否可以接受?如果没有,则在告诉调用方请求已完成之前,您需要保留所有数据(在足够多的不同位置,硬件丢失不是问题,记住您不愿意丢失更新)

  • 性能-用户的性能需求是什么

  • 在大多数系统中,您只能设计获得这三件事中的两件,而您必须牺牲第三件来实现这一点


    画一张你的设计图。指向上面的每个框(框是计算机、路由器、数据库实例、磁盘、内存中的数据结构等,而不是表或数据库行)。如果答案是“1”,那么您的设计是不可伸缩的。如果答案是“尽可能多,但它们需要同步”,那将是您的扩展挑战;再看一看上面的编号点。

    这确实让我思考。在我的应用程序中,有些领域应该具有全局一致性。这通常是通过某种类型的javascript计时器完成的,该计时器根据特定条件检查后端是否有新的更新。有一个领域我非常有兴趣了解更多。也就是说,facebook的搜索是如何在几乎瞬间恢复的(并在键入时检索结果?)我想你误解了什么是全球一致性。这是一个系统的属性,在该系统中,任何给定时刻的所有外部交互都显示相同的数据视图。例如,你和我在同一天的10:00:00.000查看(比如)推特,必须看到相同的推特。相反,如果我在你之后8秒才看到用户@foobar发布的最新推文,那么只要我真的能看到它,那又有什么害处呢?用户通常更关心性能和数据持久性。