Вступ
Вступ
Лекція 1. Бази даних і файлові системи
На першій лекції ми розглянемо загальне значення понять БД і СУБД. Почнемо з того, що з самого початку розвитку обчислювальної техніки утворилися два основних напрями її використання. Перший напрям - застосування обчислювальної техніки для виконання чисельних розрахунків, які дуже довго або взагалі неможливо проводити вручну. Становлення цього напряму сприяло інтенсифікації методів чисельного рішення складних математичних задач, розвитку класу мов програмування, орієнтованих на зручний запис чисельних алгоритмів, становленню зворотного зв'язку з розробниками нової архітектури ЕОМ.
Другий напрям, який безпосередньо торкається теми нашого курсу, це використання засобів обчислювальної техніки в автоматичних або автоматизованих інформаційних системах. У самому широкому значенні інформаційна система являє собою програмний комплекс, функції якого перебувають в підтримці надійного зберігання інформації в пам'яті комп'ютера, виконанні специфічних для даного додатку перетворень інформації і/або обчислень, наданні користувачам зручного і інтерфейсу, що легко освоюється. Звичайно обсяги інформації, з якими доводиться мати справу таким системам, досить великі, а сама інформація має досить складну структуру. Класичними прикладами інформаційних систем є банківські системи, системи резервування авіаційних або залізничних квитків, місць в готелях і т.д.
Насправді, другий напрям виник трохи пізніше першого. Це пов'язано з тим, що на зорі обчислювальної техніки комп'ютери володіли обмеженими можливостями в частині пам'яті. Зрозуміло, що можна говорити про надійне і довготривале зберігання інформації тільки при наявності запам'ятовуючих пристроїв, що зберігають інформацію після вимкнення електричного живлення. Оперативна пам'ять цією властивістю звичайно не володіє. На початку використовувалися два вигляду пристроїв зовнішньої пам'яті: магнітні стрічки і барабани. При цьому місткість магнітних стрічок була досить велика, але за своїй фізичній природою вони забезпечували послідовний доступ до даних. Магнітні ж барабани (вони більше усього схожі на сучасні магнітні диски з фіксованими головками) давали можливість довільного доступу до даними, але були обмеженого розміру.
Легко бачити, що вказані обмеження не дуже істотні для чисто чисельних розрахунків. Навіть якщо програма повинна обробити (або зробити) великий обсяг інформації, при програмуванні можна продумати розташування цієї інформації у зовнішній пам'яті, щоб програма працювала якнайшвидше.
З іншого боку, для інформаційних систем, в яких потреба в поточних даних визначається користувачем, наявність тільки магнітних стрічок і барабанів незадовільна. Уявіть собі покупця квитка, який стоячи біля каси повинен дочекатися повного перемотування магнітної стрічки. Однією з природних вимог до таких систем є середня швидкість виконання операцій.
Як здається, саме вимоги до обчислювальної техніки з боку незлічених додатків спричинили появу знімних магнітних дисків з рухомими головками, що було революцією в історії обчислювальної техніки. Ці пристрої зовнішньої пам'яті володіли істотно більшою місткістю, ніж магнітні барабани, забезпечували задовільну швидкість доступу до даних в режимі довільної вибірки, а можливість зміни дискового пакету на пристрої дозволяла мати практично необмежений архів даних.
З появою магнітних дисків почалася історія систем управління даними у зовнішній пам'яті. До цього кожна прикладна програма, якій був потрібен зберігати дані у зовнішній пам'яті, сама визначала розташування кожної порції даних на магнітній стрічці або барабані і виконувала обміни між оперативною і зовнішньою пам'яттю за допомогою програмно-апаратних засобів низького рівня (машинних команд або викликів відповідних програм операційної системи). Такий режим роботи не дозволяє або дуже утрудняє підтримку на одному зовнішньому носії декількох архівів інформації, що довго зберігається. Крім того, кожній прикладній програмі доводилося вирішувати проблеми іменування частин даних і структуризації даних у зовнішній пам'яті.
1.1. Файлові системи
Історичним кроком з'явився перехід до використання централізованих систем управління файлами. З точки зору прикладної програми файл - це іменована область зовнішньої пам'яті, в яку можна записувати і з якої можна прочитувати дані. Правила іменування файлів, спосіб доступу до даних, що зберігаються в файлі, і структура цих даних залежать від конкретної системи управління файлами і, можливо, від типу файла. Система управління файлами бере на себе розподіл зовнішньої пам'яті, відображення імен файлів у відповідні адреси у зовнішній пам'яті і забезпечення доступу до даних.
Перша розвинена файлова система була розроблена фірмою IBM для її серії 360. До теперішнього часу вона дуже застаріла, і ми не будемо розглядати її детально. Помітимо лише, що в цій системі підтримувалися як чисто послідовні, так і індексно-послідовні файли, а реалізація багато в чому спиралася на можливості контролерів управління, що тільки з'явилися до цього часу дисковими пристроями. Якщо врахувати до того ж, що поняття файла в OS/360 було вибране як основне абстрактне поняття, якому відповідав будь-який зовнішній об'єкт, включаючи зовнішні пристрої, то працювати з файлами на рівні користувача було дуже незручно. Був потрібен цілий ряд громіздких і переобтяжених деталями конструкцій. Все це добре знайоме програмістам середнього і старшого покоління, які пройшли через використання вітчизняних аналогів комп'ютерів IBM.
1.1.1. Структури файлів
Далі ми будемо говорити про більш сучасні організації файлових систем. Почнемо зі структур файлів. Передусім, практично у всіх сучасних комп'ютерах основними пристроями зовнішньої пам'яті є магнітні диски з рухомими головками, і саме вони служать для зберігання файлів. Такі магнітні диски являють собою пакети магнітних пластин (поверхонь), між якими на одному важелі рухається пакет магнітних головок. Крок рушення пакету головок є дискретним, і кожному положенню пакету головок логічно відповідає циліндр магнітного диска. На кожній поверхні циліндр "висікає" доріжку, так що кожна поверхня містить число доріжок, рівне числу циліндрів. При розмітці магнітного диска (спеціальній