I NoSQL:If Only It Was That Easy , skriver författaren om MongoDB:
MongoDB är inte en nyckel-/värdebutik, det är en hel del mer. Det är definitivt inte ett RDBMS heller. Jag har inte använt MongoDB i produktionen, men jag har använt det lite för att bygga en testapp och det är ett väldigt coolt kit. Det verkar vara mycket presterande och antingen har, eller kommer snart att ha, feltolerans och automatisk skärning (aka det kommer att skalas). Jag tror att Mongo kan vara det närmaste till en RDBMS-ersättning som jag har sett hittills. Det fungerar inte för alla datamängder och åtkomstmönster, men det är byggt för dina typiska CRUD-grejer. Att lagra vad som i huvudsak är en enorm hash, och att kunna välja på någon av dessa nycklar, är vad de flesta människor använder en relationsdatabas för. Om din DB är 3NF och du inte gör några joins (du väljer bara ett gäng tabeller och sätter ihop alla objekt, AKA vad de flesta gör i en webbapp), skulle MongoDB antagligen sparka röv för du.
Sedan, i slutsatsen:
Det verkliga att påpeka är att om du hålls tillbaka från att göra något superbra eftersom du inte kan välja en databas, gör du det fel. Om du kan mysql, använd det bara. Optimera när du verkligen behöver. Använd den som en k/v-butik, använd den som en rdbms, men för guds skull, bygg din killer-app! Inget av detta spelar någon roll för de flesta appar. Facebook använder fortfarande MySQL, mycket. Wikipedia använder MySQL, mycket. FriendFeed använder MySQL, mycket. NoSQL är ett utmärkt verktyg, men det kommer definitivt inte att vara din konkurrensfördel, det kommer inte att göra din app het, och framför allt kommer dina användare inte bry sig om något av detta.
Vad ska jag bygga min nästa app på? Förmodligen Postgres. Kommer jag att använda NoSQL? Kanske. Jag kanske också använder Hadoop och Hive. Jag kan ha allt i platta filer. Jag kanske börjar hacka på Maglev. Jag använder det som är bäst för jobbet. Om jag behöver rapportering kommer jag inte att använda någon NoSQL. Om jag behöver cachelagring kommer jag förmodligen att använda Tokyo Tyrant. Om jag behöver ACIDity kommer jag inte att använda NoSQL. Om jag behöver massor av räknare använder jag Redis. Om jag behöver transaktioner använder jag Postgres. Om jag har massor av en enda typ av dokument kommer jag förmodligen att använda Mongo. Om jag behöver skriva 1 miljard objekt om dagen, skulle jag förmodligen använda Voldemort. Om jag behöver fulltextsökning, skulle jag förmodligen använda Solr. Om jag behöver fulltextsökning av flyktiga data, skulle jag förmodligen använda Sphinx.
Jag gillar den här artikeln, jag tycker att den är väldigt informativ, den ger en bra överblick över NoSQL-landskapet och hypen. Men, och det är den viktigaste delen, det hjälper verkligen att ställa dig själv de rätta frågorna när det gäller att välja mellan RDBMS och NoSQL. Värt att läsa IMHO.