В чем разница между реляционной и нереляционной базой данных? - PullRequest
77 голосов
/ 27 января 2011

Я знаю, что такие решения, как MySQL, PostgreSQL и MS SQL Server, являются системами реляционных баз данных, а NoSQL, MongoDB и т. Д. Являются нереляционными СУБД.

Однако, чем отличаются эти два типа систем?

Условия для неспециалистов являются предпочтительными.

Спасибо.

Ответы [ 7 ]

42 голосов
/ 27 января 2011

Хм, не совсем уверен, что ваш вопрос.

В заголовке вы спрашиваете о базах данных (БД), тогда как в тексте вашего текста вы спрашиваете о системах управления базами данных (СУБД). Они совершенно разные и требуют разных ответов.

СУБД - это инструмент, позволяющий получить доступ к БД.

Помимо самих данных, БД - это концепция структурирования этих данных.

Так же, как вы можете программировать с использованием методологии Oriented Object с помощью компилятора без OO, или наоборот, вы можете настроить реляционную базу данных без RDBMS или использовать RDBMS для хранения нереляционных данных.

Я сосредоточусь на том, что означает Реляционная база данных (RDB), и оставлю обсуждение того, что системы делают другим.

Реляционная база данных (концепция) - это структура данных, которая позволяет связывать информацию из разных «таблиц» или разных типов блоков данных. Блок данных должен содержать то, что называется ключом или индексом (что позволяет однозначно идентифицировать любой атомарный блок данных в блоке). Другие области данных могут ссылаться на этот ключ для создания связи между атомами данных и атомом, на который указывает ключ.

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

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

Надеюсь, этого достаточно для неспециалистов, и это поможет вам понять.

22 голосов
/ 27 января 2011

Реляционные базы данных имеют математическое обоснование (теория множеств, реляционная теория), которые вливаются в SQL == язык структурированных запросов.

Многие формы NoSQL (например, на основе документов, на основе графов, на основе объектов, хранилище значений ключей и т. Д.) Могут основываться или не основываться на одной базовой математической теории. Как правильно указал С. Лотт, иерархические хранилища данных действительно имеют математическую основу. То же самое можно сказать и о графовых базах данных .

Мне не известен универсальный язык запросов для баз данных NoSQL.

20 голосов
/ 27 января 2011

Большая часть того, что вы "знаете", неверна.

Прежде всего, как обычно отмечают некоторые из реляционных гуру (а иногда и резко), SQL на самом деле не так близко подходит к реляционной теории, как думают многие. Во-вторых, большинство различий в «NoSQL» имеет относительно мало общего с тем, реляционные они или нет. Наконец, довольно сложно сказать, чем «NoSQL» отличается от SQL, поскольку и представляют довольно широкий диапазон возможностей.

Единственное существенное отличие, на которое вы можете рассчитывать, заключается в том, что почти все, что поддерживает SQL, поддерживает такие вещи, как триггеры в самой базе данных, т.е. вы можете создавать правила в самой базе данных, которые предназначены для обеспечения того, чтобы данные всегда были внутренне согласованными. , Например, вы можете настроить все так, чтобы ваша база данных утверждала, что человек должен иметь адрес. Если вы сделаете это, каждый раз, когда вы добавляете человека, это в основном заставит вас связать этого человека с определенным адресом. Вы можете добавить новый адрес или связать их с каким-то существующим адресом, но так или иначе у человека должен быть адрес. Аналогичным образом, если вы удалите адрес, это заставит вас либо удалить всех людей, которые в данный момент находятся по этому адресу, либо связать каждого с другим адресом. Вы можете сделать то же самое для других отношений, например, сказать, что у каждого человека должна быть мать, в каждом офисе должен быть номер телефона и т. Д.

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

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

9 голосов
/ 27 января 2011

Реляционная база данных использует формальную систему предикатов для адресации данных.Базовая физическая реализация не имеет смысла и может варьироваться для оптимизации для определенных операций, но она всегда должна принимать реляционную модель .С точки зрения непрофессионала, это просто говорит Я точно знаю, сколько значений (атрибутов) имеет каждая строка (кортеж) в моей таблице (отношении), и теперь я хочу использовать этот факт соответствующим образом, тщательно и до крайности. Это истинная природа зверя.

