database - 使用 Web 应用程序处理慢速数据库的策略

标签 database rest symfony architecture json-ld

我们正在努力找出在实时网站上处理慢速数据库的最佳解决方案。

基本的系统架构是这样的:

  • 慢(一些读取和大多数写入很快,其他需要几秒钟)Postgres 数据库。我们对此无法控制。
  • 访问 Postgres 数据库的独立离线系统。我们对此无法控制。
  • 可以访问 Postgres 数据库的快速内部服务器。我们可以为此服务器开发和安装软件。
  • 运行 LAMP 堆栈的快速网络服务器可能无法访问 Postgres 数据库,但可以访问内部服务器。我们可以为这个服务器开发软件。
  • 任何东西都可以访问的快速 MySQL 数据库。我们对此有完全的控制权。

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

我们最初的计划是创建一个 RESTful API 以放置在内部服务器上,供网络应用程序使用。我们面临的主要问题是 Web 应用程序的速度受到 Postgres 数据库速度的限制,这对用户来说是 Not Acceptable 。

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

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

我们正在探索使用 JSON-LD 来表示数据,因为它非常适合我们正在使用的内容,并且使用一个标准,尽管是一个相对较新的标准,应该可以缓解 future 的任何重大架构变化,这很可能发生。由于它可以直接放入文档存储中,因此可能会简化流程。

我们的主要目标是:

  • 为用户提供良好的体验。
  • 创建一个易于维护且易于理解的系统。

欢迎提出任何建议!

最佳答案

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

如果你不能改变缓慢的 Postgres 数据库,它必须是最新的,网站依赖它并且必须是最新的(在某些情况下),你有问题因为那是不可能的。如果 Postgres 数据库不需要最新,因为它只是被离线应用程序使用,您可以异步更新该数据库,并以能够提供必要性能的方式使用您的 MySQL 数据库。

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

关于database - 使用 Web 应用程序处理慢速数据库的策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24259969/

相关文章:

sql - 在 Visual C# 中连接到 SQL Server

wcf - 导致在 WCF 中返回 HTTP 错误状态

symfony - 动态更改 Symfony 投票策略

php - 使用原则保存多条记录并获取每条记录的 ID

python - 如何从数据库模型 __repr__ 键入 unicode

sql - 如何在sql数据库中对组合应用组合?

MySQL关系数据库外键

rest - 了解 OAuth2 流程

c# - REST 服务中的 POST 请求为空

php - "No identifier/primary key specified for Entity"- 扩展 FOS 用户