Чтение онлайн

на главную

Жанры

Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ

Борри Хелен

Шрифт:

Несмотря на эти небольшие изменения, база данных Employee остается в значительной степени тем, чем она всегда и была, - примером того, как не надо проектировать базы данных! Новый пример базы данных для Firebird сейчас создается. Он должен быть готов к концу 2004 года наи на других сайтах сообщества Firebird. В конце концов этот пример будет поставляться в комплекте Firebird.

Приложение 7. Ограничения Firebird

Большинство фактических ограничений Firebird практически шире того, что нужно в программах. Например, вы можете определить до 32 767 [169] столбцов в таблице, однако зачем вы будете это делать? В табл. 7.1 представлены теоретические и практические ограничения, применимые к Firebird 1.0.x и 1.5. Некоторые из этих ограничений будут изменены в сторону улучшения в следующих версиях, так что просматривайте заметки по релизу, чтобы отследить изменения.

169

На самом деле, как показывает практика, не более 16 000 столбцов INTEGER.- Прим. науч. ред.

Таблица П7.1. Ограничения Firebird 1.0.x и 1.5

Объект

Элемент

Firebird 1.0.x

Firebird 1.5

Замечания

Идентификаторы

Почти все объекты

31 символ

31 символ

Нельзя использовать символы вне диапазона US ASCII (ASCIIZ)

Имена ограничений

27 символов

27 символов

Даты

Самые ранние и самые поздние даты

января 100 г.

Самая поздняя

31 декабря 9999 г. Замечание: считается, что сервер может аварийно завершаться, если системная дата на сервере установлена больше, чем 2039 [170] .

Сервер

Максимальное количество подключенных клиентов [171]

024 (TCP/IP)

024 (TCP/IP)

Теоретическое ограничение меньше для Windows с именованными каналами (NetBEUI) - сервер, скорее всего, зависнет при более чем 930 одновременных соединениях. Практически нормальным будет не более 150 одновременных подключений клиентов Суперсервера при обычных интерактивных приложениях для сервера с низкими спецификациями. Для Классического сервера это количество может быть меньше по причине того, что каждый клиент использует больше ресурсов

Максимальное

количество баз данных, открытых в одной транзакции

Количество баз данных, открытых при запуске транзакции с помощью isc_start_multiple, ограничивается только доступными системными ресурсами. Транзакция, запущенная с помощью isc start transaction, ограничивает количество одновременно подключенных баз данных 16

База данных

Количество таблиц

32 767

32 767

Максимальный размер

7 Тбайт

7 Тбайт

Приблизительное теоретическое ограничение. Не известна база данных Firebird с таким количеством записей, чтобы ее размер превышал 7 Тбайт

Максимальный размер файла

Зависит от файловой системы. В FAT32 и ext2 2 Гбайт. Более старая NTFS и ext3 обычно дают 4 Гбайт. Многие 64-битовые файловые системы не устанавливают ограничений на размер файла с совместным доступом

Максимальное количество файлов в базе данных

Теоретически 216 (65 536) включая файлы оперативной копии (shadow). Порог будет ниже, если операционная система накладывает ограничения на количество файлов, которое может быть одновременно открыто в одном процессе. Некоторые позволяют увеличить эту границу

Максимальный размер страницы

16 386 байт

16 386 байт

Другими размерами являются 1024, 2048, 4096 (по умолчанию) и 8192 байт

Максимальное количество буферов кэша

65 536 страниц

65 536 страниц

Практическое ограничение зависит от доступного объема RAM. Общий размер (страницы * размер страницы для Суперсервера, страницы * размер страницы * количество одновременных пользователей для Классического сервера) никогда не должен превышать половины доступной памяти RAM. Рассматривайте в качестве практического ограничения 10 000 страниц и увеличивайте или уменьшайте, отходя от этого количества, в соответствии с требованиями производительности

Таблицы

Максимальное количество версий для структуры таблицы

255

255

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

Максимальный размер строки

64 Кбайт

64 Кбайт

Подсчитывается в байтах. Столбцы массивов и BLOB каждый занимает 8 байт для хранения идентификатора; VARCHAR - длина в байтах + 2; CHAR - длина в байтах; SMALLINT - 2; INTEGER, FLOAT, DATE и TIME - 4; BIDINT, DOUBLE PRECISION и TIMESTAMP - 8; NUMERIC и DECIMAL - 4 или 8 в зависимости от точности. Системные таблицы имеют ограничение на размер страницы 128 Кбайт

Максимальное количество строк [172]

2(^32^) строки

2(^32^) строки

