我们正在尝试找出在实时网站上使用慢速数据库的最佳解决方案。

基本系统架构是这样的:

  • 慢(某些读取和大多数写入速度很快,而其他读取则需要数秒钟)Postgres DB。我们对此无能为力。
  • 用于访问Postgres DB的整体脱机系统。我们对此无能为力。
  • 可以访问Postgres DB的快速内部服务器。我们可以为该服务器开发和安装软件。
  • 运行LAMP堆栈的快速Web服务器,该服务器可能无法访问Postgres DB,但可以访问内部服务器。我们可以为此服务器开发软件。
  • 可以由任何人访问的快速MySQL数据库。我们对此拥有完全的控制权。

  • 我们正在开发一个新的Web应用程序,以使用Symfony 2在Web服务器上运行。

    我们最初的计划是创建一个RESTful API,使其位于内部服务器上,并由Web应用程序使用。我们面临的主要问题是Web应用程序的速度受到Postgres DB速度的限制,这对于用户来说是无法接受的。

    有人知道解决此速度问题的任何策略吗?

    缓存是显而易见的解决方案,我们当然可以讨论数据的最新需求,但是在某些情况下,它必须是最新的。例如,如果用户保存了一些更改,则这些更改应立即显示。我们考虑过让API具有自己的快速数据存储区,并从Postgres异步更新。然后,我们可以在此快速存储上执行所有读取,将写入同时提交到Postgres。当然,担心的是数据的一致性和系统复杂性的增加。

    我们正在探索使用JSON-LD来表示数据,因为它非常适合我们正在使用的数据,并且使用标准(尽管相对较年轻)可以缓解 future 可能发生的任何重大架构更改。由于可以将其直接放入文档存储中,因此有可能简化该过程。

    我们的主要目标是:
  • 为用户提供良好的体验。
  • 创建一个可维护且易于理解的系统。

  • 任何建议都将受到欢迎!

    最佳答案

    我认为要问的主要问题是:为什么Postgres DB这么慢?同样从您的解释中,还不清楚所有这些系统在做什么以及依赖/要求是什么。例如,是否需要PostgresDB中的数据是最新的?那是主数据库吗?它是用于整体离线系统的集成数据库吗?

    如果您无法更改速度较慢的Postgres DB,则它必须是最新的,并且网站依赖它,并且还必须是最新的(在某些情况下),因此您会遇到问题,因为这不会不可能的。如果Postgres DB不需要最新,因为离线应用程序仍在使用它,则可以随意更新该DB并使用MySQL数据库,从而为您提供必要的性能。

    鉴于您计划使用JSON-LD,我很想听听有关您正在构建的系统的更多信息。您可以分享更多信息吗?

    08-25 10:22
    查看更多