sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvad er den anbefalede tilgang til databaser med flere lejere i MongoDB?

Jeg har det samme problem at løse og overvejer også varianter. Da jeg har mange års erfaring med at skabe SaaS multi-tenant-applikationer, ville jeg også vælge den anden mulighed baseret på min tidligere erfaring med relationsdatabaserne.

Mens jeg lavede min research, fandt jeg denne artikel på mongodb-supportwebstedet (langt tilbage tilføjet, siden det er væk):https://web.archive.org/web/20140812091703/http://support.mongohq.com/use-cases/multi -lejer.html

Fyrene erklærede at undgå 2nd optioner for enhver pris, hvilket som jeg forstår ikke er specielt specifikt for mongodb. Mit indtryk er, at dette er gældende for de fleste af de NoSQL-dbs, jeg undersøgte (CoachDB, Cassandra, CouchBase Server, osv.) på grund af databasedesignets specifikationer.

Samlinger (eller buckets eller hvordan de kalder det i forskellige DB'er) er ikke det samme som sikkerhedsskemaer i RDBMS, selvom de opfører sig som beholder for dokumenter, de er ubrugelige til at anvende god lejeradskillelse. Jeg kunne ikke finde NoSQL-database, der kan anvende sikkerhedsbegrænsninger baseret på samlinger.

Selvfølgelig kan du bruge mongodb rollebaseret sikkerhed til at begrænse adgangen på database/server niveau. (http://docs.mongodb.org/manual/core/authorization/)

Jeg vil anbefale 1. mulighed, når:

  • Du har tid og ressourcer nok til at håndtere kompleksiteten af ​​designet, implementeringen og testen af ​​dette scenarie.
  • Hvis du ikke kommer til at have store forskelle i struktur og funktionalitet i databasen for forskellige lejere.
  • Dit applikationsdesign vil tillade lejere kun at foretage minimale tilpasninger under kørsel.
  • Hvis du vil optimere pladsen og minimere brugen af ​​hardwareressourcer.
  • Hvis du skal have tusindvis af lejere.
  • Hvis du vil skalere ud hurtigt og til en god pris.
  • Hvis du IKKE vil sikkerhedskopiere data baseret på lejere (behold separate sikkerhedskopier for hver lejer). Det er muligt at gøre det selv i dette scenarie, men indsatsen vil være enorm.

Jeg ville gå efter variant 3, hvis:

  • Du vil have en lille liste over lejere (flere hundrede).
  • Forretningens specifikationer kræver, at du er i stand til at understøtte store forskelle i databasestrukturen for forskellige lejere (f.eks. integration med 3. parts systemer, import-eksport af data).
  • Dit applikationsdesign vil give kunder (lejere) mulighed for at foretage væsentlige ændringer i applikationens køretid (tilføje moduler, tilpasse felterne osv.).
  • Hvis du har nok ressourcer til hurtigt at skalere ud med nye hardwarenoder.
  • Hvis du er forpligtet til at beholde versioner/sikkerhedskopier af data pr. lejer. Gendannelsen vil også være let.
  • Der er juridiske/regulative begrænsninger, der tvinger dig til at beholde forskellige lejere i forskellige databaser (selv datacentre).
  • Hvis du vil udnytte mongodb's out-of-the-box-sikkerhedsfunktioner fuldt ud, såsom roller.
  • Der er store forskelle med hensyn til størrelse mellem lejere (du har mange små lejere og få meget store lejere).

Hvis du poster yderligere oplysninger om din ansøgning, kan jeg måske give dig mere detaljerede råd.



  1. Sådan administreres konfigurationsskabeloner til dine databaser med ClusterControl

  2. Sagen om MongoDB hashed-indekser

  3. Overførsel af modelparametre til en mangustmodel

  4. Automatisering og administration af MongoDB i skyen