Зачем мне использовать нереляционную базу данных?

Последнее повальное увлечение базами данных, похоже, сосредоточено вокруг нереляционных баз данных. Почему? Это кажется контрпродуктивным. Например, для меня имеет смысл выразить мои данные реляционным способом (пример кода в Django + SQL для таблиц):

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));

Сила SQL в том, что эта информация может быть выражена в так что разными способами. Конечно, проблема объектно-реляционного сопоставления в целом существует, но я смотрю на нее как на особенность, а не как на проблему. С помощью SQL я могу получить все отдельные комментарии к данному посту, которые старше, чем вчера, сопоставить их все вместе и создать статистику. Можно ли сделать то же самое для нереляционных баз данных?

Также может показаться, что использование нереляционной базы данных, такой как MongoDB, действительно повлияет на производительность, потому что вы сразу получите весь граф объекта, а не то, что вам минимально нужно.

Может ли кто-нибудь объяснить мне, в чем преимущества использования нереляционной базы данных?

5
задан Naftuli Kay 28 October 2011 в 21:51
поделиться