|
|
|||||||||||||||||||||||||||||
|
Руководство по технической оценке продукта SQLBase от компании Gupta Technologies. Часть 1Источник: Переведено БНТП Сурен Бехари (Suren Behari), менеджер по продуктам группы разработчиков
Чарльз Маклаут (Charles McLouth), менеджер по продуктам - SQLBase Эффективный, безопасный перевод транзакций с настольных компьютеров на веб-серверы, работающие под управлением Linux или Windows ВведениеТехнологическая основа любой корпоративной системы основана на надежном, гибком хранении данных и их быстром извлечении. Много лет единственным решением для использования критически важных специализированных систем оставался универсальный компьютер. Но со временем рыночные приоритеты в значительной степени сместились к использованию архитектуры клиент/сервер, и не только для крупных организаций и транснациональных компаний. Не так давно постоянно возрастающее влияние интернета снова изменило технологическую и конкурентную картину. Переход к окружению клиент/сервер был вызван необходимостью предоставить пользователям большую степень контроля, простоту использования, обеспечить быстрый отклик и повышенную надежность. Компьютерные распределенные системы позволили множеству мелких компаний за доступную цену воспользоваться преимуществами сложных корпоративных систем. По мере все большего использования веб-технологий различными компаниями, выбор компонентов, предоставляющих необходимую безопасность, надежность и интерфейс становится важнее, чем когда-либо. СУБД SQLBase стала первой реляционной базой данных (RDBMS) для окружения на базе персональных компьютеров. Она являет единственной реляционной базой данных, в которой развивается и совершенствуется архитектура клиент/сервер, при этом СУБД позволяет успешно решать проблемы разработки приложений. С выпуском в 2004 г. СУБД SQLBase 9.0 компания Gupta Technologies продолжила традицию создания надежных, компактных встроенных баз данных для нескольких платформ. Данная производительная СУБД благодаря своей усовершенствованной архитектуре, цельным интерфейсам и "простоте использования" требует минимального администрирования. Комплект СУБД SQLBase представляет разработчикам готовую к эксплуатации систему для создания и гибкого развертывания приложений на любых компьютерах, начиная с настольных и заканчивая веб-серверами на платформах Windows и Linux. Все больше корпораций сталкиваются с необходимостью создания приложений, способных хранить и быстро извлекать данные с соблюдением мер безопасности. SQLBase представляет собой встроенную базу данных, не только удовлетворяющую этим требованиям, но и предоставляющую независимым поставщиками программного обеспечения не имеющую аналогов современную систему защиты. Независимо от того, используется СУБД в собственных приложениях или встроена в программные системы, SQLBase предоставляет:
Надежность и производительность сохраняется при масштабировании между однопользовательским и многопользовательским режимами, между Windows и Linux Часть 1 - Архитектура SQLBaseПроизводительные базы данных, например, СУБД SQLBase построены на базовой архитектуре манипулирования данными. Такая архитектура расширяется с помощью специальных функциональных возможностей и дополняется интерфейсами и инструментами, обеспечивающими доступ и использование всех функций базы данных. Эффективность базы данных измеряется такими функциональными возможностями как производительность, надежность, управляемость, безопасность данных и др. Способность обрабатывать сложные запросы и удовлетворять потребностям разработчиков определяют, насколько все эти возможности подходят для совместной работы. Архитектура СУБД SQLBase представляет собой технологию реляционных баз данных, доступ к которым выполняется с помощью языка структурированных запросов (SQL). Как и вытекает из названия, СУБД SQLBase обладает встроенной поддержкой SQL в отличие от баз данных, выполняющих преобразование из одной парадигмы в другую с помощью упрощенной клиентской части приложения. Расширения ядра SQLBase:
Такие расширения обеспечивают увеличение производительности приложений и позволяют встраивать в базы данных логику, при этом сокращается степень вмешательства приложений и системных администраторов. Улучшение производительности также обеспечивается за счет других усовершенствованных дополнений, например, оптимизатора запросов на основе стоимости и возможностей управления транзакциями. В данном разделе описаны эти и другие функции СУБД SQLBase, в следующих разделах будет показано, как использовать базовые функциональные возможности SQLBase для создания программных систем высокого качества. Настоящая серверная архитектураВ отличие от других встроенных баз данных, которые разработчики пытались из однопользовательских систем переделать в многопользовательские, SQLBase изначально разрабатывалась как многопользовательский достаточно компактный сервер баз данных, удовлетворяющий требованиям систем низкого класса. Благодаря этому СУБД SQLBase обладает устойчивостью и эффективностью в соответствии с требованиями для критически важных бизнес-приложений, и которые отсутствуют в системах с индексно-последовательным методом доступа. Ключом такой устойчивости является сервер (в однопользовательских конфигурациях называемый ядром СУБД), осуществляющий доступ к файлу базы данных и отвечающий за целостность транзакций, блокировку и восстановление системы после сбоев. Программируемый доступ к данным на сервере осуществляется с помощью API клиента. Предоставляемые интерфейсы позволяют использовать этот API различным инструментам, окружениям разработки и операционным системам.
Обеспечение межплатформенной целостности с помощью общих строк кодаСУБД SQLBase разработана специально для операционных систем Windows и Linux на платформе Intel. Для всех платформ используется один исходный код, что обеспечивает целостность функциональных возможностей и интерфейсов. Требования к дисковому пространству и памяти минимальны (см. Приложение). В результате разработчики приложений используют один исходный код, что позволяет снизить затраты на разработку, обеспечение качества и поддержку. Благодаря расширенной документации и всестороннему API, СУБД SQLBase может обмениваться данными с внешними базами данных. SQLBase идеально подходит для внедрения в упакованные приложения, предназначенные для однопользовательских мобильных портативных компьютеров или серверов рабочих групп с поддержкой до 100 параллельных пользователей. Компоненты СУБД SQLBaseВ комплект поставки СУБД SQLBase входит множество инструментов и утилит, предназначенных для более эффективного и простого управления сервером.
Язык структурированных запросов (SQL)В отличие от баз данных, преобразующих язык SQL из других парадигм, например, системы с индексно-последовательным методом доступа, СУБД SQLBase имеет собственную поддержку SQL. С помощью SQLTalk администраторы баз данных и разработчики могут использовать SQL в интерактивном режиме. SQLTalk предоставляет синтаксис для доступа к данным, используемый приложениями на программном уровне. Помимо поддержки основного стандарта ANSI-92 SQL, в СУБД SQL реализованы различные функции, позволяющие более эффективное и удобное использование этого стандарта по сравнению с другими системами управления базами данных:
Программируемые базы данныхФункциональные возможности СУБД SQLBase позволяют снизить нагрузку на разработчиков приложений независимо от используемых средств разработки. Расширенные функций, входящие в SQLBase:
Далее в таблице перечислены функциональные возможности и предоставляемые ими преимущества, которые обеспечиваются за счет этих расширенных функций.
Ссылочная целостность (RI)Ссылочная целостность представляет собой определенные пользователем правила, обеспечивающие допустимые ссылки между данными в различных таблицах базы данных. Ссылочная целостность может обеспечиваться декларативно или процедурно. SQLBase поддерживает оба этих типа. Декларативная ссылочная целостность обеспечивает высокую степень защиты с минимальными усилиями. После применения она гарантирует постоянное поддержание целостности данных, что позволяет уменьшить усилия на программирование приложений и обеспечивает доступ нескольких приложений к базе данных без необходимости программировать правила целостности для каждого приложения. Синтаксис и семантика декларативной ссылочной целостности SQLBase совместимы с DB2: поддерживаются ограничительные, каскадные и неопределенные параметры. Декларированные для базы данных правила хранятся в таблицах каталогов, обеспечивая основной уровень самодокументирования. В качестве альтернативы с помощью триггеров можно использовать процедурную ссылочную целостность. Хранимые процедурыБлагодаря усовершенствованной функциональности хранимых процедур SQLBase предоставляет разработчикам баз данных и приложений различные преимущества, включая совместное и многократное использование кода, сокращение сетевого трафика, гибкое обеспечение безопасности и улучшение производительности. Что такое хранимые процедуры?В SQLBase хранимые процедуры представляют собой именованный набор процедурных операторов, записанный в базе данных. Подобно обычным операторам SQL, хранимые процедуры можно использовать для выполнения операций и формирования результирующих наборов с несколькими строками. В хранимые процедуры можно передавать параметры и возвращать несколько значений. Приложения могут в явной форме вызывать хранимые процедуры с помощью ODBC, OLE DB, .NET или SQL/API, или автоматически с помощью использования триггеров.
Хранимые процедуры записываются с помощью подмножества SQLWindows Application Language (SAL), эффективного простого процедурного языка, лежащего в основе SQLWindows/32 и GUPTA Team Developer. Используя SAL, компания GUPTA дополняет свой практический опыт и технологию и предоставляет разработчикам SQLBase эффективную и надежную инфраструктуру. С помощью этих средств пользователи легко могут выполнить миграцию кода существующих приложений. Зачем использовать хранимые процедуры?Хранимые процедуры позволяют использовать существующий код GUPTA Team Developer, что обеспечивает следующие преимущества:
Внешние функцииВнешние функции позволяет разработчикам интегрировать в обычные операции баз данных функциональные возможности, созданные практически в любой среде разработки. После объявление в базе данных внешние динамические подключаемые библиотеки или общие объекты можно вызывать из обычных хранимых процедур, триггеров или даже напрямую из клиентских приложений.
ТриггерыТриггеры обеспечивают выполнение готового набора процедурного кода при каждой попытке изменения отдельного элемента данных. Триггеры полезно использовать в следующих случаях:
В СУБД SQLBase реализована полная и гибкая поддержка триггеров, позволяющая разработчикам баз данных решать практически любые задачи:
Хранимые командыХранимые команды используются для обеспечения наилучшей производительности часто используемых операторов SQL. Хранимые команды аналогичны хранимым процедурам, за исключением того, что в них содержится один оператор SQL (команда SELECT или DML). Они также компилируются, оптимизируются и хранятся в базе данных. После записи команды в базу данных приложения могут вызывать ее без передачи по сети служебной информации, компиляции и оптимизации запросов. По одному запросу можно вызвать несколько хранимых команд (данный процесс называется сцеплением), например, для формирования последовательного идентификатора одной таблицы для вставки записи в другую таблицу. Это позволяет уменьшить количество сетевых сообщений и общую нагрузку на сеть. Хранимые команды обеспечивают максимальную производительность для приложений оперативной обработки транзакций (OLTP). Поддержка транзакцийСУБД SQLBase поддерживает транзакции неограниченного размера (единственное ограничение - доступная память), на всех платформах - от высокопроизводительных серверов до портативных компьютеров с серверными механизмами. SQLBase обеспечивает полностью автоматическое восстановление системы в случае сбоев, что позволяет после перезагрузки сервера отменять незафиксированные транзакции и накатывать зафиксированные, даже если нарушение электроснабжения произошло на стадии фиксирования. Поддержка многопоточных приложенийВ настоящее время различные среды разработки операционных систем и приложений обеспечивают поддержку многопоточных приложений, предоставляя разработчикам больше возможностей для создания универсальных приложений. Обеспечивая одновременное выполнение нескольких транзакций, СУБД SQLBase предоставляет API с поддержкой многопоточных приложений. Независимо от других транзакций в том же самом или других потоках транзакция в потоке приложения может использовать несколько курсоров, SQLBase может параллельно выполнять операции (например, запросы) для курсоров в независимых транзакциях. В результате имеется возможность создавать для конечных пользователей приложения с более высокой функциональностью и производительностью.
Пример 1: Пока в одном окне выполняется длительный процесс обработки набора операций базы данных, пользователь может продолжать работать с другими частями приложения. Пример 2: Можно периодически опрашивать фоновый процесс для получения новых данных с целью обновления графика на экране, в то время как пользователь выполняет другие задачи в том же самом приложении. Точки сохраненияДля проведения сложных транзакций, включающих вложенные транзакции, которые могут быть отменены без удаления и повторного выполнения всего процесса, СУБД SQLBase поддерживает в рамках отдельной транзакции несколько именованных точек сохранения (SAVEPOINTS), предоставляя разработчикам дополнительную гибкость при создании кода. Откат DMLВ отличие от большинства других баз данных в SQLBase возможен откат изменений структуры базы данных без изменения данных. Это крайне полезная функция при разработке схем и обновлении развернутых баз данных. Поддержка распределенных транзакций (двухфазная фиксация транзакции)Двухфазная фиксация обеспечивает высококачественную серверную функциональность в простых для использования программных системах. Целостность транзакций для нескольких баз данных в SQLBase поддерживается с помощью технологии двухфазной фиксации. Эта технология позволяет одной транзакции выполнять изменения в нескольких базах данных SQLBase, расположенных на различных аппаратных системах. Это происходит, если базы данных функционально связаны в одной сети, что ранее было возможно только с помощью больших дорогих систем со сложными базами данных и сетевыми компонентами. Распределенные операции могут быть очень важны и требуют гарантий точного выполнения транзакций в функционально разделенных, связанных базах данных. СУБД SQLBase являет первой реляционной базой данных с поддержкой прозрачной, автоматической двухфазной фиксации, действующей между серверами рабочих групп и автономными системами. Например, транзакция с двухфазной фиксацией может быть выполнена на многопользовательском сервере NetWare и на сервере настольного компьютера. Для выполнения таких транзакций приложения не требуют специального программирования, для активизации обработки достаточно одного вызова API. Поддержка бизнес-транзакций с помощью Microsoft Transaction Server MTSИнтеграция СУБД SQLBase в корпоративные транзакции. Выполнение транзакций больше не ограничивается базой данных. Теперь транзакции охватываются сложные бизнес-процессы, включающие обновление баз данных от различных поставщиков и расположенных в различных узлах. Поддержка MTS позволяет полностью интегрировать SQLBase в COM+ транзакции, включая поддержку полной фиксации и отката для всех транзакций. Для создания MTS транзакций можно использовать различные языки программирования, включая Team Developer. Например, одна объединенная транзакция может переводить деньги с локальной учетной записи SQLBase в центральную учетную запись на сервере SQL Server. Транзакция либо выполняется успешно, либо, в случае сбоя, выполняется откат во всех задействованных базах данных. Эффективность и производительностьСУБД SQLBase представляет собой оптимизированную высокопроизводительную систему управления базами данных на платформе Intel, более миллиона развертываний доказали, что SQLBase прекрасно работает в реальных условиях, а не только в лабораториях. Превосходная производительность и набор функций SQLBase отвечает всем требованиям современных пользователей. В данном разделе описаны различные функции СУБД SQLBase, позволяющие исключить трудоемкий процесс обработки баз данных в развернутых приложениях, и, наоборот, извлечь пользу из баз данных, способных обрабатывать различные задачи. Многострочный доступSQLBase обеспечивает приложения данными по запросу. Большинство СУБД разработаны для предоставления по каждому запросу приложения отдельной строки из базы данных. Это происходит потому, что многие системы управления базами данных, которые разрабатывались для окружений на базе больших или мини-ЭВМ, были предназначены для работы с приложениями, расположенными на сервере (без использования технологии клиент/сервер) или с простыми приложениями командной строки. СУБД SQLBase изначально разработана для работы в действительном окружении клиент/сервер. Она оптимизирована для буферизации нескольких строк, которые затем можно передать с серверной части приложений на клиентскую в одном сетевом сообщении. Это позволяет значительно сократить сетевой трафик и нагрузку и обеспечивает более быстрый отклик на многострочные запросы. С помощью буферизации данных в клиентской части приложений SQLBase улучшает отклик позиционируемых курсоров и значительно сокращает сетевой трафик. Такой буфер автоматически синхронизируется с результирующим набором на сервере. СУБД SQLBase поддерживает режим (называемый "Прямая выборка"), в котором данные извлекаются непосредственно на сервере, а не из кеша клиентской части или результирующего набора серверной части. Такой режим предназначен для приложений, которые должны быть согласованы с изменениями на сервере. SQLBase также помещает в буфер результирующие наборы на сервере в качестве части функциональной возможности позиционируемого курсора/результирующего набора. Серверные результирующие наборы создаются автоматически и только при необходимости, что позволяет уменьшить загрузку на сервере и сократить время отклика, скрывая от пользователей функции базы данных и предоставляя необходимую высокую производительность. Оптимизатор на основе затрат и статистикиВсе SQL базы обладают некоторым видом оптимизации, без которой в большинстве случаев модель SQL не работает. Наиболее часто используется оптимизации на основе правил, где синтаксис запроса влияет на выбор способа получения указанных данных. В этом типе оптимизации, например, изменение порядка условий соединения в предложении 'WHERE' может привести к изменению набора используемых индексов. Такая зависимость может вызвать проблемы, так как от программистов для достижения максимальной производительности требуется понимание правил оптимизатора, а это далеко не простая задача, особенно если поставщик не сделал правила общедоступными. В SQLBase встроен сложный оптимизатор запросов на основе стоимости, использующий различные статистические сведения о распределении данных в таблицах и индексах, которые хранятся в метатаблицах в системном каталоге. Оптимизатор анализирует все возможные способы обработки запроса и определяет оптимальный способ доступа к данным. Оцениваются все планы запроса и рассчитываются затраты на их выполнение. Независимо от синтаксиса, введенного пользователем, выбирается запрос с наименьшими затратами. Таким образом, пользователь или разработчик приложения освобождается от "колдовства" с определением синтаксиса, обеспечивающего выбор оптимального плана доступа. Возможности языка SQL зачастую позволяют извлекать информацию из базы данных SQL с помощью различных способов задания оператора SELECT. Оптимизатор запросов СУБД SQLBase может проверять запросы и делать их более эффективными с помощью изменения их внутренней структуры. Регистрация восстановления данныхВ СУБД SQLBase используется отдельный журнал регистрации с упреждающей записью, который для записи информации об обновлении базы данных использует несколько физических файлов. В этом журнале содержатся образы до и после обновления данных, журнал используется для отката транзакций и восстановления данных, которые могли быть потеряны при сбое системы или носителей данных. В отношении производительности журнал регистрации оптимизирован различными способами: В отличие от других систем управления базами данных, записывающих строки или страницы целиком, SQLBase записывает изменения базы данных на уровне полей, что позволяет уменьшить требования к дисковому пространству. В отдельный журнал записывается вся информацию о сбоях и восстановлении носителей данных. При восстановлении после сбоя незафиксированные транзакции отменяются, а зафиксированные накатываются далее. При восстановлении после сбоя носителя зафиксированные транзакции применяются к резервной копии базы данных. В других СУБД для этого используются два журнала, что требует дополнительного управления файлами и снижает производительность. В SQLBase с помощью одной операции записи на диск в журнал можно записать несколько фиксаций транзакций, что позволяет увеличить производительность транзакции при выполнении параллельных операций. Пользователи могут разместить файлы журнала на диске, отличном от диска размещения базы данных. Помимо повышения производительности за счет сокращения дисковых конкурирующих процессов, такой вариант обеспечивает дополнительную защиту от сбоев носителя. Ссылки по теме
|
|