Aynı veritabanı üzerinde birden fazla uygulama örnekleri

4 Cevap php

I'm writing an application that that I'm going to provide as a service and also as a standalone application. It's written in Zend Framework and uses MySQL.

Bir hizmet olarak sunmak ne zaman kullanıcıların sitemde kayıt ve customer1.mysite.com, customer2.mysite.com gibi subdomaininiz istiyorum.

Ben her kullanıcı için yeni bir veritabanı yaratmak değil, tek bir veritabanında her şeyi istiyorum.

But now I wonder how to do it better. I came up with two solutions: 1. Have user id in each table and just add it to WHERE clause on each database request. 2. Recreate tables with unique prefix like 'customer1_tablename', 'customer2_tablename'.

Which approach is better? Pros and cons? Is there another way to separate users on the same database?

Leonti

4 Cevap

Ben aksi takdirde tek bir veritabanı kullanarak herhangi bir nokta ancak, orada birlikte tüm tabloları tutmak sadık olacaktır. Ayrıca fizibil parça aşağı cross-site etkileşim çeşit izin anlamına gelir. Sadece ayırt alan (customer_number ya da her neyse) dizinleri koymak emin olun ve Tamam olmalıdır.

Tablolar gerçekten büyük ve yavaş alıyorsanız, table partitioning bakmak.

Bu verilerle yapmak niyetinde ne bağlıdır. Müşteri verileri paylaşmak yoksa, müşteri tarafından segmentlere daha iyi olabilir; Ayrıca, daha iyi performans alabilirsiniz.

Eğer yapısını değiştirmek istediğinizde, diğer taraftan, benzer bir yapıya sahip birçok tablolar sahip bir kabus olabilir.

Ben her kullanıcı için ayrı veritabanları kullanmanızı tavsiye ediyorum. Bunun için kod uygulama kolaylaştırır ve MySQL bakım yapar (tek hesabın göç, böylece hesap kaldırma ve.)

Hesapları veya hisse verileri üzerinden veri erişmek için gerekiyorsa bu kuralın tek istisnası olacaktır.

Bu bir çok kiracı uygulama olarak adlandırılan ve bir sürü insan onlara çalıştırılır; görmek

multi tenant tag

Bazı diğer insanların soruları için