В чем разница между СУБД, ядром базы данных и хранилищем? - PullRequest
0 голосов
/ 16 ноября 2018

Я не из области CS / разработки программного обеспечения, но недавно я начал самостоятельно изучать веб-разработку Flask с помощью Python.

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

Из Интернета и книги Мигеля Гринберга по веб-разработке вот некоторые моменты, которые меня смущают:

  1. В книге Мигеля о Гринберге автор, похоже, делает вывод, что ядро ​​базы данных = СУБД = программные приложения, такие как MySQL, SQLite, Postgres и т. Д.
    Источник: стр. 53 книги Мигеля Гринберга в главе «База данных»

  2. В Википедии ядро ​​базы данных (или механизм хранения, который указан в Википедии) упоминается как программное приложение, такое как InnoDB, MyISAM, Aria и т. Д.
    Ссылка: https://en.wikipedia.org/wiki/Database_engine

  3. В Quora комментатор (Стивен Кингхт) говорил, что СУБД и ядро ​​базы данных - это две разные сущности, причем ядро ​​базы данных является лишь частью компонента в СУБД, который отвечает за управление базой данных.
    Ссылка: https://www.quora.com/What-are-some-database-storage-engines

Итак, исходя из трех пунктов выше, я имею в виду следующие вопросы:

  1. Является ли СУБД = механизм базы данных / механизм хранения = программные приложения, такие как MySQL, SQLite, Postgres и т. Д.?

    ИЛИ

  2. Является ли СУБД! = Механизм базы данных / механизм хранения? (при этом СУБД = MySQL, SQLite, Postgres и ядро ​​базы данных / механизм хранения = InnoDB, Aria, MyISAM и т. д. соответственно?)

Я действительно ценю, если бы кто-то мог помочь прояснить мои сомнения в этой терминологии. Я попытался провести исследование в Интернете, а также просмотреть пост в «Переполнении стека», но до сих пор не могу правильно понять концепцию.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 18 ноября 2018

Я бы посчитал, что СУБД относится к программному продукту в целом - PostgreSQL, Oracle, DB2 и т. Д.

Однако это большие и сложные продукты. Как обычно для сложного программного обеспечения, они делятся на компоненты, каждый со своей специфической функцией и с четко определенными интерфейсами между ними. Один компонент будет иметь дело с проверкой и анализом SQL; один будет заботиться о памяти; другой будет обрабатывать IO и так далее. Этот последний - IO - часто называют механизмом хранения, я полагаю, потому что он «выводит» данные на диск и с диска. Почему это называется механизмом, а не компонентом или подсистемой, можно только догадываться.

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

Некоторые СУБД допускают множество компонентов ввода-вывода, каждый из которых реализует разные технологии. MySQL имеет InnoDB и MyISAM. MongoDB имеет WiredTiger и MMap. SQL Server имеет разные форматы на диске и закулисные алгоритмы, если данные находятся в «обычных» таблицах, таблицах в памяти или имеют индекс columnstore. Их можно рассматривать как разные механизмы хранения, если эти термины выберет автор.

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

0 голосов
/ 16 ноября 2018

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

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

А СУБД означает Систему управления базами данных, которая четко указывает, что это программное обеспечение (/ механизм), используемое для управления базой данных (организованный сбор данных).

Таким образом, по общему мнению, у вас есть СУБД = механизм баз данных = IMS / IDMS / DB2 / PostgreSQL / ... и механизм хранения = компонент хранения, используемый СУБД, часто проприетарный и фактически неназванный, но не всегда, с некоторые из «именованных» механизмов хранения MyISAM, InnoDB, Microsoft Jet, BerkeleyDB (???) и, возможно, другие.

К сожалению, подавляющее большинство специалистов по базам данных в отрасли виновны в использовании этих терминов взаимозаменяемо, небрежно и ошибочно, вызывая / способствуя / увековечивая то самое замешательство, которое заставило вас задать этот вопрос. Вы были предупреждены: -)

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