Поскольку мы, очевидно, являемся поколением, которое имеет реляционное воспитание, если вы посмотрите на модели баз данных NoSQL с точки зрения реляционной модели, опять же с точки зрения непрофессионала, первое очевидное отличие состоит в том, что никаких предположений околичество значений, которые может содержать строкаЭто действительно упрощает вопрос и не относится чисто к сложностям физических моделей каждой базы данных NoSQL, но это вершина реляционной модели и первое предположение, которое мы должны оставить позади, или, если хотите, самое большоепрыжок, который мы должны сделать.

Мы можем согласиться с двумя вещами, которые верны для каждой СУБД: она может хранить любые данные и имеет достаточно математических оснований, чтобы сделать возможным управление данными любым мыслимым способом.Реальность такова, что вы никогда не захотите совершить ошибку, подвергнув тесту любую из двух точек, а просто придерживайтесь того, для чего реально создана СУБД.С точки зрения непрофессионала: уважайте зверя внутри!

(Обратите внимание, что я избегал сравнения (очевидно) обоснованных стандартов, вращающихся вокруг реляционной модели, с множеством предоставляемых ароматовпо базам данных NoSQL. Если вы хотите, рассмотрите базы данных NoSQL как общий термин для любой СУБД, которая не полностью принимает реляционную модель, за исключением всего остального. Различий слишком много, но это принципиальное отличие, которое ядумаю, что было бы наиболее полезным для вас, чтобы понять два.)

5 голосов
/ 25 января 2015

Попробуйте объяснить этот вопрос на уровне, относящемся к немного технологии

Возьмите MongoDB и традиционный SQL для сравнения, представьте себе сценарий размещения твита в Twitter. Этот твит содержит 9 картинок. Как вы храните этот твит и соответствующие ему картинки?

С точки зрения традиционных отношений SQL, вы можете хранить твиты и изображения в отдельных таблицах и представлять связь посредством создания новой таблицы.

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

Используя MongoDB, вы можете создать такой документ (аналогично концепции таблицы в реляционном SQL):

{

"id":"XXX",

"user":"XXX",

"date":"xxxx-xx-xx",

"content":{

"text":"XXXX",

"picture":["p1.png","p2.png","p3.png"]

}

Поэтому, на мой взгляд, основное отличие заключается в том, как вы храните данные и уровень хранения отношений между ними.

В этом примере данные - это твит и картинки. Различный механизм уровня хранения отношений между ними также играет важную роль в разнице между ними.

Надеюсь, этот небольшой пример поможет показать разницу между SQL и NoSQL (ACID и BASE).

Вот ссылка на картинку о целях NoSQL из Интернета:

http://icamchuwordpress -wordpress.stor.sinaapp.com / добавления / 2015/01 / dbc795f6f262e9d01fa0ab9b323b2dd1_b.png

3 голосов
/ 05 марта 2015

Разница между реляционным и нереляционным именно в этом. Архитектура реляционной базы данных обеспечивает объекты ограничений, такие как первичные ключи, внешние ключи и т. Д., Что позволяет связать две или более таблиц в отношении. Это хорошо, так как мы нормализуем наши таблицы, то есть разделяем информацию о том, что база данных представляет на множество различных таблиц, когда-то можем сохранить целостность данных.

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

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

0 голосов
/ 27 марта 2019

С точки зрения непрофессионала, он сильно структурирован по сравнению с неструктурированным, что означает, что у вас есть разные степени адаптируемости для вашей БД.Различия возникают при индексации, в частности, когда вам необходимо убедиться, что определенный ссылочный индекс может ссылаться на другой элемент -> это отношение.Более строгое строение реляционных БД вытекает из этого требования.

Следует отметить, что NosDB предоставляет как реляционные, так и нереляционные БД, а также способ запроса как http://www.alachisoft.com/nosdb/sql-cheat-sheet.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...