Вопрос 27. Модели баз данных; иерархическая, сетевая, реляционная, объективно ориентировочная. Назначение и архитектура. Системы управления базами данных. Типы субд 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Вопрос 27. Модели баз данных; иерархическая, сетевая, реляционная, объективно ориентировочная. Назначение и архитектура. Системы управления базами данных. Типы субд



Систе́ма управле́ния ба́зами да́нных (СУБД) — совокупность программных и лингвистических средств общего или специального назначения, обеспечивающих управление созданием и использованием баз данных

Основные функции СУБД

управление данными во внешней памяти (на дисках);

• управление данными в оперативной памяти с использованием дискового кэша;

• журнализация изменений, резервное копирование и восстановление базы данных после сбоев;

• поддержка языков БД (язык определения данных, язык манипулирования данными).

Состав СУБД

Обычно современная СУБД содержит следующие компоненты:

• ядро, которое отвечает за управление данными во внешней и оперативной памяти и журнализацию,

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

• подсистему поддержки времени исполнения, которая интерпретирует программы манипуляции данными, создающие пользовательский интерфейс с СУБД

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

Классификации СУБД

По модели данных

Примеры:

• Иерархические

• Сетевые

• Реляционные

• Объектно-ориентированные

• Объектно-реляционные

По степени распределённости

локальные СУБД (все части локальной СУБД размещаются на одном компьютере)

• Распределённые СУБД (части СУБД могут размещаться на двух и более компьютерах).

По способу доступа к БД

В файл-серверных СУБД файлы данных располагаются централизованно на файл-сервере. СУБД располагается на каждом клиентском компьютере (рабочей станции). Доступ СУБД к данным осуществляется через локальную сеть. Синхронизация чтений и обновлений осуществляется посредством файловых блокировок.

Преимуществом этой архитектуры является низкая нагрузка на процессор файлового сервера.

Недостатки: потенциально высокая загрузка локальной сети; затруднённость или невозможность централизованного управления; затруднённость или невозможность обеспечения таких важных характеристик как высокая надёжность, высокая доступность и высокая безопасность. Применяются чаще всего в локальных приложениях, которые используют функции управления БД; в системах с низкой интенсивностью обработки данных и низкими пиковыми нагрузками на БД.

На данный момент файл-серверная технология считается устаревшей, а её использование в крупных информационных системах — недостатком[2].

Примеры: Microsoft Access, Paradox, dBase, FoxPro, Visual FoxPro.

• Клиент-серверные

Клиент-серверная СУБД располагается на сервере вместе с БД и осуществляет доступ к БД непосредственно, в монопольном режиме. Все клиентские запросы на обработку данных обрабатываются клиент-серверной СУБД централизованно.

Недостаток клиент-серверных СУБД состоит в повышенных требованиях к серверу.

Достоинства: потенциально более низкая загрузка локальной сети; удобство централизованного управления; удобство обеспечения таких важных характеристик как высокая надёжность, высокая доступность и высокая безопасность.

Примеры: Oracle, Firebird, Interbase, IBM DB2, Informix, MS SQL Server, Sybase Adaptive Server Enterprise, PostgreSQL, MySQL, Caché, ЛИНТЕР.

• Встраиваемые

Встраиваемая СУБД — СУБД, которая может поставляться как составная часть некоторого программного продукта, не требуя процедуры самостоятельной установки. Встраиваемая СУБД предназначена для локального хранения данных своего приложения и не рассчитана на коллективное использование в сети. Физически встраиваемая СУБД чаще всего реализована в виде подключаемой библиотеки. Доступ к данным со стороны приложения может происходить через SQL либо через специальные программные интерфейсы.

Примеры: OpenEdge, SQLite, BerkeleyDB, Firebird Embedded, Microsoft SQL Server Compact, ЛИНТЕР.

Стратегии работы с внешней памятью

СУБД с непосредственной записью — это СУБД, в которых все измененные блоки данных незамедлительно записываются во внешнюю память при поступлении сигнала подтверждения любой транзакции. Такая стратегия используется только при высокой эффективности внешней памяти.

