2010-06-24 60 views
9

Web/SaaS modeli aracılığıyla satılacak özel bir CRM çözümü geliştiriyorum. Bu çözümü kullanarak onlarca veya yüzlerce müşteriyi bekliyorum. MS SQL'i db motoru olarak kullanacağım.Birden Çok DB'ye Karşı Birden Çok Bileşen

Seçenek 1 tek bir DB'ye sahip olmak ve tablolarda bir TenantId sütununu, uygun bir dizini ve her db erişiminde 'where tenantId = {...}' değerini kullanın.

Seçenek 2, her istemci için ayrı bir DB'ye sahip olmaktır; bu, TenantId ve gerekliliklerin gerekliliğinden kaçınır.

Her müşterinin milyonlarca değil, yüz binlerce kayda sahip olacağını tahmin ediyorum.

Gördüğüm gibi, hangisini seçtiğimi seçtiğim toplam veri sayfası sayısı olacaktır. Karar, SQL'in birden çok DB'yi yönetmede daha iyi olup olmadığı veya Tenantıd ve endeksle tek bir DB olup olmadığına odaklanmıştır. Başlangıçta çözüm, tek bir DB sunucusunda çalışacak, ancak sonunda SAN'a geçecek.

Bu konuda herhangi bir görüşü var mı?

+1

Hangi yöntemle gittiğiniz ve neden gittiniz? –

cevap

4

Gözden geçirmek isteyebileceğiniz Multi-Tenant Data Architecture adlı ilginç bir MSDN makalesi var. Tüm farklı şekillerde veri mimarisi kararını etkileyen

sunmasını bekliyoruz kiracı sayısı, doğa ve ihtiyaçlar: Yazarlar belli bir yaklaşım diğerinden daha uygun olabilir nerede kısa analiz yapmak . Aşağıdaki soruların bazıları, daha fazla yalıtılmış yaklaşıma yöneltebilirken, diğerleri daha paylaşılan bir yaklaşımına doğru olabilir. hedeflemek bekliyoruz Kaç tane prospektif kiracı

  • ? hiçbir yerde otorite ile muhtemel kullanımı tahmin edememek mümkün olabilir, ancak büyüklükleri açısından düşünün: yüzlerce kiracı için bir uygulama oluşturuyor musunuz? Binlerce? Onlarca ? Daha? Daha büyük kiracı tabanınızın olmasını beklersiniz, daha fazla düşünmek isteyeceğiniz olasılıkla daha paylaşılan bir yaklaşım.

  • ne kadar depolama alanına sen işgal etmek ortalama kiracının veri bekliyorsunuz? Kiracıların bazılarının veya tümünün için çok büyük miktarlarda veri depolamasını beklerseniz, ayrı veritabanı yaklaşımı muhtemelen olabilir. (Gerçekten de, veri depolama şartlar zaten bir ayrı veritabanı modelini benimsemeye sizi zorlayabilir. Eğer öyleyse, çok daha kolay olacaktır uygulama tasarlamak için ancak bu şekilde bir ayrı veritabanı yaklaşımı geçmek için daha başlangıç Daha sonra.)

  • kaç eşzamanlı son kullanıcılar ortalama kiracı desteklemeye bekliyoruz mı? Numara ne kadar büyükse, daha uygun bir şekilde daha uygun bir yaklaşım son kullanıcı gereksinimlerini karşılayacaktır.

  • Eğer böyle başına kiracı yedek olarak herhangi başına kiracı katma değerli hizmetler, teklif ve yeteneğimizi onarmak için bekliyor musunuz? Bu tür hizmetler daha izole bir yaklaşımı aracılığıyla daha kolay sunar. "Paylaşılan yaklaşım" seçeneği 1 ve "İzole bir yaklaşım" olduğunu

Not senin durumunda, opsiyon 2'dir. İlk iki nokta söz konusu olduğunda iki tarafa da taraflı değilsiniz, bu yüzden kararımı son iki noktaya dayandırırım.

+0

Bağlantı çok ilginç –

0

Kiracılar arasında veri bağlamak zorunda kalmazsanız, birden çok veritabanına sahip olmanız en iyisi olur. Bakım daha kolay, kurulum daha kolay ve performans daha iyi olacak. Bir tabloda birden fazla kiracıdan veri alırken, büyük tabloların üzerinde tablo kilitleri ve arama sorguları olabilir ve büyük olasılıkla çözümünüzü yavaşlatabilir.

Tek bir db'yi paylaşmanın tek nedeni, çok fazla istemciniz ve istemci başına çok az sayıda satırınız olup olmadığını görür.