Больше или меньше. Строки под- считываются с помощью 32-битового беззнакового целого для таблиц и 32-битового для индекса. Таблица с длинной строкой - имеющая много полей или с очень длинными полями - может хранить меньше строк, чем таблица с очень короткими строками. Все строки - включая удаленные - попадают в это число; поля BLOB, хранимые на страницах данных таблицы, также входят в это число

Максимальное количество столбцов

Зависит от используемых типов данных (см. Максимальный размер строки)

Максимальное количество индексов на таблицу

64

256

Максимальный размер внешнего файла

4 Гбайт в Windows NTSF, 2 Гбайт в Windows FAT32, Linux ext2, ext3 и Solaris

Индексы

Максимальный размер [173]

252 байт

252 байт

Этот теоретический максимум применяется к индексу из одного столбца, где набор символов является однобайтовым и использует порядок сортировки по умолчанию (двоичный). Подсчитываются байты, а не символы. Практический максимум уменьшается для составных индексов, многобайтовых наборов символов и сложных порядков сортировки. Например, индекс для одного столбца, использующего 3-байтовые символы UNICODE_FSS, может иметь максимум (253/3) = 84 символа. Некоторые последовательности сортировки для ISO8859 используют до 4 байт на символ только для атрибутов сортировки

Максимальное количество сегментов

16

16

Запросы

Максимальное количество соединяемых таблиц

256

256

Теоретическое ограничение

Максимальное количество вложенных подзапросов

Теоретически предела нет, но большая вложенность подзапросов ухудшает производительность. Производительность и потребление ресурсов определяется практическими лимитами, конкретно для каждого запроса

Максимальный размер столбца, составляющего поля ORDER BY

32 Кбайт

32 Кбайт

Модули PSQL

Максимальный размер BLR

48 Кбайт

48 Кбайт

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

Максимальное количество событий в процедуре или триггере

Нет ограничения

Нет ограничения

Практический лимит совпадает с ограничением на размер BLR

Количество рекурсивных вызовов

750 на Windows, 1000 на платформах POSIX

BLOB

Максимальный размер BLOB

Максимум зависит от размера страницы. Для страницы 2 Кбайт максимальный размер - 512 Мбайт. Для 4 Кбайт - 4 Гбайт. Для страниц размера 4 и 8 Кбайт - 32 и 256 Гбайт соответственно

Максимальный размер сегмента

BLOB хранятся посегментно, теоретический максимальный размер которого не более 64 Кбайт. В DSQL нет возможности указать размер сегмента, поскольку его устанавливает клиентская программа или библиотека-компонент, как правило, игнорируя размер сегмента, указанный в определении BLOB

170

Мало какие нынешние приложения переживут 19 января 2038 года - это проблема переполнения даты еще более худшая, чем проблема 2000 года. Устаревший формат даты в языке С (структура time t) не способен хранить года более 2038. С другой стороны, так долго приложения не эксплуатируются, а для внедряемой сейчас 64-битовой архитектуры и новых приложений такой проблемы нет.
– Прим. науч. ред.

171

3 Это число больше реального числа, которое способна обеспечить операционная система. Например, RedHat Linux без изменения настроек и перекомпиляции ядра допускает до -600 соединений. Чаще всего проблема с числом соединений возникает из за "несконфигурированного" xinetd на Linux, где по умолчанию задано ограничение в -50-60 соединений на конкретное приложение.
– Прим. науч. ред.

172

Реальное физическое ограничение на объем одной таблицы - 36.7 Гбайт. Это примерно 600 миллионов записей, состоящих из двух INTEGER Ограничение связано с внутренним 32-разрядным идентификатором. В Firebird 2.0 это ограничение устранено (используются 64(40)-битовые идентификаторы).
– Прим. науч. ред.

173

В Firebird 2.0 максимальный размер ключа индекса- 1/4 размера страницы. Например, для страницы 4 Кбайт это 1024 байт.
– Прим. науч. ред.

Приложение 8. Наборы символов и порядков сортировки

В табл. П8.1 содержатся наборы символов и порядки сортировки, которые существовали на момент создания Firebird 1.5.0. Некоторые из указанных элементов недоступны в более ранних версиях Firebird. Если вы инсталлировали более позднюю версию, и набор символов или порядок сортировки, нужные вам, здесь не указаны, обратитесь к заметкам по релизу вашей версии и любой другой версии после 1.5, чтобы узнать были ли они добавлены.

Таблица П8.1. Наборы символов и порядок сортировки для Firebird 1.5.0

ID

Название

Байтов на символ

Порядок сортировки

Язык

Алиас

2

ASCII

1

ASCII

Английский