СУБД с отложенной записью — это СУБД, в которых изменения аккумулируются в буферах внешней памяти до наступления любого из следующих событий:

• контрольной точки;

• конец пространства во внешней памяти, отведенное под журнал. СУБД выполняет контрольную точку и начинает писать журнал сначала, затирая предыдущую информацию;

• останов. СУБД ждёт, когда всё содержимое всех буферов внешней памяти будет перенесено во внешнюю память, после чего делает отметки, что останов базы данных выполнен корректно;

• При нехватке оперативной памяти для буферов внешней памяти.

Такая стратегия позволяет избежать частого обмена с внешней памятью и значительно увеличить эффективность работы СУБД.

Объектно-ориентированная база данных (ООБД) — база данных, в которой данные моделируются в виде объектов,[1] их атрибутов, методов и классов.

Характеристики

Объектно-ориентированные базы данных обычно рекомендованы для тех случаев, когда требуется высокопроизводительная обработка данных, имеющих сложную структуру.

В манифесте ООБД[4] предлагаются обязательные характеристики, которым должна отвечать любая ООБД. Их выбор основан на 2 критериях: система должна быть объектно-ориентированной и представлять собой базу данных.

Обязательные характеристики

1. Поддержка сложных объектов. В системе должна быть предусмотрена возможность создания составных объектов за счет применения конструкторов составных объектов. Необходимо, чтобы конструкторы объектов были ортогональны, то есть любой конструктор можно было применять к любому объекту.

2. Поддержка индивидуальности объектов. Все объекты должны иметь уникальный идентификатор, который не зависит от значений их атрибутов.

3. Поддержка инкапсуляции. Корректная инкапсуляция достигается за счет того, что программисты обладают правом доступа только к спецификации интерфейса методов, а данные и реализация методов скрыты внутри объектов.

4. Поддержка типов и классов. Требуется, чтобы в ООБД поддерживалась хотя бы одна концепция различия между типами и классами. (Термин «тип» более соответствует понятию абстрактного типа данных. В языках программирования переменная объявляется с указанием ее типа. Компилятор может использовать эту информацию для проверки выполняемых с переменной операций на совместимость с ее типом, что позволяет гарантировать корректность программного обеспечения. С другой стороны класс является неким шаблоном для создания объектов и предоставляет методы, которые могут применяться к этим объектам. Таким образом, понятие «класс» в большей степени относится ко времени исполнения, чем ко времени компиляции.)

5. Поддержка наследования типов и классов от их предков. Подтип, или подкласс, должен наследовать атрибуты и методы от его супертипа, или суперкласса, соответственно.

6. Перегрузка в сочетании с полным связыванием. Методы должны применяться к объектам разных типов. Реализация метода должна зависеть от типа объектов, к которым данный метод применяется. Для обеспечения этой функциональности связывание имен методов в системе не должно выполняться до времени выполнения программы.

7. Вычислительная полнота. Язык манипулирования данными должен быть языком программирования общего назначения.

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

Необязательные характеристики:

• Множественное наследование

• Проверка типов

• Распределение

• Проектные транзакции

Открытые характеристики:

• Парадигмы программирования (процедурное, декларативное)

• Система представления

• Система типов

• Однородность. Реализация — язык программирования — интерфейс.

ООБД и её СУБД

Результатом совмещения возможностей (особенностей) баз данных и возможностей объектно-ориентированных языков программирования являются Объектно-ориентированные системы управления базами данных (ООСУБД). ООСУБД позволяет работать с объектами баз данных так же, как с объектами в программировании в ООЯП. ООСУБД расширяет языки программирования, прозрачно вводя долговременные данные, управление параллелизмом, восстановление данных, ассоциированные запросы и другие возможности.

