Czy baza danych dla wielu dzierżawców:
- Serwer DB, który ma inną (identyczną) bazę danych / schemat dla każdego klienta / najemcy ?; lub
- Serwer DB, który ma bazę danych / schemat, w której klienci / najemcy współużytkują rekordy w tych samych tabelach?
Na przykład, zgodnie z Opcją 1 powyżej, mogę mieć serwer MySQL na, powiedzmy mydb01.example.com
, i może mieć w nim customer1
bazę danych. Ta customer1
baza danych może mieć, powiedzmy, 10 tabel, które zasilają moją aplikację dla tego konkretnego klienta (Klient nr 1). Może także zawierać customer2
bazę danych zawierającą dokładnie te same 10 tabel, ale zawierającą tylko dane dla klienta nr 2. Może mieć customer3
bazę danych, customer4
bazę danych itd.
W Opcji # 2 powyżej istniałaby tylko jedna baza danych / schemat, powiedzmy myapp_db
, znowu z 10 tabelami (takimi samymi jak powyżej). Ale tutaj dane wszystkich klientów istnieją w tych 10 tabelach, dlatego też „dzielą się” nimi. A w warstwie aplikacji logika i kontrola bezpieczeństwa, do których klienci mają dostęp, które rekordy w tych 10 tabelach, i należy dołożyć wszelkich starań, aby Klient nr 1 nigdy nie logował się do aplikacji i nie widział danych Klienta nr 3 itp.
Który z tych paradygmatów stanowi tradycyjną bazę danych „wielu dzierżawców”? A jeśli nie, to czy ktoś może podać mi przykład (przy użyciu opisanych powyżej scenariuszy), czym jest baza danych dla wielu dzierżawców?
Odpowiedzi:
Obie koncepcje nazywane są wielodostępem, ponieważ jest to logiczna koncepcja „, w której jedno wystąpienie oprogramowania działa na serwerze i obsługuje wielu najemców” (z Wikipedii ). Ale to, jak wdrożysz tę koncepcję „fizycznie”, zależy od ciebie.
Oczywiście aplikacja potrzebuje koncepcji bazy danych, która pozwala oddzielić dane różnych dzierżawców, a ideą wielodostępności jest współdzielenie niektórych zasobów serwera (przynajmniej sprzętu) w celu lepszego wykorzystania zasobów i łatwiejszej administracji. Tak więc „DB dla wielu dzierżawców” to taki, który obsługuje to bezpośrednio , gdzie części modelu DB lub tabele są współużytkowane.
Mówiąc ściślej, możliwe jest zbudowanie aplikacji dla wielu dzierżawców z bazą danych niebędącą dzierżawą, zapewniając indywidualną instancję bazy danych dla klienta. Wyklucza to jednak współdzielenie dowolnych zasobów DB bezpośrednio między dzierżawcami, a warstwa aplikacji musi się upewnić, że odpowiedni dzierżawca jest podłączony do właściwej bazy danych.
źródło
Według Microsoft termin ma 3 potencjalne znaczenia (jedna baza danych dla wszystkich najemców lub jedna baza danych na najemcę).
Na przykład każdy klient byłby własnym najemcą.
Baza danych najemcy (klienta)
Wspólna baza danych, oddzielny schemat.
Udostępniona baza danych, wspólny schemat.
Istnieją zalety i wady dla każdego, dobrze wyjaśnione w tym artykule: https://msdn.microsoft.com/en-us/library/aa479086.aspx
Bonus: możesz myśleć o tym jak o kwaterach mieszkalnych (rażąco uproszczonych).
Każdy najemca ma własny dom. Mogą robić, co chcą, a jeśli się spali, tak naprawdę nie wpływa to na nikogo innego.
Każdy najemca jest w tym samym budynku, ale ma własne mieszkanie.
Wszyscy mieszkają w tym samym mieszkaniu, a wszystkie rzeczy są oznaczone karteczką, aby pokazać, kto jest właścicielem.
źródło