- •1 Загальна частина
- •Предметна область
- •Технології створення сайтів
- •Сучасні методи реалізації завдання
- •Актуальність розробки даної теми
- •2.1 Мета і завдання
- •2.3 Призначення і цілі створення системи
- •Обгрунтування вибору засобів реалізації
- •Основні діаграми моделі програмної системи
- •3.2 Вибір мови та середовища програмування
- •3.2.1 Мова html версії 4.01
- •3.2.2 Мова html версії 5
- •3.2.3 Огляд мови css
- •3.2.4 Мова css версії 2.1
- •3.2.5 Мова css версії 3
- •3.2.6 JavaScript та його використання у веб-розробці
- •3.2.9 Мова php
- •3.3 Вибір субд
- •Описання програмного продукту
- •Структура сторінки сайту
- •Структура сайту
- •Формування файлової структури
- •Опис шаблону сайту
- •Реалізація фіксованої верстки
- •Результати роботи програми
- •5. Обслуговування системи
- •Безпека сайту
- •Адміністрування
- •5.3 Розміщення сайту в інтернеті
- •5.4 Забезпечення технічної підтримки веб-сайту
- •Охорона праці
- •6.1 Аналіз умов праці та засоби безпеки щодо попередження травматизму і професійних захворювань
- •6.2 Організація робочих місць
- •6.3 Заходи пожежної безпеки та електробезпеки
- •6.4 Охорона навколишнього середовища
- •Висновки
- •Перелік посилань
3.3 Вибір субд
Вибір СУБД - це досить важливий вибір адже від нього залежить вибір мови програмування. Від цього вибору залежить складність всього проекту в цілому.
PostgreSQL - це вільно поширювана об'єктно-реляційна система управління базами даних (ORDBMS), найбільш розвинена з відкритих СУБД у світі і є реальною альтернативою комерційних баз даних.
Надійність PostgreSQL є перевіреним і доведеним фактом і забезпечується наступними можливостями:
повна відповідність принципам ACID - атомарность, несуперечливість, ізольованість, збереження даних;
atomicity - транзакція розглядається як єдина логічна одиниця, всі її зміни або зберігаються цілком, або повністю відкочуються;
consistency - транзакція переводить базу даних з одного несуперечливого стану (на момент старту транзакції) в інше несуперечливе стан (на момент завершення транзакції). Несуперечливим вважається стан бази, коли виконуються всі обмеження фізичної та логічної цілісності бази даних, при цьому допускається порушення обмежень цілісності протягом транзакції, але на момент завершення всі обмеження цілісності, як фізичні, так і логічні, повинні бути дотримані;
isolation - зміни даних при конкурентних транзакціях ізольовані один від одного на основі системи версійності;
durability - PostgreSQL піклується про те, що результати успішних транзакцій гарантовано зберігаються на жорсткий диск незалежно від збоїв апаратури.
Багатоверсійність (Multiversion Concurrency Control, MVCC) використовується для підтримки узгодженості даних в конкурентних умовах, в той час як в традиційних базах даних використовуються блокування. MVCC означає, що кожна транзакція бачить копію даних (версію бази даних) на час початку транзакції, незважаючи на те, що стан бази могло вже змінитися. Це захищає транзакцію від неузгоджених змін даних, які могли бути викликані (інший) конкурентної транзакцією, і забезпечує ізоляцію транзакцій. Основний виграш від використання MVCC в порівнянні з блокуванням полягає в тому, що блокування, яке ставить MVCC для читання, не конфліктує з блокуванням на запис, і тому читання ніколи не блокує запис і навпаки;
Наявність Write Ahead Logging (WAL) - загальноприйнятий механізм протоколювання всіх транзакцій, що дозволяє відновити систему після можливих збоїв. Основна ідея WAL полягає в тому, що всі зміни повинні записуватися у файли на диск тільки після того, як ці записи журналу, що описують ці зміни, будуть гарантовано записані на диск. Це дозволяє не скидати сторінки даних на диск після фіксації кожної транзакції, так як ми знаємо і впевнені, що зможемо завжди відновити базу даних використовуючи журнал транзакцій:
Point in Time Recovery (PITR) - можливість відновлення бази даних (використовуючи WAL) на будь-який момент у минулому, що дозволяє здійснювати безперервне резервне копіювання кластера PostgreSQL:
реплікація також підвищує надійність PostgreSQL. Існує кілька систем реплікації, наприклад, Slony, який є вільним і найбільш використовуваним рішенням, підтримує master-slaves реплікацію. Очікується, що Slony-II буде підтримувати multi-master режим;
цілісність даних є серцем PostgreSQL. Крім MVCC, PostgreSQL підтримує цілісність даних на рівні схеми - це зовнішні ключі (foreign keys), обмеження (constraints);
модель розвитку PostgreSQL, яка абсолютно прозора для будь-якого, так як всі плани, проблеми та пріоритети відкрито обговорюються. Користувачі та розробники перебувають у постійному діалозі через мейлінг листи. Всі пропозиції, патчі проходять ретельне тестування до прийняття їх в програмне дерево. Велика кількість бета-тестерів сприяє тестуванню версії до релізу і вичищення дрібних помилок;
відкритість кодів PostgreSQL означає їх абсолютну доступність для будь-якого, а ліберальна BSD ліцензія не накладає ніяких обмежень на використання коду.
Продуктивність PostgreSQL грунтується на використанні індексів, інтелектуальному планувальнику запитів, тонкої системи блокувань, системою управління буферами пам'яті і кешування, чудовою масштабованості при конкурентній роботі:
Підтримка індексів:
стандартні індекси - B-tree, hash, R-tree, GiST (узагальнене пошукове дерево, яке дозволяє на рівні користувача створювати свої типи даних і індексні методи доступу до них);
часткові індекси (partial indices);
функціональні індекси.
Планувальник запитів ґрунтується на вартості різних планів, враховуючи безліч факторів. Він надає можливість користувачеві налагоджувати запити і налаштовувати систему.
Система блокувань підтримує блокування на нижньому рівні, що дозволяє зберігати високий рівень конкурентності при захисті цілісності даних. Блокування підтримується на рівні таблиць і записів. На нижньому рівні, блокування для загальних ресурсів оптимізована під конкретну ОС і архітектуру.
Управління буферами і кешування використовують складні алгоритми для підтримки ефективності використання виділених ресурсів пам'яті.
Тablespaces (табличні простору) дозволяють гнучке використання дискового простору для зберігання об'єктів системи, що також підвищує продуктивність і масштабованість.
Масштабованість грунтується на описаних вище можливостях. Низька вимогливість PostgreSQL до ресурсів і гнучка система блокувань забезпечують його шкалювання, в той час як індекси та управління буферами забезпечують хорошу керованість системи навіть при високих завантаженнях.
Розширюваність PostgreSQL означає, що користувач може налаштовувати систему шляхом визначення нових функцій, агрегатів, типів, мов, індексів і операторів. Об'єктно-орієнтованість PostgreSQL дозволяє перенести логіку програми на рівень бази даних, що сильно спрощує розробку клієнтів, так як вся бізнес логіка знаходиться в базі даних. Функції в PostgreSQL однозначно визначаються назвою, кількістю і типами аргументів.
MySQL - вільна система керування базами даних (СКБД). MySQL є власністю компанії Oracle Corporation, що отримала її разом з поглиненої Sun Microsystems, що здійснює розробку та підтримку програми. Поширюється під GNU General Public License або під власною комерційною ліцензією. Крім цього розробники створюють функціональність за замовленням ліцензійних користувачів, саме завдяки такому замовленню майже в найраніших версіях з'явився механізм реплікації.
MySQL є рішенням для малих і середніх додатків. Входить до складу серверів WAMP, AppServ, LAMP і в портативні збірки серверів Денвер, XAMPP. Зазвичай MySQL використовується як сервер, до якого звертаються локальні або видалені клієнти, проте в дистрибутив входить бібліотека внутрішнього сервера, що дозволяє включати MySQL в автономні програми.
Гнучкість СУБД MySQL забезпечується підтримкою великої кількості типів таблиць: користувачі можуть вибрати як таблиці типу MyISAM, що підтримують повнотекстовий пошук, так і таблиці InnoDB, що підтримують транзакції на рівні окремих записів. Більш того, СУБД MySQL поставляється із спеціальним типом таблиць EXAMPLE, що демонструє принципи створення нових типів таблиць. Завдяки відкритій архітектурі і GPL-ліцензуванню, в СУБД MySQL постійно з'являються нові типи таблиць.
26 лютого 2008 Sun Microsystems придбала MySQL AB за 1 мільярд доларів. 27 січня 2010 Oracle Corporation придбала Sun Microsystems і включила MySQL в свою лінійку СУБД.
Спільнотою розробників MySQL створені різні відгалуження коду, такі як Drizzle, OurDelta, Percona Server, і MariaDB. Всі ці відгалуження вже існували на момент поглинання компаній Sun і MySQL AB корпорацією Oracle.
