Устойчивост на данните
Някои данни имат значение само по време на изпълнение на програмата (калкулаторът помни числата временно) и при затваряне се губят. Има обаче данни, които искаме да са устойчиви — налични при всяко пускане и спиране на програмата. В една ИС това са данните за клиенти, поръчки, доставки — непрактично е потребителят да ги въвежда отначало всеки път.
Файлов подход
Първият и най-очевиден подход: данните се съхраняват във файл. При стартиране програмата зарежда данните от файла, работи с тях и накрая ги записва обратно. Така работят текстовите редактори например. Този подход се нарича файлово базиран или традиционен — използва се и днес, но има сериозни недостатъци.
Недостатъци на файловия подход
- Зависимост между формàта на данните и програмата — до данните има достъп само специализираната програма, която ги е създала. Ако тя е платена или не се поддържа за нашата ОС, данните са недостъпни.
- Връзката данни–файлове е задължение на потребителя — кой файл какво съдържа зависи от автора; при лоша документация достъпът до данните може да се окаже невъзможен.
- Дублиране (излишество) на данни — при повече от едно копие на една данна не се знае кое е актуалното.
- Нарушаване на целостността — „счупена" вътрешна структура: променим ли клиентския номер в единия файл, поръчките в другия „осиротяват".
- Едновременен достъп — грижата няколко потребители да работят със споделени данни пада изцяло върху разработчика.
- Защита на данните — от повреди и от неразрешен достъп; отново изцяло задължение на разработчика.
- Зависимост от езика — низовете в C са
null terminated, в други езици започват с байтове за дължина. Двоичен файл, записан от програма на един език, не може директно да се чете от програма на друг. - Липса на гъвкавост — всяка нова справка изисква промяна на програмата (нова поръчка към създателите или договор за поддръжка).
Пример за нарушена цялостност
Служител записал клиент (име, телефон, имейл) в текстов файл. После създал копие, в което обновил адреса. Междувременно друг служител добавил нов телефон в оригинала. Вече нито едно от двете копия не е напълно вярно — и дори датата на последна промяна не помага.
Подход с база от данни
Възлагането на управлението на данните на специализиран софтуер — СУБД — прави данните независими от програмата. Програмата общува със СУБД, а тя от своя страна — с данните. Така програми на различни езици имат достъп до данните, без да се интересуват как са записани и структурирани.
Какво дава СУБД наготово
- Модел на данните — повторенията се избягват, а ограниченията за цялостност предотвратяват „счупени" данни.
- Транзакции — последователност от операции, които са логически неделими: „или всички се изпълняват успешно, или никоя не се изпълнява". Класически пример е паричният превод: намаляване на едната сметка + увеличаване на другата.
- Управление на едновременния достъп — много потребители работят заедно без допълнително усилие от програмиста.
- Защита и контрол на достъпа — автоматични резервни копия (включително на отдалечени устройства) и права на ниво таблица, части от таблица и дори една клетка.
| Файлов подход | Подход с БД (СУБД) | |
|---|---|---|
| Достъп до данните | Само през програмата, която ги е създала | Всяка програма, която общува със СУБД |
| Дублиране | Често; не се знае кое копие е вярно | Избягва се чрез модела на данните |
| Цялостност | Грижа на потребителя/разработчика | Пази се от ограниченията в модела |
| Едновременен достъп | Програмира се ръчно | Вграден в СУБД |
| Нова справка | Промяна на програмата | Нова заявка (SQL) — без промяна на кода |
| Защита | Задължение на разработчика | Резервни копия и права — наготово |
Транзакция — „всичко или нищо“
Ако при превод сметката на подателя се намали, а на получателя не се увеличи — единият е загубил, а другият не е получил парите. Затова двете операции се обединяват в транзакция: или всички операции се изпълняват успешно, или никоя.
Кога все пак файлов подход?
Файловете не са „забранени" — за конфигурации, документи или данни, с които работи една програма и един потребител, те са напълно подходящи. БД печели, когато данните са споделени, свързани помежду си и към тях се задават разнообразни справки.
Помисли (задача от учебника)
За кои от следните системи е по-подходящо файлово решение и за кои — база от данни? 1) Онлайн игра от типа First person shooter; 2) Система за управление на колекции от филми и книги; 3) Софтуер за управление на впръскването на гориво в двигател; 4) Система за контрол на достъпа на служители.
Какво трябва да запомниш
- Устойчиви данни = данни, които преживяват спирането на програмата.
- Файловият подход обвързва данните с конкретна програма и език.
- Главни проблеми: дублиране, нарушена цялостност, споделен достъп, защита, гъвкавост.
- СУБД прави данните независими от програмата и дава транзакции, права и резервни копия наготово.
- Транзакция: или всички операции успяват, или никоя не се изпълнява.