Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

SQL-сервер InterBase і його основні компоненти




 

SQL-сервер Interbase є призначений для зберігання і опрацювання великих об'ємів даних в умовах одночасної роботи з БД безлічі клієнтських додатків. Масштаб інформаційної системи при цьому довільний - від системи рівня робочої групи (під управлінням Novell Netware або Windows на базі IBM РС) до системи рівня великого підприємства (на базі серверів IBM, Hewlett-Packard, SUN)

 

Розглянемо низку технологій InterBase, використання яких забезпечує максимальне обчислювальне розвантаження клієнтського застосування і гарантує високу безпеку і цілісність інформації.

 

Для завдання посилальній і зміствоної цілісності в БД визначаються:

 

• відношення підлеглості між таблицями БД шляхом визначення первинних (PRIMARY) ключів у батьківських і зовнішніх (FOREIGN) ключів у дочірніх таблиць;

 

обмеження на значення окремих стовпців (CONSTRAINT); при цьому умови обмежень можуть бути різноманітні - від вимоги попадання значення в певний діапазон або відповідності масці до певного відношення з однією або декількома записами з іншої таблиці (або багатьох таблиць) БД

 

тригерів (TRIGGER) - підпрограм, що автоматично виконуються сервером до або (и) після події зміни запису в таблиці БД;

 

• генератори (GENERATOR) – для створення і використання унікальних значень потрібних полів.

 

Для прискорення роботи клієнтських застосувань з віддаленою БД можуть бути визначені збережені процедури, (STORED PROCEDURE), які є підпрограмами, що приймають і повертають параметри, і можуть виконувати запити до БД, умовні розгалуження і циклічну обробку. Збережені процедуры пишуться на спеціальній алгоритмічній мові. В них програмуються послідовності запитів до БД, які часто повторюються. Текст процедур зберігається на сервері у відкомпільованому вигляді. Переваги у використанні збережених процедур очевидні:

 

• відпадає потреба синтаксичної перевірки кожного запита та його компіляції перед виконанням, що прискорює виконання запитів;

 

• відпадає потреба реалізації в клієнтській програмі запитів, що визначені в тілі збережених процедур;

 

• збільшується швидкість опрацювання транзакцій, т.як. замість іноді довгого SQL-запита по мережі передається відносно коротке звертання до збереженої процедури.

 

У складі запису БД можуть визначатися BLOB-поля (Binary Large Object, великий двійковий об’єкт), призначені для зберігання великих об'ємів даних у вигляді послідовності байтів. Таким чином можуть зберігатися текстові і графічні документи, файли мультимедіа, звукові файли і т.д. Інтерпретація BLOB-поля відбувається вдодатку, однак розробник може визначити так звані BLOB-фильтри для автоматичного перетворення вмісту BLOB-поля до іншого вигляду.

 

InterBase дає можливість використовувати визначені користувачем функції (User Defined Function, UDF), в яких можуть реалізовуватися функціональності, відсутні в стандартних вбудованих функціях InterBase (обчислення максимуму, мінімуму, середнього значення, перетворення типів і приведення букв до заголовних). Наприклад, в UDF можна реалізувати витягання зі значення дати номера дня, роки; визначення довжини символьного значення; усікання пропусків; різні математичні алгоритми і інше. Функція пишеться на будь-якій алгоритмічній мові, що дозволяє розробляти DLL (бібліотеки динамічного виклику), наприклад на Object Pascal.

 

InterBase може посилати повідомлення клієнтським застосуванням про настання якої-небудь події (EVENT). Одночасно працюючі додатки можуть обмінюватися повідомленнями через сервер БД, викликаючи процедури, що зберігаються, в яких реалізована ініціація потрібної події.

 

Для забезпечення швидкості виконання запитів і зняття з клієнтського додатка необхідності такі запити видавати в БД можна визначити віртуальні таблиці (або перегляди, VIEW), в яких об'єднуються записи з однієї або більше таблиць, що відповідають деякій умові. Робота з переглядом з клієнтського додатка нічим не відрізняється від роботи із звичайною таблицею. Підтримує перегляд сервер, реагуючи на зміну даних в БД. Перегляди можуть бути змінними і не допускаючими внесення в них змін.

 

Для доступу до БД використовується утиліта IBConsole. Вона працює з БД безпосередньо через InterBase API, оминаючи BDE. У IBConsole можна писати будь-які запити, будь то створення БД, таблиць, зміна структури даних, витягання даних з БД або їх зміна, а також призначення прав доступу до інформації для окремих користувачів.

 

Для управління SQL-сервером в цілому і окремими БД зокрема використовується утиліта Interbase Server Manager. Тут можна визначати параметри SQL-сервера, проводити збереження, відновлення БД, збірку "сміття", визначати нових користувачів, їх паролі і т д.

 

Для проглядання БД, роботи з таблицями, індексами, доменами, обмеженнями і ін. можуть використовуватися утиліти Database Desktop (вельми обмежено) і SQL Explorer.

 

Для перегляду і аналізу реальних процесів, що відбуваються на сервері при реалізації користувацького запиту, використовується утиліта SQL Monitor.

 

Interbase: деякі технічні характеристики

 

Історична довідка: InterBase був розроблений на початку 80-х років групою розробників з американської корпорації DEC. Надалі розробка даного продукту велася незалежними компаніями InterBase Software і Ashton-Tate, що згодом злилася з нею. Borland придбала права на InterBase у Ashton-Tate після злиття з нею.

 

InterBase активно використовується в США в державному і військовому секторах, що, мабуть, і стало перешкодою для руху Interbase до Росії. У Росії InterBase використовується з 1993 р., але інтерес до цього сервера зріс тільки останнім часом, у зв'язку з включенням його версії до складу Delphi Client/Server Suite та Delphi Enterprise. Увагу розробників БД і додатків InterBase привернув, по-перше, тому, що це "рідний" продукт Borland (а засоби розробки додатків цієї компанії давно зарекомендували себе з позитивного боку), по-друге, тому, що InterBase вельми простий в установці, налаштуванню і - головне - в адмініструванні в порівнянні з іншими SQL-серверами, і по-третє, тому, що він володіє прекрасними функціональними можливостями.

 

Приведемо деякі технічні характеристики сервера (K =1024 байта)

 

Характеристика                                                               Значення

 

Максимальний розмір однієї БД                                    Рекомендується не вище 10 Гбайт. Проте відомі випадки об'єму однієї БД в 10-20 Гбайт

 

Максимальне число таблиць в одній БД                       65,536

 

Максимальне число полів (стовпців) в одній таблиці 1000

 

Максимальне число записів в одній таблиці                Не обмежено

 

Максимальна довжина запису                                       64 K (не рахуючи полів BLOB)

 

Максимальна довжина поля                                                       32 K (окрім полів BLOB)

 

Максимальна довжина поля BLOB                                           Не обмежена

 

Максимальне число індексів в БД                                 65,536

 

Максимальне число полів в індексі                               16

 

Максимальне число вложенностей SQL-запроса        16

 

Максимальний розмір процедури, що зберігається, або трігера 48 K

 

Максимальна кількість UDF в базі даних                     Довжина імені UDF - не більше 31 символу. Кожен UDF повинен мати унікальне ім'я. Максимальне число UDF обмежується тільки вимогою унікальності імені

 

Delphi і InterBase

 

Delphi Enterprise призначена для написання додатків, що працюють як з локальними, так і з віддаленими даними. У останньому випадку за допомогою Delphi створюються клієнтські застосування (забігаючи вперед, відмітимо, що в багатоланковій архітектурі за допомогою Delphi створюються також і сервери додатків - проміжна ланка між додатком "тонкого" клієнта і SQL-сервером).

 

Написання додатків у архітектурі "файл-сервер" має таку специфіку:

 

• компоненту TTable для доступу до віддалених даних використовувати не рекомендується, оскільки він вимагає передачі всіх даних результату виконання запиту до сервера, а не тільки тієї їх частині, яка має бути візуалізована (що має місце для компоненту TQuery);

 

• зміну записів БД слід проводити не методами Insert, Edit, Delete, Post, Cancel, які оперують з одним (поточним) записом, а за допомогою SQL-операторов INSERT, UPDATE, DELETE, які оперують множиною записів;

 

• слід надавати особливу увагу управлінню транзакціями і насамперед - вибору, адекватного потребам додатку рівня ізоляції транзакцій;

 

• бізнес-правила, де це можливо, слід переносити на сервер, розвантажуючи від них клієнтський додаток;

 

• для з'єднання з видаленою БД всіх компонентів, що працюють з цією БД, слід використовувати якомога менше компонентів Tdatabase (у ідеалі - один), визначуваних в додатку явно (оскільки в цьому випадку можна управляти параметрами з'єднання з видаленою БД);

 

• слід якомога частіше використовувати збережені процедури, що виконуються швидше за звичайні SQL-запити та зменшують завантаження мережі;

 

• слід завжди, де це необхідно, явно викликати методи TDatabase.Start Transaction, TDatabase.Commit), для старта та підтвердження транзакцій; підтвердження одиничних змін БД проводиться транзакціями, що стартують і завершуються неявно (у режимі SQLPASSTHRU = SHARED AUTOCOMMIT), це веде до зростання графіка і, як наслідок, до уповільнення роботи, часто вельми істотного;

 

• слід приділяти істотну увагу оптимізації запитів до БД, особливо при читанні даних (SELECT), оскільки оптимально побудований запит може виконуватися у декілька разів швидше, ніж неоптимальний, і вимагати меншої кількості ресурсів для свого виконання.

 

Ці особливості розробки клієнтського ужитка, так само як і особливості організації серверних БД і доступу до інформації в них, будуть розглянуті в наступних розділах.

 

Питання з'єднання з видаленим сервером

 

При роботі з локальним сервером досить встановити псевдонім БД (утиліта BDE Administrator) і потім використовувати даний псевдонім в додатку Delphi, в компонентах TDatabase і, можливо, TTable і TQuery (коли з'єднання з БД проводиться без компонента TDatabase). При доступі до локального сервера безпосередньо з InterBase (наприклад, з утиліти IBConsole) указується шлях до БД (InterBase працює з БД, використовуючи власний API і нічого не "знає" про BDE).

 

При роботі з віддаленим сервером необхідно "прописати" його на комп'ютері, з якого відбувається звернення до сервера. При використанні протоколу TCP/IP:

 

1) IP-адреса і ім'я мають бути описані у файлі HOSTS, наприклад: 10.12.0.41 spv

 

2) протокол доступу до InterBase має бути описаний у файлі SERV ICE:

 

gds_db 3050/tcp

 

Обидва вказані файли знаходяться в каталозі WINDOWS.

 

 

Приклад БД “Облік товарів на складі”

Таблиці: “Товар” (БТ) : Назва товару, Одиниця виміру, Ціна_од_виміру

“Покупці” (БТ): Назва покупця, Місто, Адреса

“Продаж_товару” (ДТ): Номер_продажу, Дата продажу, Кількість, Назва товару (FK), Назва покупця (FK).

 

Для створення бази Interbase

 

CREATE {DATABASE | SCHEMA} "<ім’я_файлу>"

[USER "ім’я_користувача" [PASSWORD "пароль"]]

[PAGE_SIZE [=] ціле]

[LENGTH [=] ціле [PAGE[S]]]

[DEFAULT CHARACTER SET набір_символів]

[<вторинний_файл>];

 

<вторинний_файл> = FILE "<ім’я_файлу>" [<файлов_інформ>] [<вторинний_файл>]

 

<файлов_інформ> = LENGTH [=] ціле [PAGE[S]] | STARTING [AT [PAGE]] ціле [<файлов_інформ>]

 

де <ім’я_файлу> – назва (первинного) файлу для створюваної БД;

USER "ім’я_користувача" - ім’я_користувача, яке перевірятиметься при з’єднанні;

PASSWORD "пароль" - пароль, який перевірятиметься при з’єднанні;

PAGE_SIZE [=] ціле – розмір сторінки БД в байтах (1024, 2048, 4096, 8192);

DEFAULT CHARACTER SET набір_символів – набір символів (NONE);

FILE "<ім’я_файлу>" – ім’я наступного (вторинного) файлу для створюваної БД;

STARTING [AT [PAGE] – з якої сторінки БД починається файл;

LENGTH [=] ціле [PAGE[S]] – довжина файлу в сторінках (>50, 75).

 

Приклад:

 

CREATE DATABASE “SKLAD.GDB” USER “SYSDBA” PASSWORD “masterkey” DEFAULT CHARACTER SET WIN1251

 

Типи даних InterBase

SMALLINT                       -32768 до +32767                          (DBD – short)

INTEGER                          -2 147 483 647 до +2 147 483 647. (DBD – long)

FLOAT                              3.4Е-38 до 3.4Е+38 (.7 зн).          (DBD – short)

DOUBLE PRECISION    1,7Е-308до1,7Е+308. (.15 зн).

CHAR (n), CHARACTER симв.рядок фікс. довжини (при зчитуванні) (0<n<32767)

VARCHAR (n), CHARACTER VARYING      симв.рядок зм. довжини (0<n<32767)

DATE                                дата і час                                       = TDateTime

BLOB                           дв. дані (Binary Large Object)

 

Поняття домену

Для створення стовпців з однаковими характеристиками використовуються домени.

Домен визначається оператором CREATE DOMAIN. Його формат:

 

CREATE DOMAIN домен [AS] <тип_даних>

[DEFAULT {літерал| NULL | USER}]

[NOT NULL] [CHECK (<обмеж_домена>)]

[COLLATE collation] ;

 

COLLAТЕ collation - порядок сортування символів (для символьних полів) для обраного набору символів.

 

DEFAULT - значення поля за замовчуванням (при створенні запису і до його зміни);

 

Приклад:

 

CREATE DOMAIN POL_TYPE AS

VARCHAR(20) NOT NULL COLLATE PXW_CYRL;

 

тоді

 

CREATE TABLE TOVARY(

TOVAR POL_TYPE,

OD_VYM VARCHAR(10) NOT NULL COLLATE PXW_CYRL,

CINA FLOAT NOT NULL,

PRIMARY KEY(TOVAR)

);

 










Последнее изменение этой страницы: 2018-04-12; просмотров: 330.

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