Почему я хочу использовать нереляционную базу данных? - PullRequest
6 голосов
/ 29 октября 2011

Последнее увлечение базами данных, кажется, сосредоточено вокруг нереляционных баз данных.Зачем?Это кажется своего рода контрпродуктивным.Например, для меня имеет гораздо больше смысла выражать мои данные реляционным способом (пример кода на 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, потому что вы сразу же захватите весь граф объектов, а не то, что вам нужно минимально,

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

Ответы [ 2 ]

5 голосов
/ 29 октября 2011

Взгляните на CAP Теорема

И PACELC интерпретация

Реляционные базы данных, как правило, создают один набор компромиссов, а нереляционные - как правило, различные компромиссы. Для массивных распределенных наборов данных нереляционные иногда имеют больше смысла.

В некотором смысле нереляционные базы данных могут устранить большую часть боли ORM, но опять же всегда есть компромиссы. В некоторых случаях использование нереляционного хранилища может быть быстрее, поскольку все данные для конкретной иерархии могут храниться ближе друг к другу на диске. Также обратите внимание, что нереляционные базы данных все еще имеют возможности запросов.

В конце концов, речь идет о выборе подходящего компромисса для вашего конкретного варианта использования.

1 голос
/ 29 октября 2011

Посмотрите на Nosql: http://en.wikipedia.org/wiki/NoSQL

Это в основном из-за масштабируемости и производительности.

...