ASCII7 USASCII

56

BIG_5

2

BIG_5

Китайский, Вьетнамский, Корейский

BIG5, DOS_950, WIN_950

50

CYRL

1

CYRL, DB_RUS, PDOX_CYRL

Русский, Русский dBase, Русский Paradox

10

DOS437

1

DOS437, DB_DEU437, DB_ESP437, DB_FIN437, DB_FRA437, DB_ITA437, DB_NLD437, DB_SVE437, DB_UK437

Английский (США), Немецкий dBase, Испанский dBase, Финский dBase, Французский dBase, Итальянский dBase, Голландский dBase, Шведский dBase, Английский (Великобритания) dBase,

DOS_437

DB_US437

Английский (США) dBase,

PDOX_ASCII

Кодовая страница Paradox- ASCII,

PDOX_SWEDFIN

Paradox Шведская / Финская кодовые страницы,

PDOX_NTL

Paradox международный английский кодовая страница

9

DOS737

1

DOS737

Греческий

DOS_737

15

DOS775

1

DOS775

Страны Балтии

DOS_775

11

DOS850

1

DOS850, DB_DEU850, DB_ESP850, DB_FRA850, DB_FRC850, DB_ITA850, DB_NLD850, DB_PTB850, DB_SVE850, DB_UK850, DB_US850

Латинский I (нет символа Евро), Немецкий, Испанский, Французский, Французский - Канада, Итальянский, Голландский, Португальский - Бразилия, Шведский, Английский - Великобритания, Английский - США

DOS_85C>

45

DOS852

1

DOS852, DB_CSY, DB_PLK, DB_SLO, PDOX_CSY, PDOX_HUN, PDOX_PLK, PDOX_SLO

Латинский II, Чешский dBase, Польский dBase, Словацкий dBase, Чешский Paradox, Венгерский Paradox, Польский Paradox, Словацкий Paradox

DOS_852

46

DOS857

1

DOS857 DB_TRK

Турецкий, Турецкий dBase

DOS_857

16

DOS858

1

DOS858

Латинский I с символом Евро

DOS_858

13

DOS86Q

1

DOS86O DB PTG860

Португальский, Португальский dBase

1

47

DOS861

1

DOS861 PDOX_SL

Исландский,

Исландский Paradox

DOS_861

17

DOS862

1

DOS862

Иврит

DOS_862

14

DOS863

1

DOS863 DB_FRC863

Французский - Канада, Французский dBase - Канада

DOS_863

18

DOS864

1

DOS864

Арабский

DOS_864

12

DOS865

1

DOS865 DB_DAN865 DB_NOR865 PDOX_NORDAN4

Скандинавские, Датский dBase, Норвежский dBase, Paradox Норвегия и Дания

DOS_865

48

DOS866

1

DOS866

Русский

DOS_866

49

DOS869

1

DOS869

Современный греческий

DOS_869

6

EUCJ_0208

2

EUCJ_0208

Японские EUC

EUCJ

57

GB_2312

2

GB_2312

Упрощенный китайский (Гонконг, Корея)

DOS_936, GB2312, WIN_936

21

ISO8859_1

1

ISO8859_1, DA_DA, DE_DE, DU_NL, EN_UK, EN_US, ES_ES, FI_FI, FR_CA, FR_FR, IS_IS, IT_IT

NO_NO, PT_PT, sv_sv

Латинский I, Датский, Немецкий, Голландский, Английский, Великобритания, Английский, США, Испанский, Финский, Французский, Канада, Французский, Исландский, Итальянский, Норвежский, Португальский, Шведский

ANSI, ISO88591, LATIN 1

22

ISO8859_2

1

ISO8859_2, CS_CZ ISO_HUN

Латинский 2 - Центральная Европа (хорватский, чешский, венгерский, польский, румынский, сербский, словацкий, словенский), Чешский, Венгерский

ISO-8859-2, ISO88592, LATIN2

23

ISO8859_3

1

ISO8859_3

Латинский 3 - Южная Европа (мальтийский, эсперанто)

ISO-8859-3, ISO88593, LATIN3

34

ISO8859_4

1

ISO8859_4

Латинский 4 - Северная Европа (эстонский, латышский, литовский, гренландский, саамский)

ISO-8859-4, ISO88594, LATIN4

35

ISO8859_5

1

ISO8859_5

Кириллица (русский)

ISO-8859-5, ISO88595

36

ISO8859_6

1

ISO8859_6

Арабский

ISO-8859-6, ISO88596

37

ISO8859_7

1

ISO8859_7

Греческий

ISO-8859-7, ISO88597

