Руководство по технической оценке продукта SQLBase от компании Gupta Technologies. Часть 2

Сурен Бехари (Suren Behari), менеджер по продуктам группы разработчиков
Чарльз Маклаут (Charles McLouth), менеджер по продуктам - SQLBase

начало статьи

Часть 2 - Защита серверов и баз данных, права на доступ к базе данных

В настоящее время во всех компаниях большую роль играют полномочия на доступ и безопасность баз данных, так как все больше приложений получают доступ к конфиденциальной информации. SQLBase TE 56 и SQLBase TE 128 обеспечивают абсолютную защиту от несанкционированного доступа к данным. Можно использовать шифрование на уровнях сервера, базы данных и страницы базы данных, что обеспечивает лучшую безопасность передачи данных среди аналогичных продуктов на рынке баз данных.

Полномочия на доступ к базе данных

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

Уровни полномочий на доступ организованы в иерархическом порядке и предназначены для строго контроля доступа к данным:

  • SYSADM (системный администратор): Создание учетных записей пользователей и назначение им уровней полномочий и паролей.
  • DBA (администратор базы данных): Предоставление, изменение или отмена объектных привилегий пользователей.
  • RESOURCE (ресурсы): Создание и размещение объектов. Предоставление, изменение или отмена привилегий пользователей данных объектов.
  • CONNECT (подключение): Доступ к объектам, изменение объектов невозможно.

Безопасность баз данных и серверов

SQLBase TE 56 и TE 128 обеспечивают безопасность на всех уровнях процесса клиент/сервер. К числу функциональных возможностей относятся:

  • Более высокий уровень безопасности серверов.
  • Усовершенствованная технология проверки паролей.
  • Шифрование страниц баз данных.
  • Защита страниц баз данных от изменения.
  • Безопасная передача данных.

Более высокий уровень безопасности серверов

На уровне сервера SQLBase TE 56 обеспечивает два типа безопасности:

  • Пароли подключения к серверу.
  • Пароли сервера обеспечения безопасности.
  • Пароли подключения к серверу.

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

Подключение к серверу позволяет выполнять следующие операции:

  • Резервное копирование и восстановление базы данных и ее журналов.
  • Создание и удаление базы данных и ее журналов.
  • Установка и удаление базы данных.
  • Получение подробных сведений о деятельности сервера с помощью SQL/API.

Пароли сервера обеспечения безопасности

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

Для настройки сервера обеспечения безопасности необходимо к нему подключиться и задать пароль. Затем следует подключиться к базе данных, которую требуется зашифровать, и указать ключ шифрования базы данных. Затем в SQLBase TE можно выполнять шифрование базы данных.

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

Усовершенствованная технология проверки паролей

Защита от программ подбора паролей в SQLBase TE использует усовершенствованную технологию проверки паролей. Когда SQLBase TE определяет неправильный пароль или имя пользователя, то выполняется задержка ответа вызывающему. При правильном подключении задержки не происходит. Термин "пароль" относится как к подключению к базе данных, так и к подключению к серверу. При каждом вводе неправильного пароля SQLBase TE увеличивает время задержки независимо от источника ввода пароля. Время задержки уменьшается только после определенного периода времени, в течение которого не было попыток ввода неправильного пароля.

Шифрование страниц баз данных

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

Уровни безопасности баз данных соответствуют типу шифрования, используемому для скрытия информации, хранимой в базе данных. Выбор метода шифрования представляет собой компромисс между производительностью и сложностью взлома шифра. В SQLBase имеются четыре уровня безопасности: None (нет) - стандарт SQLBase (без шифрования), Low (низкий) - стандарт SQLBase (криптограмма), Medium (средний) - SQLBase TE 56 (56-битное шифрование по алгоритму DES), High (высокий) - SQLBase TE 128 (то же, что и для SQLBase TE, но с использованием 128-битного тройного шифрования по алгоритму DES).

Уровень безопасности базы данных задается с помощью команды ALTER DBSECURITY. При использовании шифрования базы данных SQLBase TE хранит страницы базы данных на диске в зашифрованном виде. Дешифрование является прозрачным для клиента.

Защита страниц баз данных от изменения