Некоторые объектно-ориентированные базы данных разработаны для плотного взаимодействия с такими объектно-ориентированными языками программирования как Python, Java, C#, Visual Basic.NET, C++, Objective-C и Smalltalk; другие имеют свои собственные языки программирования. ООСУБД используют точно такую же модель, что и объектно-ориентированные языки программирования.

СУБД должна обеспечивать:

• Долговременное хранение

• Использование внешней памяти

• Параллелизм

• Восстановление

• Нерегламентированные запросы

Реляционная модель данных (РМД) — логическая модель данных, прикладная теория построения баз данных, которая является приложением к задачам обработки данных таких разделов математики, как теория множеств и логика первого порядка.

На реляционной модели данных строятся реляционные базы данных.

Реляционная модель данных включает следующие компоненты:

• Структурный аспект (составляющая) — данные в базе данных представляют собой набор отношений.

• Аспект (составляющая) целостности — отношения (таблицы) отвечают определенным условиям целостности. РМД поддерживает декларативные ограничения целостности уровня домена (типа данных), уровня отношения и уровня базы данных.

• Аспект (составляющая) обработки (манипулирования) — РМД поддерживает операторы манипулирования отношениями (реляционная алгебра, реляционное исчисление).

Кроме того, в состав реляционной модели данных включают теорию нормализации.

Термин «реляционный» означает, что теория основана на математическом понятии отношение (relation). В качестве неформального синонима термину «отношение» часто встречается слово таблица. Необходимо помнить, что «таблица» есть понятие нестрогое и неформальное и часто означает не «отношение» как абстрактное понятие, а визуальное представление отношения на бумаге или экране. Некорректное и нестрогое использование термина «таблица» вместо термина «отношение» нередко приводит к недопониманию. Наиболее частая ошибка состоит в рассуждениях о том, что РМД имеет дело с «плоскими», или «двумерными» таблицами, тогда как таковыми могут быть только визуальные представления таблиц. Отношения же являются абстракциями и не могут быть ни «плоскими», ни «неплоскими».

Для лучшего понимания РМД следует отметить три важных обстоятельства:

• модель является логической, то есть отношения являются логическими (абстрактными), а не физическими (хранимыми) структурами;

• для реляционных баз данных верен информационный принцип: всё информационное наполнение базы данных представлено одним и только одним способом, а именно — явным заданием значений атрибутов в кортежах отношений; в частности, нет никаких указателей (адресов), связывающих одно значение с другим;

• наличие реляционной алгебры позволяет реализовать декларативное программирование и декларативное описание ограничений целостности, в дополнение к навигационному (процедурному) программированию и процедурной проверке условий.

Принципы реляционной модели были сформулированы в 1969—1970 годах Э. Ф. Коддом (E. F. Codd). Идеи Кодда были впервые публично изложены в статье «A Relational Model of Data for Large Shared Data Banks»[1][2], ставшей классической.

Строгое изложение теории реляционных баз данных (реляционной модели данных) в современном понимании можно найти в книге К. Дж. Дейта. «C. J. Date. An Introduction to Database Systems» («Дейт, К. Дж. Введение в системы баз данных»).

Наиболее известными альтернативами реляционной модели являются иерархическая модель, и сетевая модель. Некоторые системы, использующие эти старые архитектуры, используются до сих пор. Кроме того, можно упомянуть об объектно-ориентированной модели, на которой строятся так называемые объектно-ориентированные СУБД, хотя однозначного и общепринятого определения такой модели нет.

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

Описание

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

Сетевая БД состоит из набора экземпляров определенного типа записи и набора экземпляров определенного типа связей между этими записями.

Тип связи определяется для двух типов записи: предка и потомка. Экземпляр типа связи состоит из одного экземпляра типа записи предка и упорядоченного набора экземпляров типа записи потомка. Для данного типа связи L с типом записи предка P и типом записи потомка C должны выполняться следующие два условия:

• каждый экземпляр типа записи P является предком только в одном экземпляре типа связи L;

• каждый экземпляр типа записи C является потомком не более чем в одном экземпляре типа связи L.

