Zijn documentgeoriënteerde databases ontwikkeld om de volgende generatie databases te zijn en relationele databases volledig te vervangen?
Nee. Documentgeoriënteerde databases (zoals MongoDB) zijn erg goed in het soort taken dat we doorgaans zien op moderne websites (snel opzoeken van afzonderlijke items of kleine sets items).
Maar ze maken een aantal grote compromissen met relationele systemen. Zonder zaken als ACID-compliance zullen ze bepaalde RDBMS niet kunnen vervangen. En als je naar systemen als MongoDB kijkt, is het gebrek aan ACID-compliance een belangrijke reden waarom het zo snel is.
Is het mogelijk dat projecten beter af zijn door zowel een documentgeoriënteerde database als een relationele database naast elkaar te gebruiken voor verschillende gegevens die beter geschikt zijn voor de een of de ander?
Ja. In feite run ik een zeer grote productiewebsite die beide gebruikt. Het systeem is gestart in MySQL, maar we hebben een deel ervan naar MongoDB gemigreerd, omdat we een Key-Value-winkel nodig hebben en MySQL is gewoon niet erg goed in het vinden van één item in 150 miljoen records.
Als documentgeoriënteerde databases niet bedoeld zijn om relationele databases te vervangen, heeft iemand dan een voorbeeld van een databasestructuur die absoluut beter af zou zijn in een relationele database (of omgekeerd)?
Documentgerichte databases zijn geweldige opslaggegevens die gemakkelijk kunnen worden opgenomen in "sleutel-waarde" en eenvoudige, lineaire "ouder-kind"-relaties. Eenvoudige voorbeelden hier zijn zaken als blogs en wiki's.
Echter, relationele databases hebben nog steeds een sterke voorsprong op zaken als rapportage, die meestal "set-based" is.
Eerlijk gezegd zie ik een wereld waar de meeste gegevens worden "behandeld" door een documentgeoriënteerde database, maar waar de rapportage wordt gedaan in een relationele database die wordt bijgewerkt door Map-reduce-taken.