Файлы базы данных. Файловое строение SQLite Какое расширение имеют файлы баз данных access

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

В отличие от других СУБД, Microsoft Access хранит все объекты (кроме страниц доступа к данным) в одном файле с расширением mdb. Кроме того, MDB-файл включает набор системных таблиц, которые содержат всю необходимую информацию об объектах базы данных, в том числе информацию о расположении и параметрах присоединенных таблиц других форматов. По умолчанию системные таблицы не выводятся в окне базы данных Access 2002. Чтобы получить доступ к этим таблицам, необходимо изменить один из параметров Access. Для этого нужно выбрать команду Сервис, Параметры (Tools, Options), раскрыть вкладку Вид (View) диалогового окна Параметры (Options) и в группе Отображать (Show) установить флажок Системные объекты (System Objects). Системные таблицы Access имеют доступ только на чтение, поэтому они не могут модифицироваться пользователем.

Ниже описаны форматы файлов баз данных, которые могут быть присоединены или импортированы Access 2002.

  • Таблицы предыдущей версии Access 2000 (MDB) обрабатываются совершенно аналогично таблицам Access 2002. Они не требуют от пользователя специальных усилий по импорту и открываются так же, как таблицы Access 2002. Отличие будет состоять только в том, что после названия открытого файла в заголовке окна базы данных в скобках появится надпись: Формат Access 2000 (Access 2000 format file).
  • Таблицы dBASE III, III+, IV, 5 и 7 (DBF), файлы полей типа MEMO (DBT), индексные файлы dBASE III (NDX) и индексные файлы dBASE IV (MDX).

Замечание

Драйверы ISAM, входящие в стандартную поставку Microsoft Office в составе компонента Microsoft Data Access Component (MDAC) 2.1 и выше, обеспечивают доступ к файлам формата DBF только на чтение. Чтобы иметь доступ на чтение и запись, требуется установить Borland Database Engine (BDE) 4.x или выше. Существуют также драйверы от фирмы Microsoft, которые обеспечивают доступ на чтение и запись и не требуют установки BDE, но для этого необходимо обратиться в службу Microsoft Technical Support.

Формат файлов таблиц и индексов dBASE III и dBASE IV является стандартным для систем управления базами данных, работающих на персональных компьютерах. Система управления базами данных Access 2002 позволяет присоединять индексные файлы форматов NDX и MDX. При изменении присоединенной проиндексиро-ванной таблицы dBASE Access автоматически обновляет индексные файлы.

Замечание

Наличие индексных файлов NDX (dBASE III), MDX (dBASE IV) необязательно. Тем не менее, если эти файлы доступны, лучше их использовать. В противном случае при изменении присоединенной таблицы dBASE эти изменения не отражаются в индексном файле, что может вызвать ошибки при попытке использования проиндексированных таблиц, измененных в Access, в приложениях dBASE.

Если импортируемый файл dBASE содержит поля типа MEMO, то необходимо, чтобы файлы с данными этих полей (DBT) были доступны, т. е. они должны находиться в той же папке, что и сама таблица. Если Access 2002 не удается найти файл DBT, то присоединение или импорт данных из такой таблицы вызовет ошибку. При экспорте данных из таблицы Access 2002, содержащей поле типа MEMO, в таблицу формата dBASE автоматически создается файл DBT и ему присваивается то же имя, что и файлу таблицы.

  • Табличные (DB) и индексные (РХ) файлы Paradox 3.x, 4.x и 5.0.

Access 2002 позволяет присоединять табличные и индексные файлы Paradox 3.x и 4.x для MS-DOS, а также Paradox для Windows 5.0 и 8.0. При обновлении данных в таблице Paradox из Access индексный файл должен быть доступен наряду с файлом таблицы. В процессе присоединения таблицы Access 2002 автоматически присоединяет и индексный файл (если он существует).

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

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

В данном посте база SQLite будет рассмотрена в разрезе, вы можете найти информацию о строении файла базы данных, о представлении данных в памяти, а также информацию о структуре и файловом представлении В – дерева.

Формат файла базы данных

Вся база данных хранится в одном файле на диске под названием «main database file». Во время транзакций, SQLite хранит дополнительную информацию во втором файле: журнал отката (rollback journal), либо, если база работает в режиме WAL, лог-файл с информацией о записях. Если приложение или компьютер отключился до окончания транзакции, то данные файлы называются «hot journal» или «hot WAL file» и содержат необходимую информацию для восстановления базы в согласованное состояние.

Страницы

