База данных документов и реляционная база данных: как выбрать?


16

Я парень по SQL, но я знаю, что есть не только базы данных SQL - в основном документ-база данных. Как и в большинстве технологий, у каждой технологии есть свои плюсы и минусы.

Я прочитал несколько статей, но они были слишком теоретическими. То, что я хотел бы, это два реальных случая:

  1. когда переход с реляционной базы данных на документ дал улучшение
  2. когда переход от документа к реляционной базе данных дал улучшение

Улучшение - это любая вещь, которая делает лучшие программы - меньше времени разработки, масштабируемости, производительности, всего, что связано с программированием. Есть предостережение для 2.: истории вроде «возврата к реляционной базе данных, потому что все знают SQL» - это не хорошо


8
Неправильный подход. Это не о «производительности» или «масштабируемости». Это вопрос о том, какая модель подходит к проблеме, которую вы пытаетесь решить. Возможно, вы захотите обновить свой вопрос, чтобы учесть мысль о том, что, возможно, реляционная база данных не подходит для решения многочисленных проблем.
С.Лотт

2
@ S.Lott, выбор часто очень зависит от производительности. Учтите, что любая реляционная БД может использоваться как простая документная БД - отличительной характеристикой будет только производительность.
edA-qa mort-ora-y

Я перефразировал свой вопрос, чтобы он не загружался каким-либо образом.
Йохан Бурет

2
@ edA-qa mort-ora-y: «любая реляционная БД может использоваться как простая БД документа». Это должно быть ложно, иначе люди не придумали бы альтернативу. «Отличительной характеристикой будет только производительность». Верно только в том случае, если вы предполагаете, что реляционная модель делает все одинаково хорошо. Если бы он сделал все, альтернативы не было бы. Еще. У нас есть альтернативы. Есть много проблем (например , иерархии) , которые не вписываются в реляционную модель прекрасно , и требуют хитрых трюков. Или альтернативная модель данных.
S.Lott

"читать некоторые статьи"? Пожалуйста, предоставьте некоторые ссылки или заголовки или ссылки или цитаты. Мы не знаем, что значит «слишком теоретический» для вас.
S.Lott

Ответы:


15

В последние годы основной причиной выбора базы данных NoSQL была доступность . Для таких компаний, как Amazon, Google и Facebook час простоя или около того недопустим. Чтобы обеспечить высокую доступность, вам необходимо уменьшить число точек отказа, а это означает, что вам нужно использовать распределенную систему с несколькими компьютерами, в случае сбоя компьютера служба все еще доступна.

Традиционные базы данных Relatione не очень хороши в распределенной установке с несколькими мастерами. Вот почему NoSQL был так популярен в последнее время. Поэтому, если вам нужна высокая доступность, вы можете выбрать базу данных NoSQL, такую ​​как Riak, Cassandra, HBase, S3 или BigTable.

Есть хороший пост в блоге об Amazon Dynamo, который является хорошим введением в распределенные базы данных NoSQL.

Теперь термин NoSQL очень широк, поэтому есть много баз данных NoSQL, которые не распространяются. Но они решают другие проблемы. Например, Neo4j - графическая база данных хороша для запросов, для которых традиционные СУБД не оптимизированы. Или как в вашем случае база данных документов, где вам не нужно менять схему, если вы хотите добавить некоторые поля для некоторых документов. Другими словами, база данных документов хороша, когда большинство постов (документов) имеют разные поля, поэтому реляционная таблица с предопределенными столбцами не может использоваться.

Однако большинство баз данных NoSQL не так гибки, как традиционные базы данных RDBMS, поэтому рекомендуется использовать традиционную базу данных RDBMS, пока она больше не сможет решить ваши проблемы.


+1, Согласен, гибкость - огромная цена, которую нужно заплатить, если вам не нужно.
maple_shaft

12

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

Я просто спрашиваю себя: если у меня нет базы данных, я бы предпочел сохранить большинство и важные данные в виде документа или сохранить их в электронной таблице.

Когда ответом является «Электронная таблица», это явный признак того, что реляционная модель и традиционная СУБД лучше всего подходят для большинства задач. Если данные действительно простые, например, только пары ключ-значение или простые таблицы, а ссылочная целостность не является темой, то база данных NoSQL, вероятно, лучше всего подходит для этой задачи и может значительно повысить производительность!

Кроме того, когда вы вообще не можете найти общую структуру, база данных NoSQL лучше всего подходит для этой задачи.

Когда данные больше похожи на документы, например, иерархически структурированные текстовые данные без четких отношений, я сразу же вспоминаю XML-базу данных, которая позволяет легко хранить иерархически структурированные документы. Иногда лучше использовать программное обеспечение для управления документами.

Итак, чтобы дать конкретный и простой ответ на оба ваших вопроса: это зависит от данных.

когда переход с реляционной базы данных на документ дал улучшение

Когда вам необходимо сохранить иерархически структурированные текстовые данные, база данных Xml может стать большим улучшением с точки зрения удобства сопровождения и, возможно, также масштабируемости.

когда переход от документа к реляционной базе данных дал улучшение

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


2
+1 для таблицы против аналогии с документом - огромная помощь - спасибо.
HDave

10

Нам пришлось отказаться от реляционной модели, потому что данные, которые мы получали, не имели простой, очевидной, фиксированной, статической схемы.

Пользователи и пользовательские истории не имели фиксированной статической схемы.

Мы пытались навязать фиксированную статическую схему RDBMS, но это было ошибкой.

Каждая сторонняя доставка данных (от клиентов и от поставщиков) была аналогичной, но не идентичной. Мы попытались сопоставить его с фиксированной реляционной схемой, но изменчивость была слишком велика. Нам либо приходилось добавлять поля с каждым файлом (по несколько раз в неделю), либо мы должны были отойти от фиксированной статической реляционной схемы.

Если бы мы рассматривали каждую запись как «документ» с общим подмножеством элементов и уникальным (а также плохо определенным) набором дополнительных элементов данных, мы были бы намного счастливее.

Неопределенный набор элементов данных - это то, что пользователям действительно нужно для их вариантов использования.

Фиксированная статическая схема реляционной модели не соответствовала нашим сценариям использования.


Я видел, что другие проекты не отвечают требованиям из-за именно тех требований, которые вы описали. Для этого и были предназначены базы данных документов.
maple_shaft
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.