
Пример проекта 2
.pdfКритерий надежности системы включает возможность:
-восстановления системы после сбоев;
-резервного копирования;
-отката изменений;
-наличие многоуровневой системы защиты.
Немаловажно определить и требования к рабочей среде такие как:
-поддерживаемые аппаратные платформы;
-минимальные требования к оборудованию;
-максимальный размер адресуемой памяти;
-операционные системы, под управлением которых способна работать
СУБД.
К смешанным критериям можно отнести:
-качество и полноту документации;
-локализованность, возможность использования национальных языков;
-модель формирования стоимости производителем СУБД;
-стабильность производителя;
-распространенность СУБД.
Сравнительный анализ на основании вышеперечисленных критериев в любом случае поможет рационально выбрать подходящую систему для конкретного проекта, и затраченные усилия не будут напрасными. Перечень критериев поможет осознать масштабность задачи и выполнить ее адекватную
постановку.
41
Так, с учетом вышеприведенного, при выборе СУБД для проектирования Автоматизированной информационной системы для курсового проекта мы руководствовались следующими характеристиками Программного обеспечения:
1.Производительность: количество транзакций в секунду, время отклика,
время выполнения сложных SQL запросов.
2.Надежность: вероятность и продолжительность простоев, вероятность потери данных.
3.Безопасность и защита данных.
4.Управляемость: стоимость администрирования, эффективность использования ресурсов оборудования.
5.Масштабируемость: обеспечение производительности при увеличении нагрузки и числа пользователей, возможность увеличения объема используемых аппаратных ресурсов.
6.Работа с большими объемами данных и большим числом пользователей.
7.Наличие и уровень технической поддержки.
8.Совокупная стоимость владения.
9.Зрелость СУБД и перспективы ее развития.
10.Поддержка новых современных технологий.
В процессе проведения сравнительного анализ существующих СУБД, был сделан следующий вывод, что СУБД PostgreSQL обладает рядом преимуществ по сравнению с другим СУБД по критериям, выдвинутым заказчиком проекта.
42
PostgreSQL — это самая продвинутая РСУБД, ориентирующаяся в первую очередь на полное соответствие стандартам и расширяемость. PostgreSQL, или
Postgres, пытается полностью соответствовать SQL-стандартам ANSI/ISO:2008.
Будучи основанным на мощной технологии Postgres отлично справляется с одновременной обработкой нескольких заданий. Поддержка конкурентности реализована с использованием MVCC (Multiversion Concurrency Control), что также обеспечивает совместимость с ACID. PostgreSQL не просто реляционная,
а объектно-реляционная СУБД, основанная на языке SQL. Это даёт ему некоторые преимущества над другими SQL базами данных с открытым исходным кодом, такими как MySQL, MariaDB и Firebird. Например, полную поддержку концепта ACID (Atomicity, Consistency, Isolation, Durability).
Первичные ключи, ограничивающие и каскадные внешние ключи, уникальные ограничения, ограничения NOT NULL, проверочные ограничения и другие функции обеспечения целостности данных дают уверенность, что только корректные данные будут сохранены.
Фундаментальная характеристика объектно-реляционной базы данных — это поддержка пользовательских объектов и их поведения, включая типы данных, функции, операции, домены и индексы. Это делает Постгрес невероятно гибким и надежным. Среди прочего, он умеет создавать, хранить и извлекать сложные структуры данных. Например, PostgreSQL уже давно поддерживает множество геометрических типов данных, таких как точки, линии, круги и многоугольники. Поддержка же JSON в PostgreSQL позволяет вам перейти к хранению schema-less данных в SQL базе данных. Это может быть полезно, когда структура данных требует определённой гибкости: например, если в процессе разработки структура всё ещё меняется или неизвестно, какие поля будет содержать объект данных. Важен факт, что PostgreSQL поддерживается опытным сообществом 24/7.
43
MySQL и MariaDB больше работают на то, чтобы соответствовать стандарту SQL с движками таблиц InnoDB/XtraDB. Теперь они предлагают опцию STRICT с использованием режимов SQL, которая устанавливает проверки корректности используемых данных. Ни одна из этих баз данных сейчас не поддерживает CHECK ограничения. Кроме того, у них существует множество особенностей в отношении ограничений ссылочной целостности по внешним ключам. В дополнение к вышесказанному, целостность данных может существенно пострадать в зависимости от выбранного движка хранения. MySQL (и fork MariaDB) не делают секрета из того, что променяли целостность и соответствие стандартам на скорость и эффективность.
Одной из наиболее сильных сторон СУБД PostgreSQL является архитектура. Как и в случаях со многими коммерческими СУБД, PostgreSQL
можно применять в среде клиент-сервер — это предоставляет множество преимуществ и пользователям, и разработчикам. Основа PostgreSQL составляет серверный процесс базы данных. Он выполняется на одном сервере. (В этой СУБД еще не реализована технология высокой готовности, как в некоторых других коммерческих системах уровня предприятия, которые могут распределять нагрузку между несколькими серверами, добиваясь таким образом дополнительной масштабируемости и устойчивости к внешним воздействиям.)
Доступ из приложений к данным базы осуществляется посредством процесса базы данных. Клиентские программы не могут получить доступ к данным самостоятельно, даже если они работают на том же компьютере, на котором выполняется серверный процесс.
Такое разделение клиентов и сервера позволяет построить распределенную систему. Можно отделить клиентов от сервера посредством сети и разрабатывать клиентские приложения в среде, удобной для пользователя. Например, можно реализовать базу данных под UNIX и создать клиентские приложения, которые будут работать в системе Microsoft Windows.
44
Доступ из приложений к данным базы PostgreSQL производится с помощью специального процесса базы данных. То есть клиентские программы не могут получать самостоятельный доступ к данным даже в том случае, если они функционируют на том же ПК, на котором осуществляется серверный процесс.
Итак, подведем итог преимуществ выбранной нами базы данных:
1. Надежность.
Надёжность СУБД PostgreSQL проверена и доказана. Она обеспечивается соответствием принципам ACID (атомарность, изолированность,
непротиворечивость, сохранность данных), большим количеством версий,
наличием Write Ahead Logging (WAL) — общепринятого механизма протоколирования всех существующих транзакций. Сюда же стоит отнести и возможность восстановления базы данных Point in Time Recovery (PITR),
репликацию, поддержку целостности данных на уровне схемы.
2. Производительность.
В СУБД PostgreSQL она основана на применении индексов, наличии гибкой системы блокировок и интеллектуального планировщика запросов,
использовании системы управления буферами памяти и кэширования. Не стоит забывать и про отличную масштабируемость при конкурентной работе.
3. Расширяемость.
45
Для СУБД PostgreSQL это означает, что пользователь может настроить систему посредством определения новых функций, типов, языков, агрегатов,
индексов и операторов. А объектная ориентированность СУБД PostgreSQL даёт возможность переносить логику приложения на уровень базы данных, а это, в
свою очередь, заметно упрощает разработку клиентов, ведь вся бизнес-логика находится в БД. При этом функции в Postgres однозначно определяются названием, типами и числом аргументов.
4. Поддержка SQL.
PostgreSQL поддерживает схемы, подзапросы, внешние связки, правила,
курсоры, наследование таблиц, триггеры и много чего ещё.
5. Поддержка многочисленных типов данных.
СУБД PostgreSQL поддерживает численные (целые, денежные, с
фиксированной/плавающей точкой), булевые, символьные, составные, сетевые типы данных, типы «дата/время», геометрические примитивы, массивы, XML- и JSON-данные. Кроме этого, Postgres поддерживает создание пользовательских типов данных.
Для упрощения работы с СУБД было принято решение использовать графическую оболочку PGAdmin4.
PgAdmin — это открытая кроссплатформенная программа для администрирования и разработки для PostgreSQL и связанных с ней систем управления базами данных. Она имеет интуитивно понятный интерфейс и набор мощных функций. Написанная на Python и jQuery, эта платформа поддерживает все функции PostgreSQL.
При подключении ПО появляется возможность создавать SQL-скрипты,
отслеживать процессы и оперировать несколькими БД, не написав ни одной строки SQL.
46
pgAdmin может использоваться для выполнения любых задач: от создания таблиц и запуска SQL-команд разного уровня сложности, до мониторинга баз данных и настройки расширенных архитектур БД.
47
4.2.Разработка алгоритмов и текстов программ
Ниже приведен код для создания таблиц БД:
CREATE TABLE "trip" (
"id" int UNIQUE PRIMARY KEY, "permissionid" int,
"shipid" int, "capitan" int
);
CREATE TABLE "discharging" (
"id" SERIAL UNIQUE PRIMARY KEY, "date_" int,
"trip" int, "ship" int, "capitan" int,
"carrier" varchar(255), "arrival_point" varchar(255), "fishing_object" int, "weight" int
);
CREATE TABLE "ship" (
"id" SERIAL PRIMARY KEY, "name" varchar(255) UNIQUE
);
CREATE TABLE "fishing_gear" ( "id" SERIAL PRIMARY KEY, "name" varchar(255) UNIQUE
);
CREATE TABLE "fishing_object" ( "id" SERIAL PRIMARY KEY, "name" varchar(255) UNIQUE, "district" int
);
CREATE TABLE "fishing_operation" (
48
"id" SERIAL PRIMARY KEY, "date_" int,
"tripid" int, "ship" int, "capitan" int, "latitude" float8, "longitude" float8,
"fishing_object" int, "fishing_gear" int, "weight" int
);
CREATE TABLE "employee" ( "passport" int PRIMARY KEY, "profession" int,
"name" varchar(255) UNIQUE );
CREATE TABLE "profession" ( "id" SERIAL PRIMARY KEY, "profession" varchar(255) UNIQUE
);
CREATE TABLE "ship_daily_report" ( "id" SERIAL PRIMARY KEY, "date_" int,
"capitan" int, "tripid" int, "permission" int, "ship" int, "longitude" float8, "latitude" float8, "district" int
);
CREATE TABLE "permission" ( "id" SERIAL PRIMARY KEY, "shipid" int,
49
"districtid" int );
CREATE TABLE "fishing_processing" ( "id" SERIAL PRIMARY KEY, "date_" int,
"production_director" int, "trip" int,
"ship" int, "district" int, "longitude" float8, "latitude" float8, "fishing_gear" int,
"fishing_object" int, "weight" int
);
CREATE TABLE "district" ( "id" SERIAL PRIMARY KEY, "name" varchar(255)
);
CREATE TABLE "fishing_object_district" ( "obj_id" int,
"dist_id" int );
ALTER TABLE "trip" ADD FOREIGN KEY ("shipid") REFERENCES "ship"
("id");
ALTER TABLE "trip" ADD FOREIGN KEY ("capitan") REFERENCES "employee" ("passport");
ALTER TABLE "discharging" ADD FOREIGN KEY ("trip") REFERENCES "trip" ("id");
ALTER TABLE "fishing_operation" ADD FOREIGN KEY ("tripid")
REFERENCES "trip" ("id");
50