Операционные системы против систем управления базами данных - PullRequest
0 голосов
/ 31 января 2019

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

Я не совсем понимаю, как ОС и СУБД взаимодействуют друг с другом.

Например, что происходит, когда пользовательская программа пытается получить доступ к файлу?Вызывается ли системный вызов, который затем обрабатывается ОС для поиска правильного файла и данных?Или вызов обрабатывается СУБД, которая затем может более эффективно находить данные (кортеж / запись), например, с помощью дерева B +?А затем СУБД вызывает операционную систему для фактического получения данных?

Доступ к базе данных возможен только при использовании языка программирования, такого как SQL?Если я просто напишу простую программу на C, которая записывает файл на диск, действительно ли данные хранятся в «базе данных» или просто в каком-то блоке на диске, где информация для файла хранится в inode для этого файла?

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

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Например, что происходит, когда пользовательская программа пытается получить доступ к файлу?Это зависит от того, как пользовательская программа обращается к файлу.Вызовы fopen / read / write предлагаются файловой системой, управляемой ОС.

Вызывается ли системный вызов, который затем обрабатывается ОС для поиска правильного файла и данных?Если используется база данных, она управляет собственным набором файлов данных и индексирует эти файлы данных.Ядро базы данных выполняет запросы ввода-вывода, которые обрабатываются базовой ОС.Кроме того, база данных, скорее всего, также будет выполнять кэширование, чтобы уменьшить количество операций ввода-вывода.

Или вызов обрабатывается СУБД, которая затем может более эффективно находить данные (кортеж / запись), например, с использованием дерева B +?И затем СУБД обращается к ОС для фактического получения данных?В зависимости от запроса к базе данных, данные могут быть прочитаны последовательно или доступны произвольно через поиск по индексу.

Доступ к базе данных возможен только при использовании языка программирования, такого как SQL?Если я просто напишу простую программу на C, которая записывает файл на диск, действительно ли данные хранятся в «базе данных» или просто в каком-то блоке на диске, где информация для файла хранится в inode для этого файла?Он хранится в файловой системе, которая может использовать блочный дизайн.Простая программа на C должна использовать SDK для подключения к базе данных, а затем вызывать операторы SQL.

Надеюсь, это поможет!

0 голосов
/ 31 января 2019

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

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

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