DB システムが重要になるアプリを構築しています。その価値はすべてデータに含まれるため、スケーラブルである必要があります。
私はライブ投票システムを作っています。
私は SQL と MongoDB に慣れているので、それはほとんど決定要因ではありません (ただし、最近は MongoDB 構造と JS の方が好きな傾向があります :))
しかし、私がウェブで読んだすべてのことから、私はまだ自分の決定に不快感を覚えています.
私がやりたいことは、両方の利点を組み合わせることです。
- オブジェクト (ユーザー、アイテム、コメントなど) の SQL ドキュメントがない
- リレーションシップ用の SQL テーブルを持つ (テーブル User-Items、User-Comments など)
- 投票があるたびに、または一定の間隔で投票結果を複製すると、noSQL ドキュメントになります (投票結果の表示でも速度を上げるため)。
私が見る大きな利点は次のとおりです。
- ドキュメントをクエリする場合 (例: ユーザーが自分のプロファイルを表示する場合)、NoSQL のすべての利点 (速度、すべてが 1 か所にある、スキーマの柔軟性など) を利用できます。
- 統計 (例: 投票数) を行う場合、SQL のすべてのメリットを利用できます
- 並列化: SQL で投票を取得し、aSync モードでドキュメントを取得できます
- 読むのは速く、書くのは遅い (私の場合は問題ではない)
- 関係の整合性は常に維持されます
私の質問は次のとおりです。
- そうすることは良い習慣ですか?ウェブはそれについてかなり恥ずかしがり屋のようです
- DB負荷が高い場合でも、ピーナッツを最適化していますか? (ドキュメントのフェッチと完全な SQL および select * from table where primary_key = XXX などのクエリとの比較)