Aynı MySQL veritabanında birden fazla site

2 Cevap php

Ben aynı veritabanı tabloları 20 veya daha fazla siteler var planlıyorum.

Like a structure similar to this: cms_config cms_pages cms_users cms_modules

Ben bu tabloların her bir customer_id sütunu olması gerektiğini düşünüyordum, bu yüzden kolayca verilen müşteri için satırları seçin ve diyebiliriz. Ama bu defa, bellek kullanımı ve tüm bu şeyler yüklemek için geldiğinde bunu yapmanın en iyi yolu nedir?

Ben güncelleme ve düzeltmek için kolay bir kurulum istiyorum, bu yüzden kötü bir fikir olacağını aynı belirtilen yapıda ayrı veritabanlarını çalıştıran düşündüm?

2 Cevap

Eğer bakım sorumlu iseniz, aynı veritabanında her şeyi alarak, güncellemeler, bakım ve yedekleme yapmak için kolay yoludur.

(Her bir müşteri veritabanı kullanıcı her müşteri verilerine erişim olurdu çünkü / yazma cms_pages okumak mümkün olma gerçeği ile) her veritabanı (bit) bir yüksek bakım maliyeti fiyata artar güvenlik ve gizlilik ayrılmış olması. Daha hızlı, kendi sunucusuna beklentilerini outgrew müşteri taşımak nerede ayrılmış veritabanları olması da, performans ölçekleme kolaylaştırır. Unutmayın güncellemeler ve yedekleme otomatik olabilir, böylece bir anlaşma büyük değildir.

Performans akıllı (dizin tarama sefer çok sütun indeksleri kullanılarak hafifletilebilir bile, sayfaların toplam miktarı ile orantılı büyüyecek çünkü.), Birçok bilgiye sahip olan müşteriler daha az veri ile müşterilerinin performansını etkileyecektir

Bu hepsi arkadaş ya :-) kendi veritabanı kullanıcı adı bulmak asla çok fazla trafik ile küçük siteler olacaktır emin olmadıkça, bu tür, müşteri başına ayrı bir veritabanı var ve bedelini ödemek mantıklı.

Bu çok kiracı mimarisi denir. Bu uygulama çeşitli yolları vardır. Eğer uygun bir veritabanı kütüphanesi oluşturmayı biraz zaman yatırım Eğer (ideal) tüm sorgularda tenantId kriterleri enjekte tüm sorguları yeniden bu olabilir. (Tüm sorgular oluşturduğunuz db lib tarafından geçirilen sürece) Her kiracı, sadece kendi veri erişimi olacak biliyorum bu şekilde.

Başka bir sorun uygun veritabanı dizin oluşturmaktır. Sık sık size bakmak customerId / tenantId sütunun + alan (lar) ile çok sütun dizin oluşturmak zorundasınız.