sql >> Databáze >  >> NoSQL >> MongoDB

Vytvoření spring-data-mongodb pro více nájemců

Existuje několik způsobů, jak kočku stáhnout z kůže. V podstatě vše závisí na tom, na jaké úrovni byste chtěli nájem uplatnit.

Základy

Základním přístupem je svázat určitý druh klíče identifikujícího zákazníka na bázi jednotlivých vláken, abyste mohli o zákazníkovi zjistit, kterým se aktuální vlákno provádění zabývá. Toho se obvykle dosáhne vyplněním ThreadLocal s některými informacemi souvisejícími s ověřováním, jak obvykle můžete odvodit tenanta od přihlášeného uživatele.

Nyní, pokud je to na místě, existuje několik možností, kde uplatnit znalosti nájemce. Dovolte mi stručně nastínit ty nejběžnější:

Multi-tenancy na úrovni databáze

Jedním ze způsobů, jak oddělit data pro více klientů, je mít jednotlivé databáze na klienta. Základní abstrakcí Spring Data MongoDB je MongoDBFactory rozhraní. Nejjednodušší způsob je přepsat SimpleMongoDbFactory.getDb(String name) a zavolejte rodičovskou metodu s názvem databáze, např. obohacené o předponu nájemce nebo podobně.

Multi-tenancy na úrovni sbírky

Další možností je mít pro nájemce specifické sbírky, např. prostřednictvím pre- nebo postfixů nájemců. Tento mechanismus lze ve skutečnosti využít pomocí jazyka Spring Expression (SpEl) v @Document collectionName anotace atribut. Nejprve vystavte předponu tenanta prostřednictvím Spring bean:

 @Component("tenantProvider")
 public class TenantProvider {

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

Poté použijte SpEL ve vaší doméně typu @Document mapování:

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

SpEl vám umožňuje odkazovat na jarní fazole jménem a provádět na nich metody. MongoTemplate (a tedy abstrakce úložiště tranzitivně) použije mapovací metadata třídy dokumentu a mapovací subsystém vyhodnotí collectionName atribut, abyste se dozvěděli o sbírce, se kterou chcete komunikovat.



  1. Pokud je Redis single Threaded, jak může být tak rychlý?

  2. Databáze klíčů a hodnot s klientem Java

  3. Možnost Redis-cli --csv (export do csv)

  4. Instalace a spuštění MongoDB na OSX