38

ISO8859_8

1

ISO8859_8

Иврит

ISO-8859-8, ISO88598

39

ISO8859_9

1

ISO8859_9

Латинский 5

ISO-8859-9, ISO88599, LATIN5

40

ISO8859_1 3

1

ISO8859_13

Латинский 7 - Балтика

ISO-8859- 13, ISO885913, LATIN 7

44

KSC_5601

2

KSC_5601 KSC_DICTIONARY

Корейский, Корейский - словарный порядок сортировки

DOS_949, KSC5601, WIN_949

19

NEXT

1

NEXT

NXT_DEU

NXT_FRA

NXT_ITA

NXT_US

Кодирование NeXTSTEP, Немецкий, Французский, Итальянский, Английский, США

0

NONE

1

NONE

Нейтральная кодовая страница. Перевод в верхний регистр ограничен кодами ASCII 97-122

1

OCTETS

1

OCTETS

Двоичный символ

BINARY

5

SJIS_0208

2

SJIS_0208

Японский

SJIS

3

UNICODE FSS

3

UNICODE_FSS

UNICODE

SQL_TEXT, UTF-8, UTF8, UTF_FSS

51

WIN1250

1

WIN1250, PXW_CSY, PXW_HUN, PXW_HUNDC, PXW_PLK PXW_SLO

ANSI, Центральная Европа, Чешский, Венгерский, Венгерский, словарная сортировка, Польский, Словацкий

WIN.1250

52

WIN1251

1

WIN1251 WIN1251_UA PXW_CYRL

ANSI кириллица, Украинский, Paradox кириллица (русский)

WIN_1251

53

WIN1252

1

WIN1252 PXW_NTL PXW_INTL850 PXW_NORDAN4 PXW_SPAN PXW_SWE D FIN

ANSI - Латинский I, Английский интернациональный, Paradox многоязыковой Латинский I, Норвежский и датский, Paradox испанский, Шведский и финский

WIN_1252

54

WIN1253

1

WIN1253 PXW_GREEK

ANSI греческий, Paradox греческий

WIN_1253

55

WIN1254

1

WIN1254 PXW_TURK

ANSI турецкий, Paradox турецкий

WIN_1254

58

WIN1255

1

WIN1255

ANSI иврит

WIN_1255

59

WIN1256

1

WIN1256

ANSI арабский

WIN_1256

60

WIN1257

1

WIN1257

ANSI стран Балтии

WIN_1257

Приложение 9. Системные таблицы и просмотры

Когда вы создаете базу данных, Firebird начинает с создания своих собственных таблиц, в которых он сохраняет метаданные всех объектов базы данных - не только определенных вами объектов, но также и своих собственных внутренних объектов. Эти таблицы называются системными таблицами. Просматривая определения метаданных для системных таблиц, вы найдете листинги DDL для множества просмотров для системных таблиц, которые могут оказаться вам полезными.

Системные таблицы

Описания в этом разделе помогут вам в проектировании запросов для понимания и администрирования ваших баз данных. Для изменения метаданных существуют операторы DDL. Вообще не рекомендуется использовать операторы SQL для изменения таблиц метаданных. Риск разрушения базы данных при выполнении таких действий весьма высок.

В таблицах применяются следующие аббревиатуры:

* 1DX-индексировано;

* UQ - уникальное.

Где существуют составные индексы, приведены цифры для указания последовательности индексных сегментов.

RDB$CHARACTER_SETS хранит ключи для наборов символов, доступных базе данных.

Идентификатор столбца

Тип

IDX

UN

Описание

RDB$CHARACTER_SET_NAME

CHAR(31)

Y

Y

Имя набора символов, известного в Firebird

RDB$FORM_OF_USE

CHAR(31)

Не используется

RDB$NUMBER_OF_CHARACTERS

INTEGER

Количество символов в наборе (не используется для доступных наборов символов)

RDB $ DEFAULT COLLATE_NAME

CHAR(31)

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

RDB $ CHARACT ER_SET_I D1

SMALLINT

Y

Y

Уникальный идентификатор для этого набора символов, если он используется

RDB$SYSTEM_FIAG

SMALLINT

Будет 1, если набор символов был определен в системе при создании базы данных; 0 для набора символов, определенного пользователем

RDB$DESCRIPTION

BLOB TEXT

Для хранения документации

RDB$FUNCTION_NAME .

CHAR(31)

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

RDB$BYTES_PER_CHARACTER

SMALLINT

Размер символов в наборе, указанный в байтах. Например, UNICODE_FSS использует 3 байта на символ

