私たちは、ライブ Web サイトで低速のデータベースを操作するための最適なソリューションを見つけようとしています。
基本的なシステム アーキテクチャは次のとおりです。
- 遅い (一部の読み取りとほとんどの書き込みは高速ですが、数秒かかるものもあります) Postgres DB。これを制御することはできません。
- Postgres DB にアクセスするモノリシック オフライン システム。これを制御することはできません。
- Postgres DB にアクセスできる高速な内部サーバー。このサーバー用のソフトウェアを開発してインストールできます。
- Postgres DB にはアクセスできないが、内部サーバーにはアクセスできる LAMP スタックを実行する高速 Web サーバー。このサーバー用のソフトウェアを開発できます。
- 何からでもアクセスできる高速な MySQL データベース。私たちはこれを完全に管理しています。
Symfony 2 を使用して、Web サーバー上で実行する新しい Web アプリケーションを開発しています。
私たちの最初の計画は、RESTful API を作成して、Web アプリによって消費される内部サーバーに配置することでした。私たちが直面している主な問題は、Web アプリの速度が Postgres DB の速度によって制限されていることであり、これはユーザーにとって受け入れがたいものです。
この速度の問題を回避するための戦略を知っている人はいますか?
キャッシュは明らかな解決策であり、データがどれだけ最新である必要があるかについては確かに議論できますが、特定の状況では、完全に最新でなければなりません. たとえば、ユーザーがいくつかの変更を保存した場合、これらはすぐに表示されます。Postgres から非同期に更新する独自の高速データ ストアを持つ API を使用することを検討しました。次に、この高速ストレージですべての読み取りを実行し、それと Postgres の両方に書き込みをコミットできます。もちろん、心配なのはデータの一貫性と、システムの複雑さの増大です。
JSON-LD を使用してデータを表現することを検討しています。JSON-LD は、私たちが扱っているものに適しているためです。標準を使用することで、比較的新しいものではありますが、今後の主要なアーキテクチャの変更が容易になる可能性があります。ドキュメント ストアに直接配置できるため、プロセスが簡素化される可能性があります。
ここでの主な目標は次のとおりです。
- ユーザーに優れたエクスペリエンスを提供します。
- 保守可能でわかりやすいシステムを作成します。
推奨事項や提案は大歓迎です!