Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Восстановление базы данных-ведение журнала изменений БД.



Стандартным языком наиболее распространенных в настоящее время реляционных СУБД является язык SQL (Structured Query Language — язык структурированных запросов). Язык SQL позволяет определять схему реляционной БД и манипулировать данными.

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

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

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

В современных СУБД поддерживается один из двух широко распространенных подходов к вопросу обеспечения безопасности данных: избирательный подход или обязательный подход. В большинстве современных систем предусматривается избирательный подход, при котором некий пользователь обладает различными правами при работе с разными объектами. Значительно реже применяется альтернативный, обязательный подход, где каждому объекту данных присваивается некоторый классификационный уровень, а каждый пользователь обладает некоторым уровнем допуска. Поддержка целостности данных

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

 
Вы новичок в программировании или же просто раньше избегали изучения SQL?. Что такое база данных SQL? Структурированный язык запросов (Structured Query Language) – стандарт коммуникации с базой данных, который поддержан ANSI. Самая последняя версия – SQL-99, хотя новый стандарт SQL-200n уже находится в разработке. Большинство баз данных твердо придерживается стандарта ANSI-92. Было много обсуждений по поводу введения более современных стандартов, но изготовители коммерческих баз данных отклоняются от этого, развивая свои новые концепции манипуляции хранимыми данными. Почти каждая отдельная база данных использует некоторый уникальный набор синтаксиса, хоть и очень сильно подобного стандарту ANSI. В большинстве случаев, этот синтаксис является расширением базового стандарта, хотя бывают случаи, когда такой синтаксис приводит к различным результатам для разных баз данных. Всегда неплохой идеей будет просмотр документации к базе данных, особенно, если получаются неожиданные результаты.Если вы впервые встречаетесь с SQL, то необходимо ознакомиться с основными концепциями, которые нужно понять. В общих терминах, «SQL база данных» является общим названием для реляционной системы управления базами данных (РСУБД). Таблица – конструкция базы данных, которая состоит из столбцов, содержащих строки данных.. Одной из важнейших операций, которые выполняются при работе с данными, является выборка хранящейся в базе данных информации. Для этого пользователь должен выполнить запрос (query).Типы запросов данных Есть четыре основных типа запросов данных в SQL, которые относятся к так называемому языку манипулирования данными (Data Manipulation Language или DML): · SELECT – выбрать строки из таблиц; · INSERT – добавить строки в таблицу; · UPDATE – изменить строки в таблице; · DELETE – удалить строки в таблице; Каждый из этих запросов имеет различные операторы и функции, которые используются для того, чтобы произвести какие-то действия с данными. Запрос SELECT имеет самое большое количество опций. Существуют также дополнительные типы запросов, используемых вместе с SELECT, типа JOIN и UNION. Но пока, мы сосредоточимся только на основных запросах. Использование запроса SELECT для выборки нужных данных Чтобы получить информацию, хранящуюся в базе данных используется запрос SELECT. Для того, чтобы получить все строки данных для специфических столбцов, используется запрос такого вида: SELECT column1, column2 FROM table_name; Также, можно получить все столбцы из таблицы, используя подстановочный знак «*»: SELECT * FROM table_name; Это может быть полезно в том случае, когда вы собираетесь выбрать данные с определенным условием WHERE. Следующий запрос возвратит все столбцы со всех строк, где «column1» содержит значение «3»: SELECT * FROM table_name WHERE column1=3; Кроме «=» (равно), существуют следующие условные операторы:
Условные операторы
= Равно
< > Не равно
> Больше
< Меньше
> = Больше или равно
< = Меньше или равно

Дополнительно можно использовать условия BITWEEN и LIKE для сравнения с условием WHERE, а так же комбинации операторов AND и OR.

SELECT * FROM table_name WHERE ((Age > = 18)
AND (LastName BETWEEN ‘Иванов’ AND ‘Сидоров’))
OR Company LIKE ‘%Motorola%’;

Что в переводе на русский язык означает: выбрать все строки из таблицы table_name, где значение столбца age больше или равно 18, а также значение столбца LastName находится в алфавитном промежутке от Иванов до Сидоров включительно, или же значением столбца Company является Motorola.

Использование запроса INSERT для вставки новых данных

Запрос INSERT используется для создания новой строки данных. Для обновления уже существующих данных или пустых полей строки нужно использовать запрос UPDATE.

Примерный синтаксис запроса INSERT:

INSERT INTO table_name (column1, column2, column3)

VALUES (‘data1’, ‘data2’, ‘data3’);

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