Защита страниц базы данных от изменения в SQLBase TE используется для определения изменений данных несанкционированным способом.

Имеется три уровня защиты от изменения страниц базы данных: нет защиты, 16-битный контроль избыточного кода (CRC) и алгоритм SHA. Уровень защиты страниц базы данных от изменений задается с помощью команды ALTER DBSECURITY.

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

Безопасная передача данных

Безопасную передачу данных можно использовать между клиентами и серверами SQLBase для предотвращения возможности просмотра данных во время пересылки неавторизованными пользователями.

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

Часть 3 - Разработка приложений с помощью SQLBase

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

Интерфейсы программирования

SQL/API - ключ к созданию лучших приложений

Основой открытости программирования в SQLBase является SQL/API - обширный и подробно документированный набор функций, позволяющий полностью контролировать доступ к данным и их манипулированием, а также операциями на сервере. Это позволяет приложениям использовать все функциональные возможности, предоставляемые инструментарием SQLBase (например, консолью SQLConsole), и обеспечивает возможность разрабатывать многофункциональные автономные приложения.

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

SQLBase предоставляет интерфейс в виде библиотек DLL для доступа из любых стандартных инструментальных средств разработки Windows и в виде Shared Object (общие объекты) для доступа из приложений Linux.

Стандартизованное подключение с помощью интерфейса ODBC

ODBC представляет собой стандартный интерфейс доступа к базам данных. Поэтому компания GUPTA включила в SQLBase драйвер ODBC для Windows и Linux.

Любое клиентское программное обеспечение (Visual Basic, Crystal Reports и др. в Windows, Perl и PHP в Linux) может использовать драйвер ODBC для доступа к SQLBase.

Поставщик OLEDB для Windows

OLE DB для взаимодействия с SQLBase позволяет использовать любой язык, поддерживающий модель COM. Фактически OLE DB представляет собой стандарт доступа к базам данных.

OLE DB обеспечивает более быстрый доступ и обладает большей функциональностью по сравнению с ODBC. Например, Visual Studio для доступа к SQLBase может использовать поставщик OLE DB от SQLBase.

Открытая платформа разработки с JDBC

С появлением Java межплатформенные приложения стали реальностью. Таким приложениям необходим прямой доступ к базам данных, и для этого в SQLBase используется Java драйвер JDBC (4 уровня), обеспечивающий доступ к SQLBase любым Java приложениям на любой платформе.

Ниже перечислены преимущества такой реализации:

  • Нет необходимости в мостах или программном обеспечении для серверов.
  • Высокая производительность.
  • Простая конфигурация.
  • Открытость для любой виртуальной машины или инструментальной среды разработки Java.

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

Собственный поставщик данных .NET

В SQLBase поставщик данных .NET с помощью объектной модели ADO.Net обеспечивает подключение к SQLBase последней версии интерфейса IDE от компании Microsoft и соответствующих языков.

Программирование серверных приложений

В SQLBase для всех серверных платформ, включая Linux, предоставляется SQL/API. Это позволяет разработчикам создавать приложения, выполняющиеся на том же сервере, что и SQLBase, и подключаться к системе управления базами данных. Разработчики могут создавать серверные компоненты, выполняющиеся на любой серверной платформе, что весьма существенно для многозвенных распределенных архитектур. Возможность непосредственного запуска приложений на сервере обеспечивает ряд преимуществ: не требуется решать эту задачу в клиентском приложении, не расходуются сетевые ресурсы, повышенная безопасность и устойчивость.

Оптимизация приложений с графическим интерфейсом

Требования, предъявляемые графическими приложениями, выходят за рамки стандартных функций, предлагаемых большинством современных SQL серверов баз данных. Изначально архитектура таких серверов разрабатывалась для поддержки приложений, запускаемых из командной строки, которые в то время были весьма популярны. СУБД SQLBase изначально разрабатывалась с набором функций, удовлетворяющих потребности разработчиков клиент/серверных приложений с точки зрения автономных или связанных только с запросами функциональных возможностей. Однако суть архитектуры клиент/сервер - это работа в многопользовательском окружении, но и здесь SQLBase обладает специальными архитектурными возможностями, которые обеспечиваются механизмом контроля версий записей (row versioning) - основой технологии SQLBase, - который как раз для этого был создан.