Иерархическая модель данных — это модель данных, где используется представление базы данных в виде древовидной (иерархической) структуры, состоящей из объектов (данных) различных уровней.

Между объектами существуют связи, каждый объект может включать в себя несколько объектов более низкого уровня. Такие объекты находятся в отношении предка (объект более близкий к корню) к потомку (объект более низкого уровня), при этом возможна ситуация, когда объект-предок не имеет потомков или имеет их несколько, тогда как у объекта-потомка обязательно только один предок. Объекты, имеющие общего предка, называются близнецами (в программировании применительно к структуре данных дерево устоялось название братья).

Например, если иерархическая база данных содержала информацию о покупателях и их заказах, то будет существовать объект «покупатель» (родитель) и объект «заказ» (дочерний). Объект «покупатель» будет иметь указатели от каждого заказчика к физическому расположению заказов покупателя в объект «заказ».

В этой модели запрос, направленный вниз по иерархии, прост (например, какие заказы принадлежат этому покупателю); однако запрос, направленный вверх по иерархии, более сложен (например, какой покупатель поместил этот заказ). Также, трудно представить не-иерархические данные при использовании этой модели.

Иерархической базой данных является файловая система, состоящая из корневого каталога, в котором имеется иерархия подкаталогов и файлов.

Структурная часть иерархической модели

Основными информационными единицами в иерархической модели данных являются сегмент и поле. Поле данных определяется как наименьшая неделимая единица данных, доступная пользователю. Для сегмента определяются тип сегмента и экземпляр сегмента. Экземпляр сегмента образуется из конкретных значений полей данных. Тип сегмента — это поименованная совокупность входящих в него типов полей данных.

Как и сетевая, иерархическая модель данных базируется на графовой форме построения данных, и на концептуальном уровне она является просто частным случаем сетевой модели данных. В иерархической модели данных вершине графа соответствует тип сегмента или просто сегмент, а дугам — типы связей предок — потомок. В иерархических структуpax сегмент — потомок должен иметь в точности одного предка.

Иерархическая модель представляет собой связный неориентированный граф древовидной структуры, объединяющий сегменты. Иерархическая БД состоит из упорядоченного набора деревьев.

Управляющая часть иерархической модели

В рамках иерархической модели выделяют языковые средства описания данных (ЯОД) и средства манипулирования данными (ЯМД). Каждая физическая база описывается набором операторов, обусловливающих как её логическую структуру, так и структуру хранения БД. При этом способ доступа устанавливает способ организации взаимосвязи физических записей.

Определены следующие способы доступа:

• иерархически последовательный;

• иерархически индексно-последовательный;

• иерархически прямой;

• иерархически индексно-прямой;

• индексный.

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

Среди операторов манипулирования данными можно выделить операторы поиска данных, операторы поиска данных с возможностью модификации, операторы модификации данных. Набор операций манипулирования данными в иерархической БД невелик, но вполне достаточен.

Примеры типичных операторов поиска данных найти указанное дерево БД;

• перейти от одного дерева к другому;

• найти экземпляр сегмента, удовлетворяющий условию поиска;

• перейти от одного сегмента к другому внутри дерева;

• перейти от одного сегмента к другому в порядке обхода иерархии.

Примеры типичных операторов поиска данных с возможностью модификации:

• найти и удержать для дальнейшей модификации единственный экземпляр сегмента, удовлетворяющий условию поиска;

• найти и удержать для дальнейшей модификации следующий экземпляр сегмента с теми же условиями поиска;

• найти и удержать для дальнейшей модификации следующий экземпляр для того же родителя.

Примеры типичных операторов модификации иерархически организованных данных, которые выполняются после выполнения одного из операторов второй группы (поиска данных с возможностью модификации):

• вставить новый экземпляр сегмента в указанную позицию;

• обновить текущий экземпляр сегмента;

• удалить текущий экземпляр сегмента.

В иерархической модели автоматически поддерживается целостность ссылок между предками и потомками. Основное правило: никакой потомок не может существовать без своего родителя.

