In NoSQL:Was het maar zo makkelijk , schrijft de auteur over MongoDB:
MongoDB is geen sleutel/waarde-winkel, het is nogal wat meer. Het is ook zeker geen RDBMS. Ik heb MongoDB niet in productie gebruikt, maar ik heb het een beetje gebruikt om een test-app te bouwen en het is een heel cool stuk kit. Het lijkt zeer performant te zijn en heeft, of zal binnenkort, fouttolerantie en auto-sharding hebben (ofwel het zal schalen). Ik denk dat Mongo misschien het dichtst in de buurt komt van een RDBMS-vervanging die ik tot nu toe heb gezien. Het werkt niet voor alle datasets en toegangspatronen, maar het is gebouwd voor uw typische CRUD-dingen. Het opslaan van wat in wezen een enorme hash is en het kunnen selecteren op een van die sleutels, is waar de meeste mensen een relationele database voor gebruiken. Als je DB 3NF is en je doet geen joins (je selecteert gewoon een aantal tabellen en plaatst alle objecten bij elkaar, oftewel wat de meeste mensen doen in een web-app), zou MongoDB waarschijnlijk een kick geven voor jij.
Dan, in de conclusie:
Het echte ding om op te wijzen is dat als je wordt weerhouden om iets super geweldigs te maken omdat je geen database kunt kiezen, je het verkeerd doet. Als je mysql kent, gebruik het dan gewoon. Optimaliseer wanneer het echt nodig is. Gebruik het als een k/v-winkel, gebruik het als een rdbms, maar bouw in godsnaam je geweldige app! Voor de meeste apps is dit allemaal niet van belang. Facebook gebruikt nog steeds veel MySQL. Wikipedia gebruikt veel MySQL. FriendFeed gebruikt veel MySQL. NoSQL is een geweldige tool, maar het zal zeker niet je concurrentievoordeel zijn, het zal je app niet hot maken, en vooral, je gebruikers zullen hier niets om geven.
Waar ga ik mijn volgende app op bouwen? Waarschijnlijk Postgres. Zal ik NoSQL gebruiken? Kan zijn. Ik zou ook Hadoop en Hive kunnen gebruiken. Ik zou alles in platte bestanden kunnen bewaren. Misschien begin ik Maglev te hacken. Ik gebruik wat het beste is voor de klus. Als ik rapportage nodig heb, gebruik ik geen NoSQL. Als ik caching nodig heb, zal ik waarschijnlijk Tokyo Tyrant gebruiken. Als ik ACIDity nodig heb, gebruik ik geen NoSQL. Als ik heel veel tellers nodig heb, gebruik ik Redis. Als ik transacties nodig heb, gebruik ik Postgres. Als ik een heleboel documenten van één type heb, zal ik waarschijnlijk Mongo gebruiken. Als ik 1 miljard objecten per dag moet schrijven, zou ik waarschijnlijk Voldemort gebruiken. Als ik full-text zoeken nodig heb, zou ik waarschijnlijk Solr gebruiken. Als ik de volledige tekst van vluchtige gegevens nodig heb, zou ik waarschijnlijk Sphinx gebruiken.
Ik vind dit artikel leuk, ik vind het erg informatief, het geeft een goed overzicht van het NoSQL-landschap en de hype. Maar, en dat is het belangrijkste, het helpt echt om jezelf de juiste vragen te stellen als het gaat om de keuze tussen RDBMS en NoSQL. Het lezen waard IMHO.
Alternatieve link naar artikel