Сохранение контекста курсора

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

Функция сохранения контекста курсора в SQLBase полностью избавляет от такого излишнего программирования и извлечения данных. Сохранение контекста курсора означает, что после фиксации транзакции можно продолжать использовать все курсоры. Это особенно полезно в сочетании с SQLBase функцией позиционируемого курсора, что позволяет пользователям продолжать перемещаться по результирующим множествам (result sets) без необходимости вновь выстраивать результирующие множества и опять извлекать данные до текущей позиции. В результате значительно сокращается сетевой трафик и уменьшается загрузка сервера.

Тип данных LONG

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

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

Оптимистическое блокирование и контроль версий записей

Такие функции SQLBase, как позиционируемые результирующие множества, гибкие уровни изоляции (isolation levels) и уведомление об обновлении (update notification) являются аспектами цельного, интегрированного подхода к работе в режиме клиент/сервер и к доступу к базам данных. Ключевым понятием архитектуры является понятие идентификатора строки ROWID. Этот термин используется другими производителями СУБД, но его реализация в SQLBase уникальна.

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

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

Скорость доступа. Поскольку ROWID содержит информацию о положении строки в базе данных, доступ к строке по ее ROWID обеспечивает более высокую скорость манипуляций данными в базе (обновление, удаление и извлечение). Единообразный стиль программирования приложений. Для обновления одной выбранной строки всегда можно использовать ROWID, а не определять уникальный ключ.

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

Позиционируемые курсоры и результирующие наборы

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

Когда приложение выполняет запрос к базе данных SQLBase, эта база данных не возвращает сразу же все данные клиенту. Результаты даже не собираются на сервере. Вместо этого, SQLBase на основе выбранного пути доступа создает список идентификаторов ROWID строк, удовлетворяющих критерию запроса. Создание такого списка выполняется значительно быстрее, чем извлечение всех данных, которое, возможно, вызывает дополнительную нагрузку на ресурсы компьютера при вычислении производных полей. Затем, когда приложение запрашивает строки из результирующего набора, SQLBase извлекает строки из таблиц, составляющих базу, и собирает результирующий набор, чтобы вернуть его клиентскому приложению, буфер за буфером. Вследствие этого извлечение каждой строки выполняется относительно быстро.

Оптимизация производительности SQLBase обусловлена следующими факторами:

  • Создание результирующих наборов только тогда, когда это требуется.
  • Извлечение для затребованных строк только основных данных. Например, если приложение запрашивает последние десять строк результирующего набора, собираются и передаются клиентскому приложению только данные этих строк.
  • Отсутствие блокировки еще не считанных данных, а при использовании механизма освобождающих блокировок (release locks isolation) - разблокировки данных сразу после их считывания.

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

Усовершенствованные уровни изоляции

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

В ситуациях, где такая форма блокировки оправдана, SQLBase поддерживает такой же уровень изоляции, который реализован в IBM DB2 Database Manager:

Повторяемость чтения (RR)

Этот уровень изоляции представляет пользователю согласованный вид всех данных, и этот уровень установлен по умолчанию. Другие пользователи не могут изменить данные независимо от частоты их считывания или обновления в текущем приложении. В SQLBase такой уровень изоляции достигается с помощью автоматической монопольной блокировки (exclusive lock) всех обновляемых данных и разделяемой блокировки (share lock) всех считываемых данных. Максимальная согласованность данных обеспечивается за счет параллелизма работы пользователей. Из-за монопольной и разделяемой блокировок другим приложениям придется ожидать завершения работы текущего приложения.

Стабильность курсора (CS)

Механизм стабильности курсора аналогичен блокировке RR, за исключением того, что разделяемая блокировка снимается со строки при "смещении" с нее курсора. Стабильность курсора обеспечивает улучшенный параллелизм по сравнению с повторяемостью чтения, но согласованность данных уменьшается, поскольку разделяемая блокировка снимается сразу после перемещения со строки курсора. При извлечении данных более одного раза пользователь может видеть изменения данных, выполняемые другими пользователями.

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

В SQLBase эти проблемы разрешены с помощью механизма "оптимистической" блокировки.

Освобождение блокировки (RL)

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

