私は、単純なパフォーマンスとチューニング以上に成長し始めているウェブサイトを運営しています。バックエンドとしてのMySQLを備えたPHPアプリケーションです。 MySQLが適切にチューニングされ、コードが最適化されています。リレーショナルデータベースから非リレーショナルDBへのデータの非正規化のベストプラクティス
私は物事をスピードアップするためにある種の非正規化を使用できることを知っています。
ebayやAmazonと似たサイトがあるとします。データベースには、関連する情報(売り手、製品を購入した顧客、都市、州など)があります。これは、リレーショナルデータベースの複数のテーブルであり、この方法で良好なクエリーを作成することができます。しかし、たとえば、ホームページでは、(MongoDBなどの)非正規化文書を1つだけ持つことができます。これに似た最新の製品で収集、denormalied、次のようになります。この方法で
products = {
{
id:13,
name:"Some product",
city:"aCity",
state:"aState",
price:"10"
},
{
id:123,
name:"another product",
city:"aCity",
state:"aState",
price:"10"
}
}
、私は(すべての関与ジョインして)、そのコレクションの代わりに、MySQLデータベースを照会でき、物事は本当に速い得ることができます。
ここに質問があります。そのデータをいつどのように非正規化しますか? たとえば、挿入時にデータを非正規化したいと思うかもしれません。
私の "create-product.php"(単純に言えば)です。私はmysqlのためにすべての "挿入"を行うことができ、その後、私はMongoのコレクションに保存を行うことができます。
また、サーバーでプログラムを実行するだけでも可能です。または最新の製品を探すためにいくつかのcronを作ってください。
これらはすべて可能性があります。職業はなんですか?あなたのexpirienceは何ですか?
ありがとうございます。
シンプルなキャッシュを探しているようです。 – hakre
私はそれをhakreしようとしました。しかし、Mongoを好む、それはmemcacheほど高速ではありませんが、それは永続的です、私は今必要なものです。ありがとう – santiagobasulto
チャーチのバックエンドをmongoに変更して試してみてはいかがですか? – hakre