KDB$CHECK_CONSTKAXNTS содержит перекрестные ссылки имен и триггеров для ограничений CHECK и NOT NULL.

Идентификатор столбца

Тип

IDX

UN

Описание

RDB$CONSTRAINT_NAME

CHAR(31)

Y

Имя ограничения

RDB$TRIGGER_NAME

CHAR(31)

Для ограничения CHECK это имя триггера, который поддерживает данное ограничение. Для ограничения NOT NULL это имя столбца, к которому применяется ограничение - имя таблицы может быть найдено через имя ограничения

RDB$COLLATIONS хранит определения последовательностей сортировки.

Идентификатор столбца

Тип

IDX

UN

Описание

RDB$COLLATION_NAME

VARCHAR(31)

Y

Y

Имя последовательности сортировки

RDB $ COLLATI ON_I D

SMALLINT

Y(1)

Y(1)

Вместе с идентификатором набора символов является уникальным идентификатором последовательности сортировки

RDB$CHARACTER_SET_IB

SMALLINT

Y(2)

Y(2)

Вместе с идентификатором последовательности сортировки является уникальным идентификатором

RDB$COLLATI ON_ATTRIBOTES

CHAR(31)

Не используется

RDB$SYSTEM_FLAG

SMALLINT

Определенное пользователем = 0; определенное в системе = 1 или выше

RDB$DESCRIPTION

BLOB TEXT

Для хранения документации

RDB$FONCTION_NAME

CHAR(31)

В настоящий момент не используется

RDB$DATABASE является файлом из одной записи, содержащей основную информацию о базе данных.

Идентификатор столбца

Тип

IDX

UN

Описание

RDB$DESCRIPTION

BLOB TEXT

Текст комментария, включенный в оператор CREATE DATABASE/CREATE SCHEMA, предназначен для того, чтобы быть записанным здесь. Этого не происходит. Однако вы можете сюда добавить любое количество текста с целью документирования. Он сохранится после резервного копирования и восстановления

RDB$RELATION_ID

SMALLINT

Число, которое каждый раз увеличивается на единицу, когда к базе данных добавляется новая таблица или просмотр

RDB$SECORITY_CLASS

CHAR(31)

Может ссылаться на класс безопасности, определенный в RDB$SECORITY_CLASSES, для обращения к общим для базы данных ограничениям доступа

RDB$CHARACTER_SET_NAME

CHAR(31)

Набор символов по умолчанию для базы данных. NULL - набор символов NONE

Поделиться:
Популярные книги

Идеальный мир для Социопата 5

Сапфир Олег
5. Социопат
Фантастика:
боевая фантастика
рпг
5.50
рейтинг книги
Идеальный мир для Социопата 5

Столичный доктор

Вязовский Алексей
1. Столичный доктор
Фантастика:
попаданцы
альтернативная история
8.00
рейтинг книги
Столичный доктор

На руинах Мальрока

Каменистый Артем
2. Девятый
Фантастика:
боевая фантастика
9.02
рейтинг книги
На руинах Мальрока

Инцел на службе демоницы 1 и 2: Секса будет много

Блум М.
Инцел на службе демоницы
Фантастика:
фэнтези
5.25
рейтинг книги
Инцел на службе демоницы 1 и 2: Секса будет много

Ночь со зверем

Владимирова Анна
3. Оборотни-медведи
Любовные романы:
любовно-фантастические романы
5.25
рейтинг книги
Ночь со зверем

Провинциал. Книга 1

Лопарев Игорь Викторович
1. Провинциал
Фантастика:
космическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Провинциал. Книга 1

На границе империй. Том 10. Часть 3

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 3

Оружейникъ

Кулаков Алексей Иванович
2. Александр Агренев
Фантастика:
альтернативная история
9.17
рейтинг книги
Оружейникъ

Газлайтер. Том 9

Володин Григорий
9. История Телепата
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Газлайтер. Том 9

Идеальный мир для Лекаря 19

Сапфир Олег
19. Лекарь
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 19

Боги, пиво и дурак. Том 4

Горина Юлия Николаевна
4. Боги, пиво и дурак
Фантастика:
фэнтези
героическая фантастика
попаданцы
5.00
рейтинг книги
Боги, пиво и дурак. Том 4

Черный Маг Императора 9

Герда Александр
9. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Черный Маг Императора 9

Жена на четверых

Кожина Ксения
Любовные романы:
любовно-фантастические романы
эро литература
5.60
рейтинг книги
Жена на четверых

Энфис 2

Кронос Александр
2. Эрра
Фантастика:
героическая фантастика
рпг
аниме
5.00
рейтинг книги
Энфис 2