Только чтение (RO) - Возможность выполнения согласованного запроса без блокировки

Наконец, тем частям приложениям, которым требуется просматривать большие количества данных и которым надо сохранять согласование данных на время операции, но не надо выполнять обновлений (например, при пакетном создании больших отчетов), SQLBase предоставляет уровень локализации "только чтение".

Этот уровень гарантирует, что курсору "чистого" запроса не придется ждать другие приложения и что никакое другое приложение, обновляющие данные, не будет ждать приложение, которое только извлекает данные. Таким образом, полностью исключаются взаимные блокировки.

Уведомление об обновлениях и защита

Приложения, как правило, отображают значительное количество данных, извлеченных из базы, и позволяют пользователям изменять малое подмножество этих данных. В этом случае уровень локализации освобождения блокировки доводит до максимума параллелизм, даже в многопользовательском окружении, хотя если приложение не способно определить такую ситуацию, может возникать проблема "потери результатов обновления". (Проблему потери результатов обновления лучше всего проиллюстрировать следующим примером: пользователь 1 просматривает запись, пользователь 2 изменяет ее, затем пользователь 1 изменяет запись и сохраняет ее в базе данных, перезаписывая изменения, сделанные пользователем 2). К счастью, SQLBase предоставляет надежное и простое решение, основанное на идентификаторе ROWID и называемое механизмом уведомления об обновлении (Update Notification).

Если пользователь решает обновить какую-то строку, приложение может использовать ее ROWID, чтобы с помощью включения ROWID в инструкцию WHERE указать SQLBase, какую именно строку обновлять. Это не только является исключительно быстрым действием, но, кроме того, когда обновление строки было произведено после ее последнего извлечения, SQLBase уведомит приложение о том, что было произведено обновление и не даст приложению выполнить обновление такой строки. SQLBase также укажет приложению, была ли строка изменена или же удалена другим пользователем.

Утилиты разработки

SQLTalk

SQLTalk (для Windows и Linux) представляет собой удобное, надежное и гибкое инструментальное средство для выполнения SQL команд. SQLTalk позволяет вводить, тестировать, сохранять или запускать отдельные команды или целые сценарии. Данная утилита идеально подходит для работы администратора базы данных и тестирования операторов SQL.

В отличие от конкурирующих инструментальных средств, в утилите SQLTalk имеется возможность выполнения отдельных операторов в составе сценария или выполнения сценария с заданной точки. Использование этой утилиты в сочетании с встроенной в SQLBase возможностью отката DDL (например, в операторах CREATE TABLE) обеспечивает высокопроизводительный способ разработки сценариев, сохраняемых процедур и триггеров.

Анализ запросов

В SQLBase можно отобразить фактический план, используемый для данного запроса, для того, чтобы разработчики приложений могли определить, что выполняет оптимизатор запросов. Это можно сделать с помощью SQL/API или SQLTalk.

Такую функция особенно полезна, если используется вместе с анализатором производительности, о котором речь пойдет ниже. Можно выявить запросы, которые выполняются дольше ожидаемого времени, и с помощью SQLTalk выработать план оптимального выполнения программы.

Интернационализация (поддержка национальных языков)

В СУБД SQLBase в качестве стандартного языка используется английский, но СУБД также поддерживает множество других языков, включая языки, на которых разговаривают в Европе и Азии. Для данных, содержащихся в базе, можно определить следующие атрибуты:

  • Порядок сортировки, используемых в предложениях ORDER BY при выборе данных. Порядок включает преобразование нескольких байт в один и наоборот. Преобразование регистра (верхний в нижний и наоборот).
  • Возможность адаптирования символов, используемые в схеме базы данных (например, имена таблиц). Возможность определения набора действительных символов, используемых в идентификаторах и наборах цифровых знаков. Поддержка двухбайтных наборов символов, например, используемых в японском языке.

Определения для каждого отдельного языка должны встраиваться в структуру каждой определенной базы данных при ее инициализации. Для наиболее распространенных языков партнерами компании GUPTA уже созданы и доступны различные определения языков, включая определения для французского, немецкого, испанского и итальянского языков. Текст сообщений об ошибках SQLBase также можно адаптировать к языкам, отличным от английского. Такой текст динамически считывается из ASCII файла, который можно перевести на требуемый язык.

