我们正在尝试找出在实时网站上使用慢速数据库的最佳解决方案。
基本的系统架构是这样的:
- 慢(一些读取和大多数写入很快,其他需要几秒钟)Postgres DB。我们无法控制这一点。
- 一个访问 Postgres DB 的单片离线系统。我们无法控制这一点。
- 可以访问 Postgres 数据库的快速内部服务器。我们可以为此服务器开发和安装软件。
- 运行 LAMP 堆栈的快速 Web 服务器,它可能无法访问 Postgres 数据库,但可以访问内部服务器。我们可以为这个服务器开发软件。
- 任何东西都可以访问的快速 MySQL 数据库。我们可以完全控制这一点。
我们正在使用 Symfony 2 开发一个新的 Web 应用程序以在 Web 服务器上运行。
我们最初的计划是创建一个 RESTful API 放在内部服务器上,供 Web 应用程序使用。我们面临的主要问题是 Web 应用程序的速度受到 Postgres DB 速度的限制,这是用户无法接受的。
有谁知道解决这个速度问题的任何策略?
缓存是显而易见的解决方案,我们当然可以讨论数据的最新程度,但在某些情况下,它必须绝对是最新的。例如,如果用户保存了一些更改,这些更改应该立即出现。我们已经考虑让 API 拥有自己的快速数据存储,它从 Postgres 异步更新。然后,我们可以在这个快速存储上执行所有读取,同时向该存储和 Postgres 提交写入。担心的当然是数据的一致性和系统复杂性的增加。
我们正在探索使用 JSON-LD 来表示数据,因为它非常适合我们正在使用的内容,并且使用一个标准,尽管是一个相对年轻的标准,应该可以缓解任何可能发生的重大架构变化。由于它可以直接放入文档存储中,因此可能会简化该过程。
我们的主要目标是:
- 为用户提供良好的体验。
- 创建一个可维护且易于理解的系统。
任何建议或建议都将受到欢迎!