2011-11-14 21 views
2

私は現時点でCakePHPアプリケーションを開発しており、モデルの1つにいくつかの検証ルールを書いています。データベースに接続する量を制限する必要がありますか?

私は現時点でデータベースにチェックを行っていると感じており、これについての見解を得たいと思っています。

たとえば、関連するモデルがたくさんあるモデルに保存しています。そのため、保存操作ごとに異なる5つの外部IDを保存しています。すべてのIDが正しいことを確認するために、実際にはIDがデータベース内の正しいテーブルに存在することを確認するための検証規則があります。

他にもいくつかのバリデーションルールがありますが、あまり詳しく説明しない限り、すべてのデータが有効であることを確認するために、1回の保存操作で約10回データベースに当たると思います。

適用する必要がある制限はありますか、またはオーバーヘッドはかなり小さいですか?

おかげ

+0

具体的な記述がなければ、いずれにしても言い難い。 – Brad

+0

できるだけ多くの情報をPHPに保存して保存することが一般に良いと考えられています。毎回dtaabaseに連絡せずに操作を行うことができます。 –

+0

多くのSQLクエリを実行すると、読み込み時間が遅くなる可能性があります。または、少なくとも同じトランザクションでそれらを実行してみてください。エラーケーキが保存されず、保存関数からfalseを取得する場合は、2つのオプションのいずれかがすべてのidとin_array()を持ってくるか、db(制約)のいくつかの検証を行います。エラー – api55

答えて

0

時期尚早最適化はすべての悪の根源です。

アプリを公開してください。実在の人が本物の目的のためにそれを使用すると、あなたは本当に最適化する必要がある場所を見るためにベンチマークを行うことができます。

0

あなたが確立する接続は、正当な理由のためのもの(および検証はかなり高いがアップされている)場合、あなたが必要として接続しても大丈夫でしょう。しかし、これらのバリデーションを組み合わせることはできませんか?ストアドプロシージャを使用していますか?そうした場合、検証のバッチを1つのストアドプロシージャにまとめることができます。一度に複数の検証ルールを実行してから、複数の結果セットが必要になると期待するのはほぼ同じです(検証が失敗した場合にfalseを返すよりもいくつかの点で優れていますが、これらのバリデーションの依存関係)

私の記事を短縮するにはこれらの検証クエリを1つのストアドプロシージャにまとめることは可能でしょうか?

0

データベースが正しく設計されているかどうかを確認してください。情報が限られているため、実際にすべてのテーブルを通過する必要があるかどうかを判断するのは難しいです。しかし、通常、それを行う必要はありません。

また、データベースを不必要に押すことはあまり良い考えではありません。それはあなたのアプリケーションによって異なります。非常に高いパフォーマンスのアプリケーションが本当に必要ないなら、あなたは大丈夫かもしれません。読み取りのオーバーヘッドは、データベースがメモリキャッシュを行うほど悪くありません。書き込みは常により高価になります。特に、外部キーの制約がある場合。 dbが書き込みが有効かどうかをチェックします。

最良の方法は、論理と時間を使ってデータベースに "x"レコードを書き込むテストを作成することです。それは本当に問題であるかどうかを示すものです。

関連する問題