Преобразование концептуальной модели в иерархическую модель данных

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

Преобразование связи типа «один ко многим» между предком и потомком осуществляется практически автоматически в том случае, если потомок имеет одного предка, и происходит это следующим образом. Каждый объект с его атрибутами, участвующий в такой связи, становится логическим сегментом. Между двумя логическими сегментами устанавливается связь типа «один ко многим». Сегмент со стороны «много» становится потомком, а сегмент со стороны «один» становится предком.

Ситуация значительно усложняется, если потомок в связи имеет не одного, а двух и более предков. Так как подобное положение является невозможным для иерархической модели, то отражаемая структура данных нуждается в преобразованиях, которые сводятся к замене одного дерева, например, двумя (если имеется два предка). В результате такого преобразования в базе данных появляется избыточность, так как единственно возможный выход из этой ситуации — дублирование данных.

 

28. Высокопроизводительные вычислительные системы. Мультипроцессорные вычислительные системы. Назначение принцип действия

Для решения некоторых задач оптимальным является применение высокопроизводительных вычислительных систем, вычислительных кластеров (НРС – High Performance Computing) или суперкомпьютеров.

Среди них:

• проектирование инженерных сооружений, дизайн зданий;

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

• проектирование электронных и полупроводниковых устройств;

• вычислительная гидродинамика (CFD);

• моделирование атмосферы и мирового океана, предсказание погоды;

• геологические исследования;

• различные задачи математической физики;

• астрофизика и космические исследования;

• молекулярные науки, генетика;

• моделирование в медицине, включая системы АСПВР;

• разработка лекарственных препаратов;

• параллельные СУБД, электронная коммерция и информационные системы;

• виртуальная реальность и визуализация, обработка изображений;

• атомная энергетика;

• военные задачи;

• тренажерные комплексы;

• бортовые, встроенные, системы реального времени;

• финансовый анализ, биржевые машины и многое другое.

Компания Открытые Технологии занимается созданием суперкомпьютеров с 2000 года и предлагает как классические решения на базе серверов стандартной архитектуры так и более эффективные суперкомпьютеры гибридной архитектуры.

Мы оказываем услуги по:

• построению гибридных суперкомпьютеров;

• поставке гибридных суперкомпьютеров стандартных конфигураций;

• модернизации суперкомпьютеров, построенных по классической схеме;

• организации инженерной инфраструктуры с учётом требований суперкомпьютера;

• организации системы мониторинга и управления высокопроизводительным комплексом;

• обучении пользователей.

Успешное создание и эксплуатацию суперкомпьютера обеспечивают такие преимущества компании Открытые Технологии, как:

• проектирование с учетом индивидуальных требований заказчиков;

• особое внимание к обеспечению информационной безопасности создаваемого решения;

• возможность построения решения любой сложности и производительности;

• выполнение всего комплекса работ (разработка услуги и технико-экономическое обоснование ее внедрения, проектирование технологического решения, поставка оборудования и программного обеспечения, строительно-монтажные работы, пусконаладочные работы, формирование необходимой инженерной инфраструктуры в месте установки суперкомпьютера);

• собственный сервисный центр: предоставление расширенной поддержки установленного решения (включая аутсорсинг);

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

• наличие представительств во многих регионах РФ;

• проведение работ на основании требований отраслевых регламентирующих документов, ГОСТ, наличие необходимых лицензий и сертификатов;

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

В обеспечении информационной безопасности выделяются следующие категории: доступность, целостность, конфиденциальность.

Доступность – это возможность за приемлемое время получить требуемую информационную услугу. Целостность информации представляет собой свойство информации сохранять свою структуру и содержание в процессе передачи и хранения. Конфиденциальность информации – это свойство информации быть доступной только ограниченному кругу пользователей информационной системы, в которой циркулирует данная информация.

Для защиты информации в организации реализуется политика безопасности, которая представляет собой совокупность норм, правил и практических рекомендаций, регламентирующих работу компьютерной системы (сети) от заданного множества угроз безопасности. В настоящее время существуют следующие технологии информационной безопасности:

