Pourquoi voudrais-je utiliser une base de données non relationnelle?

La dernière mode dans des bases de données semble être centré autour de bases de données non relationnelles. Pourquoi? Il semble sorte de contre-productif. Par exemple, il fait beaucoup plus de sens pour moi d'exprimer mes données d'une manière relationnelle (exemple de code dans Django + SQL pour les tableaux):

class Post(models.Model):
    name = models.CharField()
    created = models.DateTimeField(auto_now_create = True)

class Comment(models.Model):
    text = models.TextField()
    post = models.ForeignKey('Post')
    created = models.DateTimeField(auto_now_create = True)

SQL:

create table post (id int primary key auto_increment,
        name varchar,
        created datetime);

create table comment(id int primary key auto_increment,
        text text,
        post_id int,
        created datetime,
        foreign key post_id references post(id));

La puissance de SQL est que cette information peut être exprimé en donc de nombreuses façons. Bien sûr, l'ensemble de l'objet-relationnel-cartographie problème existe, mais je la considère comme une entité et non comme un problème. Avec SQL, je peux récupérer toutes distinctes les commentaires d'un post qui sont plus vieux qu'hier, rassembler tous ceux qui, ensemble, et de générer des statistiques. Pouvez faire de même pour les bases de données non relationnelles?

Elle aussi semble vraiment d'incidence sur les performances d'utiliser une base de données non relationnelle comme MongoDB, car vous devez vous saisir immédiatement la totalité d'un objet graphique, plutôt que ce que vous minimalement besoin.

Quelqu'un peut m'expliquer quels sont les avantages de l'utilisation d'une base de données non relationnelle?

OriginalL'auteur Naftuli Kay | 2011-10-28