Часть 4 - Развертывание приложений с помощью SQLBase

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

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

Установка

Для многофункциональных реляционных баз данных, в сравнении со многими конкурентами, установка SQLBase выполняется удивительно просто, при этом в SQLBase 9.0 используются новые уровни удобства использования и гибкости для Windows и Linux.

Администратор подключения GUPTA

Данная утилита Windows запускается автоматически и помогает выполнить процесс установки. После установки, если потребуется изменить конфигурацию подключения, утилиту можно запустить из меню "Программы". Администратор подключения облегчает процесс конфигурирования настроек сервера SQLBase и подключения клиентского приложения и включает возможность проверки такого подключения способом, не зависящим от инструментальных средств.

OEM пакет установки с встроенным пакетом развертывания (EDP)

Для разработчиков, установивших OEM связи с компанией GUPTA, и которым необходимо тесно интегрировать SQLBase в свои приложения, прилагаются образы дисков с исходным кодом инсталлятора. С помощью этих образов можно создать отдельные компакт-диски с настроенными параметрами установки или можно полностью скрыть установку SQLBase, выбрав опцию "silent", управляемую параметрами командной строки.

Параметры конфигурирования

Службы Windows или демон Linux

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

Невидимые операции

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

Автоматическое администрирование с помощью консоли SQLConsole

SQLConsole является полностью графическим средством управления базами данных для администрирования и мониторинга производительности SQLBase. Консоль предоставляет исключительную простоту использования и позволяет выполнять все операции, необходимые для создания, обслуживания и администрирования баз данных SQLBase и серверов без необходимости написания SQL кода. Копия консоли поставляется с каждым сервером SQLBase.

Консоль SQLConsole можно запускать на Windows-серверах (включая однопользовательские системы) или на клиентских рабочих станциях с возможностью удаленного управления. SQLConsole позволяет контролировать все необходимые функции SQLBase с помощью согласованного графического интерфейса, консоль разработана как средство помощи при разработке приложений, так и в качестве инструментального средства для администраторов баз данных.

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

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

Мониторинг базы данных и сервера

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

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

Диспетчер аварийной сигнализации

В SQLBase не требуется постоянный мониторинг, выполняемый вручную. Вместо этого с помощью диспетчера аварийной сигнализации (Alarm Manager) консоли SQLConsole используются уведомления о проблемах (реальных или возможных). Диспетчер аварийной сигнализации позволяет задать пороговые значения для различных значимых метрик базы данных, например:

  • количество одновременно подключенных пользователей;
  • блокировки базы данных по типу блокировки;
  • блокированные процессы;
  • отключение сервера;
  • неактивные пользователи.

Можно определить набор аварийных предупреждений, чтобы при достижении отдельной метрикой порога генерировалось первое аварийное предупреждение. Если аварийная ситуация длится больше предварительно заданного интервала времени, выдается следующее аварийное предупреждение и т.д. Аварийные предупреждения могут выдаваться в различной форме, например:

  • мерцание или выдача звукового сигнала в консоли SQLConsole на рабочей станции;
  • отправка сообщения определенным пользователям по электронной почте;
  • пейджинговый вызов на бипер с помощью модема, подключенного к рабочей станции;
  • выполнение сценария; отключение пользователей.

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

Планировщик

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

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

Удаленное администрирование

Консоль SQLConsole разработана для запуска в качестве клиентского приложения, подключенного к серверу по сети с протоколом LAN, WAN, RAS, внутренней или общедоступной сети. Благодаря этому администратор базы данных может выполнять администрирование баз данных в любом месте, где имеется подключение к сети, - локально или удаленно.

Резервное копирование и восстановление базы данных

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

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

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

Инкрементное резервное копирование и восстановление

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

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

Метод восстановления базы данных SQLBase включает параметр ‘ROLLFORWARD TO TIME’, позволяющий "исключить" изменения базы данных, сделанные при возникновении ошибки, без потери изменений, сделанных до ошибки.

Оперативный или автономный режим

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

Безопасно и просто

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

Выбор необходимого уровня устойчивости

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

Автоматическое резервное копирование

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