– комплексный подход, обеспечивающий рациональное сочетание технологий и средств информационной защиты;

– применение защищённых виртуальных частных сетей (VPN) для защиты информации, предаваемой по открытым каналам связи;

– криптографическое преобразование данных для обеспечения целостности, подлинности и конфиденциальности информации;

– применение межсетевых экранов для защиты вычислительной сети от внешних угроз при подключении к общедоступным сетям связи;

– управление доступом на уровне пользователей и защита от несанкционированного доступа к информации;

– гарантированная идентификация пользователей путём применения токенов (touch-memory, ключи для USB и т. д.);

– поддержка инфраструктуры управления открытыми ключами (PKI);

– защита информации на файловом уровне путём шифрования файлов и каталогов;

– защита от вирусов с использованием специализированных комплексов профилактики и защиты;

– технологии обнаружения вторжений (Intrusion Detection) и активного исследования защищённости информационных ресурсов;

– централизованное управление средствами информационной безопасности.

 

30. Широкое использование Интернета и других публичных сетей для организации различных связей требует защиты информации при её передаче. Эта задача решается средствами VPN в публичных сетях с коммутацией пакетов. В общем случае VPN – это объединение локальных сетей и отдельных компьютеров, подключённых к сети общего пользования, в единую виртуальную (наложенную) сеть, обеспечивающую конфиденциальность и целостность передаваемой по ней информации.

Наложенную корпоративную сеть, построенную на базе сети общего пользования, превращают в виртуальную защищённую сеть три фундаментальных свойства: конфиденциальность (с помощью шифрования), аутентификация (проверка подлинности) и управление доступом. Только реализация этих свойств позволяет защитить пользовательские компьютеры, серверы и данные, передаваемые по физически не защищённым каналам, от утечки информации и несанкционированных действий.

Средства VPN могут эффективно поддерживать защищённые каналы следующих типов:

– с удалёнными и мобильными сотрудниками (защищённый удалённый доступ);

– сетями филиалов (защита intranet);

– сетями организаций-партнёров (защита extranet).

Для обеспечения защиты передаваемой информации в VPN-технологиях используется ряд криптографических преобразований: алгоритмы шифрования, аутентификация, вычисления хэш-функции, формирование и проверка цифровой подписи. При этом применяется комплекс стандартов Интернет IPSec (IP Security). В комплексе стандартов IPSec определены два алгоритма аутентификации с секретными ключами и семь алгоритмов симметричного шифрования. Выбор алгоритмов шифрования целиком зависит от пользователя, что обеспечивает дополнительную защиту информации, так как нарушитель должен не только вскрыть шифр, но первоначально определить, какой шифр ему надо вскрывать.

31. Криптографическое преобразование данных. Обобщенная схема ассиметричесного шифрования.

Криптографическое преобразование - это преобразование информации, основанное на некотором алгоритме, зависящем от изменяемого параметра (обычно называемого секретным ключом), и обладающее свойством невозможности восстановления исходной информации по преобразованной, без знания действующего ключа, с трудоемкостью меньше заранее заданной.

Ассиметричное шифрование:

Шифрование информации – это процесс преобразования открытой информации (исходный текст) в зашифрованную (зашифрование) и наоборот (расшифрование). Исходный текст передаваемого сообщения (или хранимой информации) M с помощью криптографического преобразования Ek1 зашифровывается с получением в результате шифртекста С:

С = Ek1(M)

k1 – это параметр функции E, называемый ключом шифрования. Ключ шифрования – тот самый элемент, с помощью которого можно варьировать результатом криптографического преобразования. Данный элемент может принадлежать конкретному пользователю или группе пользователей и являться для них уникальным; зашифрованная с использованием конкретного ключа информация может быть расшифрована только его владельцем (или владельцами).

 



Поделиться:


Последнее изменение этой страницы: 2017-02-19; просмотров: 895; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.138.101.95 (0.101 с.)