Лого на 91. НЕГ „Проф. Константин Гълъбов“

Модул 3 · Урок 3

Файлов подход и подход с база от данни

Защо съхраняването на данни в отделни файлове създава проблеми — дублиране, нарушена цялостност, труден споделен достъп — и как СУБД ги решава.

Устойчивост на данните

Някои данни имат значение само по време на изпълнение на програмата (калкулаторът помни числата временно) и при затваряне се губят. Има обаче данни, които искаме да са устойчиви — налични при всяко пускане и спиране на програмата. В една ИС това са данните за клиенти, поръчки, доставки — непрактично е потребителят да ги въвежда отначало всеки път.

Файлов подход

Първият и най-очевиден подход: данните се съхраняват във файл. При стартиране програмата зарежда данните от файла, работи с тях и накрая ги записва обратно. Така работят текстовите редактори например. Този подход се нарича файлово базиран или традиционен — използва се и днес, но има сериозни недостатъци.

Недостатъци на файловия подход

  • Зависимост между формàта на данните и програмата — до данните има достъп само специализираната програма, която ги е създала. Ако тя е платена или не се поддържа за нашата ОС, данните са недостъпни.
  • Връзката данни–файлове е задължение на потребителя — кой файл какво съдържа зависи от автора; при лоша документация достъпът до данните може да се окаже невъзможен.
  • Дублиране (излишество) на данни — при повече от едно копие на една данна не се знае кое е актуалното.
  • Нарушаване на целостността — „счупена" вътрешна структура: променим ли клиентския номер в единия файл, поръчките в другия „осиротяват".
  • Едновременен достъп — грижата няколко потребители да работят със споделени данни пада изцяло върху разработчика.
  • Защита на данните — от повреди и от неразрешен достъп; отново изцяло задължение на разработчика.
  • Зависимост от езика — низовете в C са null terminated, в други езици започват с байтове за дължина. Двоичен файл, записан от програма на един език, не може директно да се чете от програма на друг.
  • Липса на гъвкавост — всяка нова справка изисква промяна на програмата (нова поръчка към създателите или договор за поддръжка).

Пример за нарушена цялостност

Служител записал клиент (име, телефон, имейл) в текстов файл. После създал копие, в което обновил адреса. Междувременно друг служител добавил нов телефон в оригинала. Вече нито едно от двете копия не е напълно вярно — и дори датата на последна промяна не помага.

Подход с база от данни

Възлагането на управлението на данните на специализиран софтуер — СУБД — прави данните независими от програмата. Програмата общува със СУБД, а тя от своя страна — с данните. Така програми на различни езици имат достъп до данните, без да се интересуват как са записани и структурирани.

Какво дава СУБД наготово

  • Модел на данните — повторенията се избягват, а ограниченията за цялостност предотвратяват „счупени" данни.
  • Транзакции — последователност от операции, които са логически неделими: „или всички се изпълняват успешно, или никоя не се изпълнява". Класически пример е паричният превод: намаляване на едната сметка + увеличаване на другата.
  • Управление на едновременния достъп — много потребители работят заедно без допълнително усилие от програмиста.
  • Защита и контрол на достъпа — автоматични резервни копия (включително на отдалечени устройства) и права на ниво таблица, части от таблица и дори една клетка.
Файлов подходПодход с БД (СУБД)
Достъп до даннитеСамо през програмата, която ги е създалаВсяка програма, която общува със СУБД
ДублиранеЧесто; не се знае кое копие е вярноИзбягва се чрез модела на данните
ЦялостностГрижа на потребителя/разработчикаПази се от ограниченията в модела
Едновременен достъпПрограмира се ръчноВграден в СУБД
Нова справкаПромяна на програматаНова заявка (SQL) — без промяна на кода
ЗащитаЗадължение на разработчикаРезервни копия и права — наготово

Транзакция — „всичко или нищо“

Ако при превод сметката на подателя се намали, а на получателя не се увеличи — единият е загубил, а другият не е получил парите. Затова двете операции се обединяват в транзакция: или всички операции се изпълняват успешно, или никоя.

Кога все пак файлов подход?

Файловете не са „забранени" — за конфигурации, документи или данни, с които работи една програма и един потребител, те са напълно подходящи. БД печели, когато данните са споделени, свързани помежду си и към тях се задават разнообразни справки.

Помисли (задача от учебника)

За кои от следните системи е по-подходящо файлово решение и за кои — база от данни? 1) Онлайн игра от типа First person shooter; 2) Система за управление на колекции от филми и книги; 3) Софтуер за управление на впръскването на гориво в двигател; 4) Система за контрол на достъпа на служители.

Какво трябва да запомниш

  • Устойчиви данни = данни, които преживяват спирането на програмата.
  • Файловият подход обвързва данните с конкретна програма и език.
  • Главни проблеми: дублиране, нарушена цялостност, споделен достъп, защита, гъвкавост.
  • СУБД прави данните независими от програмата и дава транзакции, права и резервни копия наготово.
  • Транзакция: или всички операции успяват, или никоя не се изпълнява.