Изменяется уже существующая информация в базе данных очень похожим образом.

Запрос UPDATE и условие WHERE

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

UPDATE table_name SET column1 = ‘data1’, column2 = ‘data2’


WHERE column3 = ‘data3’;

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

UPDATE table_name SET FirstName = ‘Василий’


WHERE FirstName = ‘Василий’ AND LastName = ‘Пупкин’;

Будьте осторожны! Запрос DELETE удаляет целые строки

Запрос DELETE полность удаляет строку из базы данных. Если вы хотите удалить одно единственное поле, то нужно использовать запрос UPDATE и установить для этого поля значение, которое будет являться аналогом NULL в вашей программе. Будьте внимательны, и ограничивайте ваш запрос DELETE условием WHERE, иначе вы можете потерять все содержимое таблицы.

DELETE FROM table_name WHERE column1 = ‘data1’;

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

Теперь вы знаете основы SQL запросов

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

Проектирование баз данных

процесс создания схемы базы данных и определения необходимых ограничений целостности. Основные этапы проектирования баз данных

Концептуальное (инфологическое) проектирование — построение семантической модели предметной области, то есть информационной модели наиболее высокого уровня абстракции. Такая модель создаётся без ориентации на какую-либо конкретную СУБД и модель данных. Термины «семантическая модель», «концептуальная модель» и «инфологическая модель» являются синонимами. Кроме того, в этом контексте равноправно могут использоваться слова «модель базы данных» и «модель предметной области» (например, «концептуальная модель базы данных» и «концептуальная модель предметной области»), поскольку такая модель является как образом реальности, так и образом проектируемой базы данных для этой реальности.

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

Чаще всего концептуальная модель базы данных включает в себя:

· описание информационных объектов или понятий предметной области и связей между ними.

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

Логическое (даталогическое) проектирование]

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

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

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

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

Нормализация Нормальная форма

При проектировании реляционных баз данных обычно выполняется так называемая нормализация.

Модели «сущность-связь ER-модель данных

Модель «сущность-связь» (англ. “Entity-Relationship model”), или ER-модель, предложенная П. Ченом[1] в 1976 г., является наиболее известным представителем класса семантических (концептуальных, инфологических) моделей предметной области. ER-модель обычно представляется в графической форме, с использованием оригинальной нотации П. Чена, называемой ER-диаграмма, либо с использованием других графических нотаций (Crow’s Foot, Information Engineering и др.).

Основные преимущества ER-моделей:

· наглядность;

· модели позволяют проектировать базы данных с большим количеством объектов и атрибутов;

· ER-модели реализованы во многих системах автоматизированного проектирования баз данных (например, ERWin).

Основные элементы ER-моделей:

· объекты (сущности);

· атрибуты объектов;

· связи между объектами.

Сущность — объект предметной области, имеющий атрибуты.

Связь между сущностями характеризуется:

· типом связи (1: 1, 1: N, N: М);

· классом принадлежности. Класс может быть обязательным и необязательным. Если каждый экземпляр сущности участвует в связи, то класс принадлежности — обязательный, иначе — необязательный.

Семантические модели

Семантическая модель (концептуальная модель, инфологическая модель) — модель предметной области, предназначенная для представления семантики предметной области на самом высоком уровне абстракции. Это означает, что устранена или минимизирована необходимость использовать понятия «низкого уровня», связанные со спецификой физического представления и хранения данных.

Семантическое моделирование стало предметом интенсивных исследований с конца 1970-х годов. Основным побудительным мотивом подобных исследований (то есть проблемой, которую пытались разрешить исследователи) был следующий факт. Дело в том, что системы баз данных обычно обладают весьма ограниченными сведениями о смысле хранящихся в них данных. Чаще всего они позволяют лишь манипулировать данными определенных простых типов и определяют некоторые простейшие ограничения целостности, наложенные на эти данные. Любая более сложная интерпретация возлагается на пользователя. Однако было бы замечательно, если бы системы могли обладать немного более широким объемом сведений и несколько интеллектуальнее отвечать на запросы пользователя, а также поддерживать более сложные (то есть более высокоуровневые) интерфейсы пользователя.[…]
Идеи семантического моделирования могут быть полезны как средство проектирования базы данных даже при отсутствии их непосредственной поддержки в СУБД.

Наиболее известным представителем класса семантических моделей является модель «сущность-связь» (ER-модель).