Основной файл базы состоит из одной или нескольких страниц. Все страницы в одной базе имеют одинаковый размер, который может быть от 512 до 65536 байт. Размер страницы для файла базы определяется целым 2-ух байтовым числом со смещением 16 байт от начала файла базы данных.
Все страницы пронумерованы от 1 до 2147483646 (2^31 – 2). Минимальный размер базы: одна страница размеров 512 байт , максимальный размер базы: 2147483646 страниц по 65536 байт (~140 Тбайт ).

Заголовок

Первый 100 байт файла базы данных содержат заголовок базы, в таблице 1 представлена схема заголовка.

Таблица 1

Lock-byte страница

Страница блокировки является одной страницей файла базы и находится между смещениями 0х1073741824 и 0х1073742335, если размер базы меньше, то она не имеет страницы блокировки. Данная страница нужна для реализации примитивов блокировки OS Interface’ом.

Freelist

Список пустых страниц организован как связный список. Каждый элемент списка состоит из двух чисел по 4 байта. Первое число определяет номер следующего элемента freelist (trunk pointer), либо равняется нулю, если список кончился. Второе число, это указатель на страницу данных (Leaf page numbers). На рисунке ниже показана схема данной структуры.

B - tree

SQLite использует две вида деревьев: «table B – tree» (на листьях хранятся данные) и «index B – tree» (на листьях хранятся ключи).
Каждая запись в «table B – tree» состоит из 64-битового целое ключа и до 2147483647 байт произвольных данных. Ключ «table B – tree» соответствует ROWID таблицы SQL.
Каждая запись в «index B – tree» состоит из произвольного ключа до 2147483647 байт в длину.

Страница B - tree

Страница B-дерева имеет структуру:
  • Заголовок файла базы данных (100 байт)
  • Заголовок страницы B-дерева (8 или 12 байт)
  • Массив указателей ячеек
  • Незанятое пространство
  • Содержимое ячейки
  • Зарезервированное место

Заголовок файла базы данных встречается только на первой странице, которая всегда является старицей «table B – tree». Все остальные страницы B-дерева в базе не имеют этого заголовка.

Заголовок страницы B-дерева имеет размер 8 байт для страниц листьев и 12 байт для внутренних страниц. В таблице 2 представлена структура заголовка страницы.

Таблица 2

Freeblock - это структура, используемая для определения незанятого пространства внутри страницы B-дерева. Freeblock организованы в виде цепочки. Первые 2 байта в freeblock (от старшего к младшему), это смещением до следующего freeblock, или ноль, если freeblock является последним в цепочке. Третий и четвертый байты – целое число, размер freeblock в байтах, включая заголовок в 4 байта. Freeblocks всегда связаны в порядке возрастания смещения.

Число фрагментированных байт – это общее число неиспользуемых байт в области содержимого ячейки.


Массив указателей ячеек состоит из K 2-байтовых целочисленных смещений содержимого ячеек (при K ячейках в B-дереве). Массив отсортирован по возрастанию (от наименьших ключей к наибольшим).

Незанятое пространство - это область между последней ячейкой массива указателей и началом первой ячейки.

Зарезервированное место в конце каждой страницы используется расширениями для хранения информации о странице. Размер зарезервированной области определяется в заголовке базы (по умолчанию равен нулю).

TABLE

Каждая таблица (с ROWID) представляется в базе в виде table b - tree . Каждая запись в дереве, соответствует строке таблицы SQL. Одна строка SQL таблицы представляется в виде последовательности (той же что и указана при ее создании) столбцов таблицы в record format. Если таблица имеет INTEGER PRIMARY KEY, который является псевдонимом ROWID, то вместо его значения будет записано NULL. SQLite всегда будет использовать ключ table b - tree вместо значения NULL при обращении к INTEGER PRIMARY KEY. Если Affinity столбца (рекомендация приведения типа, подробнее habrahabr.ru/post/149635 в разделе «Типы данных и сравнение значений») является REAL и значение может быть преобразовано к INTEGER без потери данных, то значение будет хранится в виде целого числа. При извлечении данных из базы SQLite преобразует целое число к REAL.

TABLEWITHOUT ROWID

Каждая таблица (без ROWID) представляется в базе в виде index b - tree . Отличие от таблиц с rowid, заключается в том, что ключ каждой записи SQL таблицы хранится в виде record format, при чем столбцы ключа хранятся как указаны в PRIMARY KEY, а остальные в порядке указанном в объявлении таблицы.
Таким образом записи в index b - tree представляются также как и в table b - tree , кроме порядка столбцов и того, что содержание строки хранится в ключе дерева, а не в качестве данных на листьях как в table b - tree .

