I NoSQL:If Only It Was That Easy , skriver forfatteren om MongoDB:
MongoDB er ikke en nøgle-/værdibutik, det er en hel del mere. Det er bestemt heller ikke et RDBMS. Jeg har ikke brugt MongoDB i produktionen, men jeg har brugt det lidt til at bygge en test-app, og det er et meget fedt sæt. Det ser ud til at være meget performant og enten har eller vil snart have fejltolerance og auto-sharding (alias det vil skalere). Jeg tror, at Mongo kan være det tætteste på en RDBMS-erstatning, som jeg hidtil har set. Det virker ikke for alle datasæt og adgangsmønstre, men det er bygget til dine typiske CRUD-ting. At gemme, hvad der i bund og grund er en enorm hash, og være i stand til at vælge på en af disse nøgler, er, hvad de fleste mennesker bruger en relationsdatabase til. Hvis din DB er 3NF, og du ikke laver nogen joinforbindelser (du vælger bare en masse tabeller og sætter alle objekterne sammen, AKA hvad de fleste mennesker gør i en webapp), ville MongoDB sandsynligvis sparke røv for dig.
Så i konklusionen:
Den virkelige ting at påpege er, at hvis du bliver holdt tilbage fra at lave noget super fedt, fordi du ikke kan vælge en database, gør du det forkert. Hvis du kender mysql, så brug det bare. Optimer, når du rent faktisk har brug for det. Brug det som en k/v butik, brug det som en rdbms, men for guds skyld, byg din dræber app! Intet af dette betyder noget for de fleste apps. Facebook bruger stadig MySQL, meget. Wikipedia bruger MySQL, meget. FriendFeed bruger MySQL, meget. NoSQL er et fantastisk værktøj, men det vil bestemt ikke være din konkurrencefordel, det vil ikke gøre din app hot, og mest af alt vil dine brugere være ligeglade med noget af dette.
Hvad skal jeg bygge min næste app på? Sandsynligvis Postgres. Vil jeg bruge NoSQL? Måske. Jeg kan også bruge Hadoop og Hive. Jeg kan opbevare alt i flade filer. Måske begynder jeg at hacke på Maglev. Jeg vil bruge det, der er bedst til jobbet. Hvis jeg har brug for rapportering, vil jeg ikke bruge nogen NoSQL. Hvis jeg har brug for caching, vil jeg sandsynligvis bruge Tokyo Tyrant. Hvis jeg har brug for ACIDity, bruger jeg ikke NoSQL. Hvis jeg har brug for et væld af tællere, bruger jeg Redis. Hvis jeg har brug for transaktioner, bruger jeg Postgres. Hvis jeg har et væld af en enkelt type dokumenter, vil jeg sandsynligvis bruge Mongo. Hvis jeg skal skrive 1 milliard objekter om dagen, ville jeg nok bruge Voldemort. Hvis jeg har brug for fuldtekstsøgning, ville jeg nok bruge Solr. Hvis jeg har brug for fuldtekstsøgning af flygtige data, ville jeg nok bruge Sphinx.
Jeg kan godt lide denne artikel, jeg finder den meget informativ, den giver et godt overblik over NoSQL-landskabet og hypen. Men, og det er den vigtigste del, det hjælper virkelig at stille dig selv de rigtige spørgsmål, når det kommer til at vælge mellem RDBMS og NoSQL. Værd at læse IMHO.