MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Tworzenie wielu najemców spring-data-mongodb

Istnieje kilka sposobów na oskórowanie kota. Zasadniczo wszystko sprowadza się do tego, na jakim poziomie chcesz zastosować najem.

Podstawy

Podstawowym podejściem jest powiązanie pewnego rodzaju klucza identyfikującego klienta na podstawie wątku, dzięki czemu można dowiedzieć się o kliencie, z którym ma do czynienia aktualny wątek realizacji. Zwykle osiąga się to poprzez wypełnienie ThreadLocal z pewnymi informacjami związanymi z uwierzytelnianiem, ponieważ zwykle można uzyskać najemcę od zalogowanego użytkownika.

Teraz, jeśli tak jest, istnieje kilka możliwości zastosowania wiedzy najemcy. Pozwolę sobie krótko opisać najczęstsze z nich:

Multi-tenancy na poziomie bazy danych

Jednym ze sposobów oddzielenia danych dla wielu klientów jest posiadanie indywidualnych baz danych na dzierżawcę. Podstawową abstrakcją Spring Data MongoDB do tego jest MongoDBFactory berło. Najprostszym sposobem jest nadpisanie SimpleMongoDbFactory.getDb(String name) i wywołaj metodę nadrzędną z nazwą bazy danych np. wzbogacony o prefiks najemcy lub podobny.

Wielu najemców na poziomie kolekcji

Inną opcją jest posiadanie kolekcji specyficznych dla najemców, np. za pomocą prefiksów lub postfixów najemcy. Ten mechanizm może być faktycznie wykorzystany przy użyciu języka Spring Expression (SpEl) w @Document collectionName adnotacji atrybut. Najpierw wyeksponuj prefiks najemcy za pomocą fasoli Spring:

 @Component("tenantProvider")
 public class TenantProvider {

   public String getTenantId() {
     // … implement ThreadLocal lookup here
   }
 }

Następnie użyj SpEL w swojej domenie typu @Document mapowanie:

 @Document(collectionName = "#{tenantProvider.getTenantId()}_accounts"
 public class Account { … }

SpEl pozwala odwoływać się do Spring beans po nazwie i wykonywać na nich metody. MongoTemplate (a tym samym abstrakcja repozytorium przechodnie) użyje metadanych mapowania klasy dokumentu, a podsystem mapowania oceni collectionName atrybut, aby dowiedzieć się o kolekcji do interakcji.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Niestandardowe kaskadowanie w Spring Data MongoDB

  2. Mongo Podawanie błędu zduplikowanego klucza w nieunikalnych polach

  3. Aktualizacja Mongoose nie aktualizuje się:{ ok:0, n:0, nModified:0 }

  4. Jak ustawić mongod.conf bind_ip z wieloma adresami ip?

  5. Rails + MongoMapper + pomoc dotycząca formularza EmbeddedDocument