Интеграция функции резервного копирования в приложения

Разработчики приложений могут использовать все вызовы SQL/API, необходимые для выполнения требуемой стратегии резервного копирования. Такие вызовы полностью документированы. Это позволяет распределенным приложениям управлять политикой резервного копирования с минимальным вмешательством пользователей, позволяя легко встраивать SQLBase в распределенные приложения.

Аудит

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

В целях упрощения и универсальности аудитом можно управлять с помощью командной строки SQLTalk через интерфейс SQL/API или с помощью графического интерфейса консоли SQLConsole, предоставляющей возможность просмотра текстового файла.

Диспетчер аудита консоли SQLConsole может использоваться для отслеживания следующих данных:

Обработанные операторы SQL

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

Время обработки оператора

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

Анализ многопользовательских конфликтов

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

Мониторинг безопасности

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

Модели использования приложения

Возможность записи правильных действий по регистрации/выходу предоставляет администратору базы данных возможность определения зарегистрированных пользователей в данный момент времени. Такая функция полезна для идентификации процессов, вызывающих у пользователей проблемы. Также благодаря этой функции администратор базы данных может планировать время простоя сервера или периоды его загрузки в соответствии с обычным режимом использования системы. Модели использования приложения необходимы для записи сведений о том, кем и к каким таблицам применялись операторы DML или SELECT.

Действия администратора базы данных

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

Импорт и экспорт данных

Важной функцией любой реляционной база данных является возможность максимально быстрого и эффективного получения и вывода данных. Встроенные функции сервера SQLBase, предназначенные для ускорения импорта и экспорта, обеспечивают передачу данных в трех форматах: DIF (формат обмена данными), ASCII файлы с разделителями запятыми (CSV) и SQL.

Обработка больших объемов данных на сегодня является обычной даже в небольших реляционных системах. Встроенные функции SQLBase обладают различными параметрами и возможностями:

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

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

Нерегламентированный доступ к этой функциональной возможности обеспечивается с помощью консоли SQLConsole и SQLTalk. Как и в случае всех функций SQLBase, доступ к данной функции возможен с помощью вызовов SQL/API.

Поддержка больших баз данных

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

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

Базы данных с защитой от записи

В SQLBase можно легко защитить базу данных. Такая защита (называется "режим только для чтения") не является одноразовой, с помощью вызова SQL/API, команды SQLTalk или консоли SQLConsole ее можно включать или отключать. Режим только для чтения можно использовать в следующих целях: Распределение данных на таких носителях, как компакт-диски или оптические карты, позволяет легко и недорого развертывать данные SQLBase. Обслуживание обновленной центральной базы данных, в то время как на распределенных узлах обслуживаются копии базы данных с режимом только для чтения.

Самоуправление базы данных

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

  • Для файлов баз данных не требуется предварительного распределения ресурсов: при необходимости ресурсы расширяются.
  • Внутреннее пространство базы данных после удаления объектов используется повторно.
  • Определение и интеллектуальная обработка ситуации недостаточности дискового пространства.
  • Восстановление после сбоев выполняется автоматически при повторном запуске базы данных.
  • При первом доступе к серверу файлы базы данных автоматически обновляются до текущей версии базы данных на сервере.
  • Возможность непосредственной интеграции в приложения резервного копирования и восстановления с помощью SQL/API.
  • Возможность оперативного резервного копирования для исключения времени простоя приложения.
  • Инкрементальное резервное копирование и восстановления для уменьшения размера резервной копии. Если инкрементальное резервное копирование не требуется, файлы журналов, использующиеся для восстановления в случае сбоев, удаляются после того, как становятся ненужными.
  • Если подключение клиентской части остается неактивным в течение интервала времени, превышающего заданный интервал, или если сетевое подключение прерывается, возможно, автоматическое отключение клиентской части, при этом выполняется откат выполняемых транзакций.
  • Возможность автоматического прерывания выполнения слишком длинных SQL операций.

Часть 5 - Встраивание SQLBase в веб-приложения

Обзор

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

Прямое подключение клиентского приложения к интернет