INDEX

Каждый индекс (объявленный CREATE INDEX, PRIMARY KEY или UNIQUE) представляется в базе в виду index b - tree . Каждая запись в таком дереве соответствует строки в SQL таблице. Ключ индексного дерева представляет собой последовательность значений столбцов указанных в индексе и завершается значением ключа строки (rowid или primary key) в record format.

UPD 13:44 : переработан раздел Representation , спасибо за критику mayorovp (можно было конечно и пошевелиться, ну да ладно).

Для создания базы данных запускается утилита IBConsol и устанавливается сеанс связи с локальным сервером. Затем из главного меню утилиты подается команда

Tools -» Interactive SQL

При этом на экран выводится диалоговая панель «Interactive SQL» для описания характеристик файла базы данных (рис. 5.1), в рабочем поле которой и пишется запрос на создание базы данных.

Для выполнения запроса необходимо с клавиатуры подать команду Ctrl + Е или из главного меню подать команду

Рис. 4.1. Запуск сервера InterBase

Создание файла базы данных

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

Для создания пустого файла базы данных предназначен 501-запрос CREATE DATABASE. В созданный файл базы данных впоследствии будут помещаться файлы таблиц, индексов, просмотров и т. д.

Формат запроса

CREATE DATABASE SCHEMA

[ USER [ PASSWORD ] ]

[ PAGE SIZE [ = ] ]

[ LENGTH [ = ] [ PAGE [ S ] ] ]

[ DEFAULT CHARACTER SET ] f ];

где опция имеет структуру

