В чем разница между реляционной и нереляционной базой данных?

StackOverflow https://stackoverflow.com/questions/4811744

Вопрос

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

Однако каковы различия между двумя типами системы?

Условия непрофессионала предпочтительнее.

Спасибо.

Это было полезно?

Решение

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

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

Я не знаю об универсальном языке запросов для баз данных NOSQL.

Другие советы

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

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

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

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

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

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

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

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

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

Я надеюсь, что это достаточно условия непрофессионала, и он полезен для вашего понимания.

Большая часть того, что вы «знаете», неправильно.

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

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

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

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

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

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

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

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

Попробуйте объяснить этот вопрос на уровне, ссылаясь на небольшую технологию

Возьмите MongoDB и традиционный SQL для сравнения, представьте себе сценарий публикации твита в Твиттере. Этот твит содержит 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 (кислота и основа).

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

http://icamchuwordpress-wordpress.stor.sinaapp.com/uploads/2015/01/dbc795f6f262e9d01fa0ab9b323b2dd1_b.png

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

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

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

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

Чтобы отметить, что nosdb Apapriply предоставляет как реляционные, так и не реляционные DBS и способ запросить оба http://www.alachisoft.com/nosdb/sql-cheat-sheet.html

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top