Интернет представляет собой всемирную сеть с протоколом TCP/IP, наличие в нем приложений для мгновенной передачи сообщений превращает его в удобную общедоступную сеть. Подключая к интернету сервер SQLBase, с помощью протокола TCP/IP к нему можно обеспечить доступ из любой точки земного шара, где имеется подключение к сети Интернет.

Доступ приложений к SQLBase выполняется двумя способами:

Клиентские приложения Windows или Linux, созданные с помощью любого стандартного инструментария разработки или языка, например, Visual Basic, GUPTA Team Developer или PHP, могут непосредственно или через ODBC использовать компоненты клиентского программного обеспечения. Java апплеты или полнофункциональные Java приложения на любой платформе с поддержкой виртуальной машины Java могут подключаться к SQLBase с помощью драйвера JDBC. Примером может служить веб-страница, содержащая Java апплет, после загрузки которого можно подключиться к SQLBase базе данных, расположенной на исходном веб-сервере, и затем выполнять обработку транзакций и запрос данных из браузера пользователя.

Генерируемый на сервере HTML код, отображаемый в браузере

В такой сверхтонкой клиентской модели как PHP, основная часть логики приложения выполняется централизованно - на веб-сервере или на сервере приложений, доступ к которому осуществляется через веб-сервер. Обратно в клиентское приложение передаются HTML страницы. В таких архитектурах ключевую роль играют базы данных, использующиеся как хранилища публикуемых данных или для хранения входящих транзакций. Приложения Windows ASP и ASP.Net могут использовать ODBC драйвер SQLBase, поставщик OLEDB или поставщик данных .NET. PHP приложения на ОС Linux могут использовать ODBC драйвер SQLBase для Linux.

Приложение - Сведения о продукте и его спецификация

СУБД SQLBase поддерживает обмен данных по протоколу TCP/IP на ОС Linux и Windows и анонимным программным каналам (только для Windows).

Сертифицированные операционные системы

Linux

Дистрибутив

ядро

glibc

Red Hat Desktop 3.0 2.4.21.15 2.3.2-95.20
Red Hat Enterprise Linux WS 3.0 2.4.21-4 2.3.2-95.3
Red Hat Enterprise Linux ES 3.0 2.4.21-9 2.3.2-95.6
SUSE Linux 9.0 2.4.21-99 2.3.2-88
SUSE Linux 9.1 Professional 2.6.4-52 2.3.3-97
SUSE Linux Enterprise Server 8 2.4.21-198 2.2.5-213
SUSE Linux Enterprise Server 9 2.6.5-7.97 2.3.3-98.28
SUSE Linux Desktop 1.0 2.4.19-4 2.2.5-184

Windows

Операционная система

Рекомендованные пакеты обновления

Microsoft Windows 98 Second Edition НЕТ
Microsoft Windows ME НЕТ
Microsoft Windows NT 4.0 Server & Workstation Пакет обновления SP 6а
Microsoft Windows 2000 Professional and Server Пакет обновления SP4
Microsoft Windows XP Professional Пакет обновления SP1 или SP2
Microsoft Windows Server 2003 НЕТ

Обзор функциональных возможностей

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

Безопасность

  • Более высокий уровень безопасности серверов.
  • Усовершенствованная технология проверки паролей.
  • Шифрование страниц баз данных.
  • Защита страниц баз данных от изменения.
  • Безопасная передача данных.

Базы данных и сервера

  • Использование нескольких баз данных на сервере.
  • В одной сети можно использовать несколько серверов.
  • На одном компьютере можно использовать несколько серверов.

Установка

  • Дистрибутив на компакт-диске для ОС Linux или Windows.
  • Доступны пакеты установки независимых поставщиков ПО (EDP ISV).

Лицензирование

  • Для каждого сопользователя на сервере.

Уровни локализации

  • Стабильность курсора, воспроизводимое чтение, освобождение блокировки и только чтение (возможность согласованного считывания без блокировки).
  • "Грязное" чтение запрещено.
  • Настройки зависят от курсора.

Ссылочная целостность

  • Декларативная с каскадными параметрами: RESTRICT, DELETE, SET NULL.
  • Процедурная с помощью триггеров.

Поддержка хранимых процедур

  • Язык: подмножество SAL.
  • Статический/динамический SQL: Да.
  • Возврат строк: Да, с двунаправленным позиционированием результирующего набора.

