Добавил:
Developer Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Пример проекта 2

.pdf
Скачиваний:
7
Добавлен:
04.04.2023
Размер:
1.26 Mб
Скачать

Критерий надежности системы включает возможность:

-восстановления системы после сбоев;

-резервного копирования;

-отката изменений;

-наличие многоуровневой системы защиты.

Немаловажно определить и требования к рабочей среде такие как:

-поддерживаемые аппаратные платформы;

-минимальные требования к оборудованию;

-максимальный размер адресуемой памяти;

-операционные системы, под управлением которых способна работать

СУБД.

К смешанным критериям можно отнести:

-качество и полноту документации;

-локализованность, возможность использования национальных языков;

-модель формирования стоимости производителем СУБД;

-стабильность производителя;

-распространенность СУБД.

Сравнительный анализ на основании вышеперечисленных критериев в любом случае поможет рационально выбрать подходящую систему для конкретного проекта, и затраченные усилия не будут напрасными. Перечень критериев поможет осознать масштабность задачи и выполнить ее адекватную

постановку.

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