Hardware - разное

Файловые системы по сравнению с "чистыми"(неструктурированными) дисками


Первоначально при разработке файловых систем Unix и DOS не ставилась задача обеспечения высокопроизводительного дискового ввода-вывода. В традиционной файловой системе Unix, в отличие от экстентных систем типа OS/360 и VMS, данные отображаются на диск в виде дерева небольших блоков, они копируются по крайней мере дважды (поскольку перемещаются через буферный пул), и все операции ввода-вывода выполняются как синхронные запросы. В современных версиях Unix эти недостатки давно уже учтены, и в них реализованы возможности организации асинхронного и не буферизованного ввода-вывода.

Кроме того, для удовлетворения нужд интенсивных по вводу-выводу приложений почти все системы Unix обеспечивают интерфейс "чистых" дисков. Системный администратор может определять зоны диска, которые выделяются приложению (эти зоны выглядят как файлы). Затем приложение может выполнять прямые операции Get_Block() и Put_Block для чтения и записи в такие файлы. Этот интерфейс имеет малые накладные расходы.

Большинство СУБД позволяют администратору системы выбрать способ размещения файлов СУБД (на "чистых" дисках или в стандартной файловой системе Unix). Некоторые системы, наиболее известными из которых являются Ingres и Interbase, навязывают использование файловой системы Unix. Для систем, которые допускают выбор указанных возможностей, приходится оценивать целый ряд разных критериев.

Хранение данных в файловой системе оказывается менее эффективным (отличие составляет, по крайней мере, 10%), поскольку при выполнении каждого обращения к диску со стороны СУБД в работу включается дополнительный слой системного ПО. Поскольку в больших СУБД часто одним из ограничивающих ресурсов является мощность процессора, использование "чистых" разделов (raw partition)улучшает производительность системы при пиковой нагрузке. Только по этой причине большинство администраторов баз данных обычно предпочитают хранение данных на "чистых" разделах дисков.

Хранение данных в файловой системе приводит также к определенной потере емкости памяти.
Файловая система Unix потребляет примерно 10% от форматированной емкости дисков для метаданных о файлах и файловой системе. Более того, файловая система резервирует 10% оставшегося пространства, чтобы обеспечить быстрый поиск свободного пространства в случае расширения файлов. Если СУБД работает с данными через файловую систему, то по сравнению с "чистым" диском емкость дисковой памяти в целом уменьшается на 19%.

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

Во-первых, и, что, возможно, наиболее важно, использование файловой системы позволяет работать с памятью с помощью стандартных утилит Unix. Например, стандартные утилиты Unix ufsdump и ufsrestore могут использоваться для того, чтобы производить надежное резервное копирование и восстановление памяти СУБД. К тому же гораздо проще осуществлять манипулирование отдельными частями базы данных. Например, можно осуществлять прямое перемещение таблицы с одного диска на другой, даже если используются диски разного размера и типа. Хотя каждый из поставщиков СУБД предлагает свои собственные внутренние утилиты резервного копирования и восстановления, все они различны. Более того, некоторые из них выполняются настолько медленно, что заказчики часто применяют копирование физических томов (т. е. используют команду dd(1))со всеми присущими такому копированию сложностями. Хранение данных в файловой системе позволяет выполнять единообразные, надежные процедуры для того, чтобы работать через систему и сеть. При этом, если необходимо, могут также использоваться инструментальные средства поставщиков СУБД.


Содержание раздела