Benim veritabanı sürücü sınıfları replikasyon (PHP) desteklemeli mi?

3 Cevap php

Şu anda veritabanı motorları için bir PHP uygulama ve sürücüleri (sınıflar) yazıyorum. Ben bir çoğaltma desteği (master-slave) yazmak gerekirse ben merak ediyorum? Ben yük dengeleme / çoğaltma desteklemek istiyorsanız benim proje veya sınıflar endişe gereken ne tür şeyler, bu biraz yeniyim, öyle mi? Oh ve bu MySQL ilgili.

3 Cevap

Bizim master-slave db kullanmak yolu, (veri biraz "yakalama" eğer hala farketmez) tüm raporlama için tüm "aktif kullanım" ve köle için ana kullanmaktır. İhtiyaçlarınıza bağlı olarak, var-hepsi-veri olabilir manipülasyon ve-her veri okuma köle meydana, ana meydana. Eğer ekler veya güncelleme engelleme olduğunda bu özellikle yardımcı olur. (Not: Ayrıca çok engelleme durmanıza yardımcı olur "eklemek gecikmiş" MySQL sözdizimi mümkünse, düşünün.)

Bildiğim kadarıyla bunun için PHP destekli olarak, gerçekten ihtiyacınız olan tüm çoklu (iki) veritabanı bağlantıları için temiz işleme tutmak, ve istediğiniz gibi ana (okuma / yazma) veya slave (SADECE OKUYUN) db bağlantısı kullanmaktır.

Eğer daha sonra Sınıf tek seferde en az birkaç bağlantılarını desteklemek gerekiyor, okumak ve yazmak için ana köleleri kullanacağız düşünüyorum.

Bunu yolu seçerseniz, sana sınıfını gönderebilir, size ben kullanılan API gösterecektir.

ShusterDb::getInstance('read')->select($sql); //makes sure this is a SELECT in the method. ShusterDb::getInstance('write')->scalar($sql);

Eğer sınıf gönderme açıksa Itay, ben bunu kullanarak muhtemelen / görme ilgi olacaktır.