В XX веке доминировала методология управления производством получившая название «Фордизм», по имени своего основоположника Генри Форда. Фордизм — модель массового производства стандартизированных товаров на сборочных конвейерах с использованием низкоквалифицированных работников, занятых простыми операциями и объединенных на крупных фабриках. Такое производство обладает «эффектом масштаба» и отличается низкой себестоимостью единицы продукции, доступной массовому потребителю. Один из основных постулатов фордизма: «Производить большие партии изделий выгоднее, чем мелкие», прочно укоренился в головах управленцев XX века.
Сейчас пришло время, когда выпускать большие партии изделий могут только гиганты, а основная масса мелких и средних заводов должна быть гибкой, производя небольшие партии изделий под запросы своих клиентов.
Рождение новых методологий

Со второй половины XX века (после второй мировой войны) предпринималось множество попыток модифицировать фордистскую модель. В частности на заводах «Тойота» в 50х годах стали ставить эксперименты, адаптируя американские концепции массового производства к реалиям послевоенной промышленности Японии. Тогда была переделана система крепления прессового инструмента, чтобы сделать его замену более быстрой. Потом были и другие новаторские решения и открытия, со временем сложившиеся в новую методологию — Lean Manufacturing (LM) – Бережливое производство.
В 80х и 90х появился целый зоопарк методологий и парадигм по управлению производством, среди которых подробнее остановлюсь на двух: Quick Response Manufacturing (QRM) – Быстрореагирующее производство и Agile Manufacturing (AM) – Активное производство. Современные, более гибкие по сравнению с фордизмом методологии, часто объединяют термином «постфордизм».
Важнейшие различия между фордизмом и постфордизмом заключаются в том, что фордизм основан на продукте и больших объёмах производства, новые методологии ориентированы на клиента и возможность выпуска небольших партий за счет гибкой переналадки оборудования.
В постфордизме рабочая сила выступает носителем компетенции и источником развития, работает командой, в отличие от фордизма, где люди нанимаются на отдельные места. В фордизме допускается определенный уровень брака, тогда как новые концепции предполагают абсолютное качество. И ради его достижения инновации могут вносить не только специалисты, но и все рабочие производства.
Бережливое производство (Lean Manufacturing, LM)

Цель LM – производить продукцию с постоянным уменьшением усилий людей, с меньшим объемом применения аппаратуры, как можно быстрее, на минимальном пространстве и при этом делать то, что ожидает купить клиент. Эта концепция родилась в послевоенной Японии, тогда промышленность страны испытывала нехватку во всем: в ресурсах, материалах, аппаратуре, кадрах, и не могла рассчитывать на помощь государства. Япония мобилизовала свои силы и стала рационально использовать любые ресурсы, одновременно находясь в процессе поиска, выявления и ликвидации потерь любого масштаба.
потери времени из-за ожидания;

· потери при ненужной транспортировке;

· потери из-за лишних этапов обработки;

· потери из-за лишних запасов;

· потери из-за ненужных перемещений;

· потери из-за выпуска дефектной продукции.

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

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

Быстрореагирующее производство (Quick Response Manufacturing, QRM)

Происхождение бережливого производства связано с компанией Тойота, особенность которой – постоянные большие объёмы выпускаемой продукции. Однако за последние несколько лет произошёл быстрый рост количества функции, предлагаемых производителями своим заказчикам, это связанно в частности с:
Развитием CAD/CAM (системы автоматизированного проектирования и производства), позволяющим компаниям разрабатывать «под клиента», а потом производить продукцию без несения высоких дополнительных расходов.

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

Данные тенденции развития дают основания полагать, что в XXI веке будет расти спрос на небольшую по объёму и крайне разнообразную продукцию с такими функциями, которые пожелают сами заказчики покупатели. На этой почве и появилась методология QRM, которая была сформирована американским математиком Раджан Сури и подробно описана в его монографии вышедшей в свет в 1998 году.
Итак, быстрореагирующее производство (QRM) – используемая компаниями стратегия для сокращения времени выполнения заказа, которая охватывает всё предприятие.

Цель QRM – сократить время выполнения заказа за счет всех операций компании, как внутренних, так и внешних.
Почему скорость выполнения заказа является основополагающим понятием QRM отлично иллюстрирует простой пример (см. рисунок). Данные на графике взяты из реальных показателей компании Midwest. Синим цветом показано реальное время выполнение заказа (когда кто-то делает работу), белым – общее время выполнение заказа.



Рисунок - Ориентация QRM на снижение всего времени выполнения заказа.

 

