sql >> Databasteknik >  >> NoSQL >> MongoDB

Är dokumentorienterade databaser tänkta att ersätta relationsdatabaser?

Har dokumentorienterade databaser utvecklats för att vara nästa generations databaser och i princip ersätta relationsdatabaser helt?

Nej. Dokumentorienterade databaser (som MongoDB) är mycket bra på den typ av uppgifter som vi vanligtvis ser på moderna webbplatser (snabb uppslagning av enskilda objekt eller små uppsättningar av objekt).

Men de gör några stora avvägningar med relationssystem. Utan saker som ACID-kompatibilitet kommer de inte att kunna ersätta vissa RDBMS. Och om du tittar på system som MongoDB, är bristen på ACID-efterlevnad en stor anledning till att det går så snabbt.

Är det möjligt att projekt skulle vara bättre av att använda både en dokumentorienterad databas och en relationsdatabas sida vid sida för olika data som är bättre lämpade för det ena eller det andra?

Ja. Faktum är att jag driver en mycket stor produktionswebbplats som använder båda. Systemet startades i MySQL, men vi har migrerat en del av det till MongoDB, eftersom vi behöver en Key-Value-butik och MySQL är helt enkelt inte så bra på att hitta ett objekt i 150 miljoner poster.

Om dokumentorienterade databaser inte är avsedda att ersätta relationsdatabaser, har någon då ett exempel på en databasstruktur som absolut skulle vara bättre i en relationsdatabas (eller vice versa)?

Dokumentorienterade databaser är bra att lagra data som lätt kan innehållas i "nyckel-värde" och enkla, linjära "förälder-barn"-relationer. Enkla exempel här är saker som bloggar och wikis.

Däremot relationsdatabaser har fortfarande ett starkt ben på saker som rapportering, som tenderar att vara "uppsättningsbaserad".

Ärligt talat kan jag se en värld där de flesta data "hanteras" av en dokumentorienterad databas, men där rapporteringen sker i en relationsdatabas som uppdateras av Map-reduce-jobb.



  1. hur man konfigurerar olika ttl för varje redis-cache när man använder @cacheable i springboot2.0

  2. Mongo-aggregation med sidnumrerade data och totaler

  3. StackExchange.Redis timeout

  4. Mongoose valfria sökfrågeparametrar?