Внешние функции

  • На платформе Windows: DLL для Windows.
  • Внутрипроцессорные или внепроцессорные.
  • Вызываются хранимыми процедурами и триггерами.

Резервное копирование

  • Оперативное.
  • Инкрементное или полное.

Восстановление

  • Полное, с дополнительным последовательным применением инкрементных резервных копий.

Триггеры

  • Запуск на уровне строки.
  • Запуск до или после применения изменений.
  • Доступность старых и новых значений.
  • Возможность использования нескольких триггеров для одной таблицы или операции.
  • Триггеры могут вызывать срабатывание других триггеров в той же самой или другой таблице (рекурсия).
  • Значения могут перезаписываться до выполнения команды INSERT/UPDATE.

Курсоры клиента

  • Двунаправленное позиционирование: на сервере или дополнительно с задержкой на клиенте.
  • До 250 транзакций для каждого подключения клиента.
  • До 250 курсоров для каждой транзакции.
  • Поддержка асинхронных операций между транзакциями.
  • Различные параметры ожидания блокировки: задание интервала ожидания в секундах, немедленный возврат или постоянное ожидание.

Индексирование

  • Структура В-дерева или хешированное.
  • Уникальное или не уникальное.
  • Поддержка составных ключей.
  • Возможность индексирования по выражениям.

Поддержка транзакций

  • Полная фиксация или откат.
  • Несколько именованных точек сохранения.
  • Возможность отключения журналов транзакций и отката.
  • Откат DML.
  • Автоматическое устранение взаимоблокировок.
  • Поддержка транзакций Microsoft Transaction Server.

Оптимизатор

  • Статистический или на основе затрат.

Поддержка распределенных баз данных

  • Протокол двухфазной фиксации.
  • Поддержка транзакций Microsoft Transaction Server.

Интерфейсы API

  • ODBC
  • OLE DB
  • SQL/API
  • JDBC: 4 уровень (клиенты, написанные полностью на Java)
  • Поставщик данных .NET

Инструментарий удаленного администрирования

  • Консоль SQLConsole.

Функции SQL

  • Синонимы (публичные и приватные) для таблиц, представлений, хранимых процедур, хранимых команд и внешних функций.
  • Выбор вложенных элементов.
  • Позиционируемые курсоры.
  • Несколько внешних объединений для оператора (ANSI).
  • Операторы UNION.
  • Оператор UPDATE для подзапросов.

Безопасность объектов

  • Для всех объектов имеются именованные пользователи.
  • Различное назначение привилегий пользователям, не являющимися владельцами: SELECT, INSERT, UPDATE, DELETE, INDEX и ALTER.
  • Назначение привилегий на уровне таблицы или столбца.

Доступность системного каталога

  • Доступен в виде метатаблиц.

Типы данных

Тип

Комментарии

Тип

Комментарии

CHAR/ VARCHAR 254 символа LONG Длина не ограничена
DATE Дни Целое -2,147,483,648 - 2,147,483,647
TIME Секунды Малое целое -32,768 - 32,767
DATETIME Секунды С плавающей запятой Точность - до 53 знаков
TIMESTAMP Микросекунды Десятичное Точность - до 15 знаков

Следует обратить внимание на то, что все символьные типы данных могут хранить двоичные данные.

Характеристики

Размер базы данных: 512 Гб*
* На ОС Windows или Linux с файловой системой, поддерживающей файлы размером более 2 гигабайт.
Объекты базы данных Не ограничено
Длина имени объектов (если не указано другое) 32
Длина пароля 8
Длина пароля сервера 18
Имя пользователя 8
Всего курсоров на сервере 200,000
Полей в таблице/представлении 254
Полей LONG в таблице 254
Символов в операторе SQL 32 K
Строк в таблице Не ограничено
Количество операторов AND в предложении WHERE/HAVING Не ограничено
Кол-во индексов в таблице Не ограничено
Кол-во полей индекса 16
Символов в таблице (за исключение типа LONG) 8 K
Таблиц в запросе (перекрестные соединения таблиц не поддерживаются) 16
Кол-во полей сортировки в запросе Не ограничено
Кол-во уровней вложенности подзапросов Ограничено ресурсами


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=785