Обычный заказ лежит 5 дней в отделе приема заказов, прежде чем его отправят на производство, потом уходит 12 дней, находится на изготовление компонентов, 9 дней на сборку и 8 дней на то, чтобы уже выполненный заказ упаковали и отправили заказчику. В итоге на выполнение заказа уходит 34 дня (белый цвет). Если сложить участки серого цвета, то получим 19, 5 часов, т.е меньше 3 дней при восьми часовом рабочем дне. Остальное время – это когда данной работой никто не занимается. По словам Сури, данное соотношение не является случайным, во многих производственных проектах реальное время работы составляет менее 5% от времени выполнения заказа.
Бережливое производство и другие похожие методологии, основанные на снижении затрат, направлены на сокращение реального времени работы, QRM ориентирован на снижение всего времени выполнения заказа.
Снижение всего времени выполнения заказа потенциально дает гораздо больший эффект, поскольку именно простои между реальными работами над заказом занимают большую часть времени. Снижение времени выполнения заказа, как правило, понижает стоимость продукта, повышает его качество и делает всю компанию более конкурентноспособной
Общий знаменатель QRM называется критическим путем производства (КПП, Manufacturing Critical-path Time) – календарное время, отсчет которого начинается, когда заказчик делает заказ, проходящий по критическому пути, и заканчивается тогда, когда первое изделие данного заказа поставлено заказчику. Ключевая идея КПП, сравнить количество «серого времени», уходящего на реальные операции, с общим показателем КПП.
Фраза «проходящий по критическому пути», означает, что при подсчете КПП вы должны сделать допущение, что все виды деятельности осуществляются с чистого листа, нет никаких предварительно созданных заготовок, присутствуют очереди, ожидания и задержки в операциях..
Основные концепции QRM:
бизнес построенный при работе «для склада » (когда, чтобы быстрее выполнить заказы, основная номенклатура продуктов производиться заранее и кладется на склад), из-за ошибок планирования и изменчивости спроса приводит увеличению КПП, и в итоге к тому что компания не может быстро реагировать на потребности клиентов. Если сильно упростить – лучше инвестировать в станки и стандартно быструю реализацию заказов, чем в склады.

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

иметь в запасе мощность до 20% для наиболее часто используемого оборудования. Это необходимо для предупреждения «пробок», уменьшает КПП и делает предприятие более готовым в изменчивости спроса.

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

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

Все знают что время – деньги, но на самом деле время – гораздо большие деньги, чем полагают большинство менеджеров!
Активное производство (Agile Manufacturing, AM)

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

Сценарий

· Как можно больше интеллектуальных ресурсов и как можно меньше материальных.

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

· Далее приведены принципы, на которые ориентируется AM, помогающие компании оставаться на плаву при изменчивости рынка:

· Разветвлённая сеть партнерских организации (с дублирующими и дополняющими компетенциями) и поставщиков.

· Организация работ: проектно—командная, иерархия минимальная.

Фактор Быстрореагир. Производ. (Quick Response Manufacturing, QRM) Активное производство (Agile Manufacturing, AM)
Стратегический ориентир Скорость выполнения заказа Эффективные действия в условиях высокой неопределенности
Тип производства Средне и мелкосерийное Мелкосерийное и индивидуализированное
Уровень кастомизации продукта и услуг Средний — высокий Высокий
Уровень задействования ресурсов 80% > 100% (использования множества сторонних ресурсов)
Инновационный потенциал Средний — высокий Высокий

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

Выбор той или иной методологии зависит от объёмов производства, а также от отрасли в которой работает компания. Если производство серийное, то главная задача как правило — это минимизация расходов. Компании, создающие небольшие партии продукта, должны уметь выполнять заказы быстро, поэтому интереснее ориентироваться на QRM. Те, кто работает с индивидуальными заказами — могут выбрать AM.
Если говорить об инновациях, то с ними гораздо проще AM компаниям. Ведь главным плюсом AM производства является способность работать во всегда изменяющемся поле, разбираясь с индивидуальными проблемами. QRM занимает среднее положение. Ниже приведена таблица основных отличий QRM, AM

Таблица основных отличий QRM, AM

Автоматизация заводов сейчас востребована, и мы регулярно бываем на разных типах заводов, обсуждая с заказчиками варианты сотрудничества. Если посмотреть на Российские производственные компании через призму вышеописанных методологий, я могу выделить 4 типа заводов:
Заводы, работающие по старинке.

Небольшие и средние современные производственные компании.

Маленькие инновационные производственные предприятия.


Поделиться:



Популярное:

Последнее изменение этой страницы: 2017-03-11; Просмотров: 895; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.044 с.)
Главная | Случайная страница | Обратная связь