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

mongoDB-alternativer til fremmednøglebegrænsninger

MongoDB har ingen kaskadende sletninger. Når din applikation sletter data, er den også ansvarlig for selv at fjerne eventuelle refererede objekter og eventuelle referencer til det slettede dokument. Men normalt når du bruger on delete i en relationsdatabase har du et tilfælde af sammensætning, hvor et overordnet objekt ejer et eller flere underordnede objekter, og underordnede objekter er meningsløse uden forælderen. I den situation opfordrer MongoDB til indlejring i stedet for at henvise a> . Det betyder, at du opretter et array i det overordnede objekt og lægger de komplette underordnede dokumenter ind i det array i stedet for at beholde dem i en egen samling. På den måde bliver de slettet sammen med forælderen, fordi de er en del af det.

Selvom det er absolut no-go at beholde mere end én værdi i et felt i SQL, er der intet galt med det i MongoDB. Det er fordi MongoDB-forespørgselssproget nemt kan arbejde med arrays og indlejrede objekter. Du kan endda oprette indekser på felter af underdokumenter i arrays, så du nemt kan søge efter objekter, der er indlejret i andre objekter.

Når du stadig vil referere til objekter fra en anden samling, kan du enten bruge en DBRef, eller du kan også bruge en hvilken som helst anden unik identifikator (unik er en af ​​de få ting, som kan håndhæves af MongoDB. For at gøre det, opret et unikt indeks med createIndex-kommandoen ). Men MongoDB håndhæver ikke konsekvens i dette tilfælde. Du kan oprette DBRef'er, der peger på ikke-eksisterende ObjectId'er, og når dokumentet DBRef peger på slettes, sker der ikke noget. Applikationen er ansvarlig for at sikre, at når den sletter et dokument, opdateres alle dokumenter, der henviser til det.

Begrænsninger kan heller ikke håndhæves af MongoDB. Det kan ikke engang håndhæve en bestemt type for et felt på grund af MongoDBs skemaløse karakter. Igen er din applikation ansvarlig for at sikre, at de data, den lægger i mongodb, følger specifikke specifikationer. Når du vil automatisere dette, er der objektrelationelle kortlægningsrammer til MongoDB til mange programmeringssprog tilgængelige.

For at afslutte det hele: MongoDB er ikke så "smart" som SQL-databaser. Det gør ikke meget i sig selv. Den gør, hvad den bliver bedt om at gøre af applikationen, ikke mere og ikke mindre. Men det er grunden til, at det er så hurtigt (ingen dyre konsistenstjek) og fleksibel (ingen databaseændringer nødvendige for at implementere nye funktioner).



  1. Hvorfor reagerer MongoDB ikke under en belastningstest?

  2. Mongo samlet indlejret array

  3. 2 måder at få et dokuments størrelse i MongoDB

  4. Undtagelse i skærmtråd under forbindelse til server localhost:27017 under adgang til MongoDB med Java