Nerede "Load Balance" do

3 Cevap php

The Problem: bir ORM kullanarak inşa Nesne modelleri genellikle tek bir eylemi gerçekleştirmek için birden fazla sorguları gerçekleştirmek gerekir. Örneğin "get" eylem iç içe geçmiş bir nesne yapıya sahip, özellikle birden çok tablodan bilgi çekme olabilir. Karmaşık talepleri bu sorgular ekleyebilirsiniz ve veritabanı size elle SQL yazıyormuş olsaydı önce uzun engellemeye başlar.

The Question: Nerede you yük denge ORM yapılması gereken sorgu sayısını azaltmak için, ve daha da önemlisi why did you choose this approach? ayrı modelleri var mı yapmak bağlam bağımlı veri yüklemek için, ya da veri denetleyicisi yüklemek hangi belirtebilirim? Ya da başka bir şey mi?

3 Cevap

Ben bir OO-dostu bir şekilde veri veri için bir arayüz sağlamak için, Domain Model desen kullanmanızı öneririz. Alan Model sınıflar içindeki kalıcılık uygulanmasının bir parçası olarak, ORM ve SQL bir karışımını kullanmak için uygun bulunuyor.

Örneğin, tek bir tabloya karşı bazı basit sorguların olacak. Bunun için uygun bir ActiveRecord deseni kullanın. Eğer tarif Ama, aynı zamanda genellikle daha karmaşık ilgili veriler için birden fazla tablo karşısında bazı karmaşık sorguları gerekir. ActiveRecord bu durumda bir beceriksiz bir çözümdür, yani düz SQL kullanın. Eğer JOIN veya GROUP BY gibi ilişkisel operatörleri ile karmaşık bir sorgu gerekir zaman en iyi araçtır.

@ Pestaa başka iyi bir araçtır önbelleğe bahseder. Burada düşünebilirsiniz başka biri: Identity Map. Nokta birden araçları öğrenmek ve bir herhangi bir durumda en iyi olduğu konusunda düşünmek gerektiğidir.

Her durum için tek desen kullanmak çalışıyorum birinci vitese her yerde araba gibidir.

Geliştirme hızlandırmak için - ORM iyi bir neden için gerçekten yoktur.

Performans benim için bir sorun olursa, ben yerine yerine geri ve sabit kodlama SQL bir adım alarak bazı önbelleğe alma mekanizmaları uygulamak istiyorum.

Bunun bir çok ORM felsefesini ve özelliklerini bağlıdır. Ama sizin ORM ve uygulama geri kalanı arasındaki modeli sınıfları iyi bir dizi var varsayarak, aşağıdakileri yapabilirsiniz:

  1. Çoğu için derinlik doğru miktarda sunabilmek modellerinde yöntemler sağlar. ORM verimli şeyleri belirtmek izin vermezse (bu lüks varsa), farklı bir ORM düşünün
  2. Plan ve önbelleğe alma uygulamak. Bir veri merkezli bağlamında sözettiğimize, bu modelde verileri önbelleğe alma yararlanarak / yazma anlamına gelir.
  3. Bölmek için bir plan yazıyor okur var. Ya model veya ORM yapılandırmasında. Lütfen darboğaz salt okunur köle bir çete oluşturmak için bazı çoğaltma kullanarak, okumasına özellikle son derece yararlı olabilir. Bunun için planı yoksa Ancak, kolayca bir ağrı bir konumda kendinizi tasarlayabilirsiniz.