FILE [ имеет структуру

LENGTH [ = ] [ PAGE [ S ] ] STARTING [ АТ [ PAGE} }

Назначение параметров:

Указывается полное имя файла базы данных. Имя пишется по правилам используемой платформы;

USER - указывается имя пользователя (владельца) базы данных. При каждом обращении к базе данных запрашивается имя пользователя с целью его идентификации;

PASSWORD - указывается пароль, который запрашивается при каждом обращении к базе данных. Пароль запрашивается вместе с именем пользователя (USER

PAGE SIZE [ = ] - задается размер страницы базы данных в байтах. Допустимы следующие размеры одной страницы: 1024 (по умолчанию), 2048, 4096 и 8192;

DEFAULT CHARACTER SET - параметр определяет набор символов, которые будут использоваться для хранения данных в базе данных. То есть задаются символы национальных алфавитов. По умолчанию используется набор NONE , т. е. допускается использование только символов английского алфавита. Для того чтобы использовать буквы русского и английского алфавитов при хранении символьных данных, следует задать набор WIN 1251. Набор символов задается один раз при создании базы данных. Изменить кодировку, заданную по умолчанию или этой опцией, можно при определении конкретных доменов или столбцов;

FILE - указывается имя одного или нескольких файлов, составляющих единую базу данных. Имя каждого файла указывается отдельной опцией FILE ;

STARTING [ АТ [ PAGE ] ] - определяет начальную страницу соответствующего файла базы данных (при многофайловой базе данных);

LENGTH [ = ] [ PAGE [ S ] ] - задает размер текущего файла в страницах. По умолчанию - 75 страниц. Минимальное количество страниц одного файла - 50.

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

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

Размер страницы для всей базы данных фиксирован и может иметь одно из значений: 1024, 2048, 4096 или 8192 байта. По умолчанию принят размер 1024 байта. Обмен данными между приложением клиента и базой данных производится в размере страницы. Увеличение размера страницы уменьшает время обработки данных (выполнение запросов) за счет сокращения количества операций чтения, но увеличение размера страницы оправдано только в том случае, если выборки данных (порции информации) имеют большой размер. Если размер выборки мал при большом размере страницы, то объем страницы используется не эффективно.

Пример 5.1. Создание многофайловой (распределенной) базы данных.

CREATE DATABASE D:SKAZKABOOK.GDB USER "SYSDBA" PASSWORD "masterkey"

FILE D:SKAZKABOOK.GDl STARTING AT PAGE 1501 LENGTH 100

FILE D:SKAZKABOOK.GD2

На диске D внутри каталога «SKAZKA» создается база данных, состоящая из трех файлов:

  • первый файл с именем BOOK.GDB имеет размер страниц 1024 байта (по умолчанию), количество страниц 1500 (с 1 по 1500, так как второй файл BOOK.GD 1 начинается со страницы с номером 1501);
  • второй файл с именем BOOK. GDI имеет размер страниц 1024 байта, количество страниц - 100;
  • третий файл BOOK.GD2 имеет размер страниц 1024 байта, количество страниц не определено (до заполнения диска).

Заданы имя пользователя (владельца базы данных) - SYSDBA и пароль - masterkey.

Удалить базу данных может либо пользователь (владелец) базы данных, либо системный администратор, используя команду

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

После применения этой команды последующее восстановление базы данных невозможно.

Как показано в следующей таблице, базы данных SQL Server имеют три типа файлов.

Описание

Первичный

Первичный файл данных содержит сведения, необходимые для запуска базы данных, и ссылки на другие файлы в базе данных. Данные и объекты пользователя могут храниться в данном файле или во вторичном файле данных. В каждой базе данных имеется один первичный файл данных. Для имени первичного файла данных рекомендуется расширение MDF.

Вторичный

Вторичные файлы данных не являются обязательными; это пользовательские файлы, в которых хранятся данные пользователя. Вторичные файлы могут быть использованы для распределения данных на несколько дисков, в этом случае каждый файл записывается на отдельный диск. Кроме того, если размер базы данных превышает максимальный размер для одного файла Windows, можно использовать вторичные файлы данных, таким образом база данных сможет расти дальше.

Журнал транзакций

Файлы журнала транзакций содержат сведения, используемые для восстановления базы данных. Для каждой базы данных должен существовать хотя бы один файл журнала. Для файлов журнала транзакций рекомендуется расширение LDF.

Например, простая база данных с именем Sales может содержать один первичный файл, содержащий все данные и объекты, и один файл журнала, содержащий сведения журнала транзакций. Более сложная база данных с именем Orders может содержать один первичный файл и пять вторичных файлов. Данные и объекты внутри базы данных распределяются по всем шести файлам, а четыре файла журнала содержат сведения журнала транзакций.

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

Логические и физические имена файлов

Файлы SQL Server имеют два имени.

logical_file_name

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

os_file_name

Имя os_file_name - это имя физического файла, включая путь к каталогу. Оно должно соответствовать правилам для имен файлов операционной системы.

Файловые группы

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

Например, три файла, Data1.ndf, Data2.ndf и Data3.ndf, могут быть созданы на трех дисках соответственно и отнесены к файловой группе fgroup1 . В этом случае можно создать таблицу на основе файловой группы fgroup1 . Запросы данных из таблицы будут распределены по трем дискам, и это улучшит производительность. Подобного улучшения производительности можно достичь и с помощью одного файла, созданного на чередующемся наборе дискового массива RAID. Тем не менее файлы и файловые группы позволяют без труда добавлять новые файлы на новые диски.

Все файлы данных хранятся в файловых группах, перечисленных в следующей таблице.

Файлы журналов не могут входить в состав файловых групп. Управление пространством журнала отделено от управления пространством данных.

Файл не может входить в состав нескольких файловых групп. Таблицы, индексы и данные больших объектов могут быть ассоциированы с указанной файловой группой.

Запуск, приостановка и завершение работы SQL Server .

    C использованием Диспетчер конфигурации SQL Server

    из среды SQL Server Management Studio

    из командной строки.

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

Описание

Формат файла *.sql расшифровывается как "структурные данные (structured files query language). Категориально относится к файлам баз данных. Содержит текстовую информацию, а также набор инструкций, которые позволяют ее обрабатывать - осуществлять поиск, классифицировать, удалять строки из БД (базы данных), добавлять новые, создавать выборки на основе заданных параметров. Набор инструкций представлен в виде операторов языка запросов.

Чем открыть файл SQL?

SQl формат открывают все программы, работающие с базами данных. В этот список включают:

  • MySQL - одна из самых распространенных Совместима со всеми известными операционными системами.
  • Microsoft Office Access - программа из расширенного набора офисного программного обеспечения для Windows.
  • PostgreSQL - современная и удобная СУБД, конкурирует с MySQL.

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

Текстовые редакторы

Для того чтобы посмотреть, что содержит файл SQL, *.sql можно открыть через любой простой текстовый редактор, например, "Блокнот", Wordpad, Vim или Notepad. Кроме того, эпитет "любой" означает, что текстовые редакторы "Линукс" также способны открывать и редактировать файлы баз данных.

Важно! После редактирования файла не забудьте сохранить его в исходном формате.

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



Статьи по теме: