@TemaKam

В чем отличие реляционных от нереляционных БД?

Отличие в формате данных, что в РБД - таблицы, а в НБД - не таблицы - неверное же, поскольку, например, кассандра хранит данные тоже в таблицах, но она же НБД
Какое же тогда точное различие?
  • Вопрос задан
  • 409 просмотров
Пригласить эксперта
Ответы на вопрос 4
Секунда факт-чекинга:

Кассандра хранит данные не в таблицах, а в семействах столбцов aka в разреженной матрице.
+ В ней нельзя просто так заджоинить или отфлитровать по какому-нибудь полю.
+ Соответственно нет никакой гарантии целостности на уровне ссылок на сущности из другой таблицы.

А NoSQL это не только реляционное/нереляционное, но и про нарушение ACID и использование самого по себе SQL
Ответ написан
mayton2019
@mayton2019
Bigdata Engineer
Я думаю что главное отличие - это способность осуществлять соединения (JOINS) по любому полю.

Попробуйте сджойнить две таблицы Cassandra по любому полю. Хрен вам. Это считается неверным дизайном. С точки зрения идеологии Cassandra вы должны были дизайнить модель так чтобы таких джойнов (или таких мыслей) у вас никогда не возникало. Грубо говоря - хотите какую-то выборку - подготовьте ее заранее на уровне архитектуры. Типа мат-вью.

Да что там джойн. Там даже выбрать по предложению WHERE не всегда можно. Тоже считается антипаттерн. В базовом SQL синтаксисе это не сработает. Надо добавлять опцию allow filtering что как-бы говорит нам - что мы вышли за рамки обычного запроса. Захотели птичьего молока...

А вот для Oracle/PG/Mysql/MSSQL - получить джойн по любому полю с любым - сущий пустяк. Хотя дать смысл этому джойну будет сложнее. Джойнить величины с величинами.

Хотя в последнее время различия между реляционными и прочими - стираются. Это как парадигмы в ЯП. Лет 20 назад все говорили о парадигмах. Сейчас - многие языки считаются мультипарадигменными. Тоесть спор сам по себе закрыт на уровне определения.
Ответ написан
Комментировать
@vism
Реляционные - те, где можно установить отношения между таблицами, у них статичные поля. И можно связать таблицы по полю.
Они статичные, как каркас.

А нереляционные - подвижны, там не сделать связь обычно или сделать можно искуственно кодом, но не в самой БД.
У них даже разные записи одной "таблицы" могут содержать разный набор полей.

Как мог по простому описал:)
Ответ написан
Комментировать
hint000
@hint000
у админа три руки
...потому что везде акцент на то, как хранятся данные - структурированно в таблицах

...как уже сказал, везде акцент на таблицы, не на связи
Как же так? Я вот отрыл вики, и там сразу акцент на связи (отношения), даже явно говорится, что делать акцент на таблицах - это неправильно:
https://ru.wikipedia.org/wiki/Реляционная_модель_данных
Термин «реляционный» означает, что теория основана на математическом понятии отношение (relation). В качестве неформального синонима термину «отношение» часто встречается слово таблица. Необходимо помнить, что «таблица» есть понятие нестрогое и неформальное и часто означает не «отношение» как абстрактное понятие, а визуальное представление отношения на бумаге или экране. Некорректное и нестрогое использование термина «таблица» вместо термина «отношение» нередко приводит к недопониманию. Наиболее частая ошибка состоит в рассуждениях о том, что РМД имеет дело с «плоскими», или «двумерными» таблицами, тогда как таковыми могут быть только визуальные представления таблиц. Отношения же являются абстракциями и не могут быть ни «плоскими», ни «неплоскими».

Для лучшего понимания РМД следует отметить три важных обстоятельства:

  • модель является логической, то есть отношения являются логическими (абстрактными), а не физическими (хранимыми) структурами;
  • для реляционных баз данных верен информационный принцип: всё информационное наполнение базы данных представлено одним и только одним способом, а именно — явным заданием значений атрибутов в кортежах отношений; в частности, нет никаких указателей (адресов), связывающих одно значение с другим;
  • наличие реляционной алгебры позволяет реализовать декларативное программирование и декларативное описание ограничений целостности, в дополнение к навигационному (процедурному) программированию и процедурной проверке условий.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы