Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
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; просмотров: 366. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |