Тема 8. Адміністрування бази даних і контроль 


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



ЗНАЕТЕ ЛИ ВЫ?

Тема 8. Адміністрування бази даних і контроль



З даної теми передбачається проведення двох практичних занятть.

У темі 1 «Інформаційні системи, технології БД», ми обговорили функціональні можливості, які повинна надавати типова СУБД. У їх число входить три тісно зв'язані між собою функції, призначення яких полягає в гарантованій підтримці бази даних в достовірному і узгодженому стані. Причому достовірність і узгодженість бази даних повинні зберігатися за наявності відмов устаткування або програмних компонентів, а також при експлуатації бази даних у багатокористувацькому середовищі. На цих заняттях обговоримо три функції будьякої сучасної СУБД:

□ механізми підтримки транзакцій і служби управління паралельністю;

□ засоби відновлення бази даних;

□ захист бази даних і цілісність.

Після цих занять студенти повинні зуміти:

□ Пояснити важливість адміністрування бази даних.

□ Перерахувати і описати функції адміністрування бази даних.

□ Обговорити, як може підтримуватися цілісність даних.

□  Описати, як забезпечити захист даних.

□ Перерахувати джерела відмов в роботі бази даних і порівняти різні методи боротьби з ними.

План

І. Теоретична частина

1.Адмініструваннябази даних, функції і завдання АВД

2. Цілісність бази даних:

2.1 Обмеження цілісності домена, атрибуту, відношення;

2.1 Обмеження цілісності бази даних;

2.3 Процедури, що зберігаються.

3. Відновлення бази даних:

3.1 Транзакції і управління ними. Журнал транзакцій.

3.2 Порушення системи: відмови системи і відмови носіїв

3.3 Паралелізм в базах даних. Методи управління паралельністю.

3.4 Транзакції і відновлення.

4. Захист бази даних і. цілісність

4.1. Типи небезпек.

4.2. Некомп'ютерні засоби контролю.

4.3. Вибіркове управління доступом.

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

ІІ. Практична частина.

1. Питання на повторення.

2. Вправи і завдання.

ІІІ. Словник термінів до теми

Література.

[4] гл. 13

[5] гл. 13, 15, 16

[6] гл.16

[10] гл.11

Практична частина.

Питання на повторення

1.   Поясн і т ь своїми словами значення термінів:

a. Адміністратор даних

b. Цілісність даних

c. Захист даних

d. Умова цілісності

e. Неподільна транзакція

f.  Протокол

g. Взаємоблокування.

h. Двофазне блокування

i. Шифрування 

j. Текстшифр

k. Контрольна крапка

2. Які головні функції АБД? Завдання АБД?

3. Порівняєте значення термінів захист і цілісність. Приведіть приклади того, як на базі даних може відбитися порушення захисту і порушення цілісності.

4. Опишіть роль адміністратора бази даних в установці стандартів і створенні процедур.

5. Що таке резервне копіювання і відновлення?

6. Поясніть, яким чином паралельна обробка може викликати суперечності в даних.

7. Приведіть приклад, що показує, як просте блокування може привести до взаємоблокування.

8. Обговоритіть два способи детекції взаємоблокування. Які їх переваги і недоліки?

9. Транзакції не можуть бути вкладеними одна в другу. Чому?

10. Поясніть, як працює двофазне блокування.

11. Поясніть різницю між ідентифікацією користувача і перевіркою повноважень.

12. Поясніть призначення і сферу застосування поняття "Захист баз даних".

13. Перерахуйте шість різних типів небезпек, яким можуть піддаватися системи з|із| базами даних, і вкажіть для кожної з них можливі засоби|кошти| контролю і протидії.

14. Поясніть зміст наступних понять:

а) авторизація користувачів;

б) резервне копіювання;

в) шифрування;

г) захист від непередбачених обставин;

д) контроль за персоналом;

е) гарантійні угоди;

ж) недоторканність особистих даних;

з) захист особистих даних.

 

Вправи і завдання

1. Встановіть відповідність між термінами і поясненнями до них:

 

адміністратор бази даних а. Засіб приведення бази даних, порушеної відмовами системи, в несуперечливий стан
простий текст  b. Менеджер, в обов'язки якого входить управління технічними аспектами бази даних
паралельна обробка с. Відбувається, коли дві або більш за транзакцію одночасно вимагають доступу до одного і того ж запису
процедури відновлення бази даних  d. Обмежена підмножина реляційної таблиці
транзакція e. Користувач має право читати даний запис
перервана транзакція f. Програмний модуль, виконання якого зберігає несуперечливість бази даних
блокування g. Читаний текст
геаd_1оск h. Транзакція, скасована до того, як зміни були внесені до бази даних
детекція взаємоблокування i. При обробці транзакції забороняє доступ до запису інших транзакцій, поки перша транзакція не виконає всі свої дії
представлення даних j. СУБД, що періодично проводиться, перевірка того, чи не перевищило час очікування деякого ресурсу заздалегідь визначеної межі

 

2. Покажіть на прикладі, як паралельне оновлення може викликати проблеми цілісності даних.

3. Покажіть на прикладі, як працює двофазне блокування.

4. Говорять, що дві транзакції допускають приведення до послідовної форми, якщо їх можна виконувати паралельно так, що результат буде таким же, як при послідовній обробці, коли виконання од­нієї транзакції повністю закінчується до того, як запускається друга. Розглянемо наступні дві пересічні транзакції; припустимо, що умова несуперечності полягає в тому, що А або В  завжди рівне 1. Вважатимемо, що до початку виконання транзакцій А=В=1.

 

T1 T2
Читання елементу A  
  Читання елементу В
  Читання елементу A
Читання елементу В  
Якщо А=1  
то В:= В+1  
  Якщо В=1
  то А:= А+1
  Запис елементу А
Запис елементу В  

 

Чи буде виконано вимогу несуперечності? Аргументуйте вашу відповідь. Чи є схема пересічної обробки, що гарантує приводимість до послідовної форми? Якщо так, то продемонструйте її. Якщо немає, то поясніть, чому.

5. Для протоколу з негайними оновленнями створіть записи прото­колу, що відповідають наступним діям транзакції:

 

Т: read (A,a1) Читання поточного балансу клієнта
  a1:=a1+800 Збільшення рахунку на 800 гривень
  write (A, a1) Запис нового балансу
  read ( B;b1) Читання поточного балансу рахунків, що підлягають оплаті
  b1:=b1+800 Збільшення, балансу рахунків на 800 гривень
  write (B,b1)  Запис нового балансу

 

6.   Припустимо, що в (5) відмова відбувається після запису в протокол дії write(B,b1).

а. Покажіть стан протоколу у момент відмови.

b. Яку дію необхідно виконати і чому? Які значення матимуть в результаті А і В?

7.   Припустимо, що в (5) відмова відбувається після запису в протокол дії «<T,COMMITS>».

а. Покажіть стан протоколу у момент відмови.

b. Яку дію необхідно виконати і чому? Які значення матимуть в результаті А і В?

8.   Розглянемо наступні варіанти записів протоколу у момент відмови системи:

 

<T1,BEGIN> < T1,BEGIN> < T1,BEGIN>
< T1,A, 500, 395> < T1,A,500, 395> < T1,A, 500,395>
<T,B,800, 950> < T1, A, 500, 395> < T1, A, 500, 395>
0 < T1,COMMIT>  < T1,COMMIT>
0 <T2,BEGIN> <T2.BEGIN>
0 <T2,C,320,419> <T2,C,320, 419>
0 0 <T2,COMMIT>
(A) (Б) (В)

а. Припустимо, що протокол з відкладеними оновленнями. Опишіть для кожного з випадків (А, Б, В), які процедури відновлення необхідно виконати і чому. Вкажіть значення атрибутів після процедур відновлення.

b. Виконайте (а) у випадку протоколу з негайними оновленнями.

9. Нехай задані транзакції T 1, T 2, T 3, які виконують наступні операції:

T 1: додати 1 до А,

T 2: подвоїти А,

T3: вивести А на екран, а потім задати для А значення 1

(де А це деякий об’єкт бази даних).

Припустимо, що транзакції T 1, T 2, T 3 виконуються паралельно. Перелічіть всі можливі результати виконання цих транзакцій, якщо початкове значення А рівно 0.

10. У наступних прикладах створити правила безпеки для бази даних «Студенти» (тема 6)[8]:

10.1.    Створити правило безпеки, що дозволяє витягання і оновлення стовпців surname, name, _year (курс), group, faculty таблиці students, якщо студенти навчаються з 1 по 6 курс на історичному, філологічному або природничому факультетах і проживають в містах Олександрії або Кіровограді, для користувачів User_l, User_2.

10.2.    Створити правило безпеки для користувачів User_3, User_4, що дозволяє витягання, видалення і оновлення стовпців course_name, teacher, _hours таблиці course, якщо курси включені до 1, 3 або 5 семестрів, і кількість їх годин знаходиться в межах від 30 до 90.

10.3.    Створити правило безпеки, що дозволяє витягання, вставку і видалення для всіх стовпців таблиці student, якщо студенти навчаються з 4 по 6 курс на фізикоматематичному, історичному або філологічному факультетах, для користувачів User_l, User_2

10.4.    Створити правило безпеки, що дозволяє витягання, вставку і видалення для всіх стовпців таблиці student, якщо студенти навчаються з 1 по 3 курс на біологічному, філологічному або юридичному факультетах, для користувачів User_3, User_4.

10.5.    Створити правило безпеки, що дозволяє витягання, видалення і оновлення стовпців subject_name, lecturer, appointment, _hours таблиці subject, якщо курси включені до 2, 4 або 6 семестрів, і їх кількість годин знаходиться в межах від 50 до 110 для користувачів User_5, User_6

10.6.    Створити правило безпеки, що дозволяє витягання і оновлення стовпців surname, name, _year, _group, таблиці student, якщо студенти навчаються з 3 по 6 курс на фізикоматематичному, філологічному або природничому факультетах і проживають в містах Кіровоград, Знам’янка, Олександрія або Світловодськ, для користувачів User_7 і User_8.

11. Припустимо, що користувач User, що є власником схеми бази даних "Продаж товарів" (додаток), яка містить таблиці

EMPLOYEE (EMP_ID, NAME, AGE, REP_OFFICE, APPOINTMENT, HIRE_DATE, MANAGER_ID, PLAN, SALES)

OFFICES (OFFICE, CITY, REGION, MANAGER, OFFICE__PLAN, OFFICE_SALES);

призначає привілеї insert і select для таблиці EMPLOYEE і привілей select для OFFICES користувачам User 1 і User2, причому з правом передачі.

Хай тепер користувач User 2 призначає користувачеві User 3 ті ж привілеї, але вже без права їх передачі.

Користувач User 1, у свою чергу, намірився облагодіяти користувача User 3 набором привілеїв, вужчим, але проте достатнім для виконання SQLінструкцій, а саме select і insert (name) для EMPLOYEE  і select для OFFICES

Заувожимо, що користувач User 3 отримав привілеї select для EMPLOYEE і OFFICES з двох джерел. Привілей insert (name) також призначений двічі: користувачем User 1 безпосередньо і користувачем User 2 — у вигляді більш загального привілею insert. 

11.1. Запишіть відповідні команди призначення привілеїв;

11.2. Діаграми призначення привілеїв

Оскільки в процесі призначення привілеїв і передачі прав на них привілеї часто перекриваються і залежності між "дарувальниками" і одержувачами привілеїв стають все більш складними, структури привілеїв корисно представляти у вигляді графів, званих діаграмами призначення (grant diagrams). СУБД підтримують внутрішнє представлення подібних діаграм з метою відстежування подій призначення і отримання привілеїв; така інформація використовується у разі можливого анулювання (revoke) привілеїв.

Вершини графу відповідають користувачам і привілеям. Один і той же привілей з опцією права передачі і без такої повинна представлятися різними вершинами. Якщо користувач U призначає привілей Р користувачеві V і якщо ця операція виконується на тій підставі, що U володіє привілеєм Q (де Q — це привілей Р з правом передачі або деяке узагальнення привілею Р, знову ж таки з правом передачі), в граф включається дуга, що сполучає вершину U/Q з вершиною V/P.

Граф повинен відповідати наступним угодам: символом зірочки (*) позначені привілеї з опцією права передачі; двома зірочками (**) помічені привілеї, успадковані користувачем на підставі права володіння елементом бази даних, а не отримані їм від інших користувачів. Ця відмінність виявляється в ситуації, пов'язаній з анулюванням (revoke) привілеїв. Привілеї, позначені двома зірочками, автоматично включають право передачі. U

 Побудуйте діаграму призначення привілеїв, що ілюструє результати виконання послідовності команд grant, розглянутих в прикладі 11.1.

11.3. Анулювання привілеїв. Припустимо, що користувач User анулює привілеї, призначені ним користувачеві User 2. Запишіть відповідні команди анулювання привілеїв. Які є способи завершення цих команд?

11.4. Внесіть зміни в діаграму призначення привілеїв.

 

 


Словник термінів до теми 8

read__lock.                Команда блокування, по якому користувач має право прочитувати даний запис.

write_Iock.               Операція блокування, що дозволяє користувачеві прочитувати і оновлювати даний запис.

Адміністратор даних. Менеджер, в чиї обов'язки входить визначення загальної політики і процедур інформаційної системи організації.

В за є моблокування. Дві транзакції закривають один одному доступ до наступних записів, необхідних для завершення транзакцій; також називається «Смертельними обіймами».

Двофазне блокування Метод контролю паралельної обробки, в якому всі операції блокування передують першій операції розблокування.

Детекція взаємоблокування.     Періодична перевірка з боку СУБД, чи не перевищило час очікування деякого ресурсу заздалегідь визначеної межі.

Захист даних.          Засоби запобігання несанкціонованому доступу до бази даних.

Контрольна крапка. Крапка, віддалена назад достатньо далеко, щоб гарантувати, що всі елементи, записані до неї, записані правильно і збережені.

Метод контрольних крапок.     Збереження копій бази даних в зумовлені моменти часу в процесі обробки; відновлення бази даних починається від останньої контрольної крапки.

Неподільна транзакція.    Транзакція, в якій або всі її дії виконуються до кінця, або жодне з них не виконується.

Протокол.               Запис всіх транзакцій і відповідних змін бази даних.

Текстшифр.             Закодований звичайний текст.

Умова (обмеження) цілісності. Обмеження, накладене на певну безліч даних; застосовується в цілях мінімізації помилок введення.

Цілісність даних.   Точність і несуперечність даних в базі даних.

Шифрування.         Кодування даних з метою зробити їх безглуздими для всіх, окрім правомочних користувачів.

 

Додаток.

База даних "Продаж товарів" містить наступні таблиці

CLIENTS (CLIENT_ID, COMPANY, CUSTOMER__REP, CREDIT_LIMIT)

PRIMARY_KEY CLIENT_ID

FOREIGN KEY CUSTOMER__REP ДО ТАБЛИЦІ EMPLOYEE (EMP_ID)

EMPLOYEE (EMP_ID, NAME, AGE, REP_OFFICE, APPOINTMENT, HIRE_DATE, MANAGER_ID, PLAN, SALES)

primary_key EMP_ID

foreign key REP_OFFICE до таблиці OFFICES (OFFICE)

foreign key MANAGER_ID до таблиці employee (EMP_ID)

 

OFFICES (OFFICE, CITY, REGION, MANAGER, OFFICE__PLAN, OFFICE_SALES);

primary_key OFFICE

foreign key MANAGER до таблиці EMPLOYEE (EMP_ID)

 

PRODUCTS (MANUFACTURER_ID, PRODUCT_ID, DESCRIPTION, PRICE, QTY_ON_HAND);

primary_key MANUFACTURER_ID, PRODUCT_ID

 

ORDERS (ORDER_ID, ORDER_DATE, CUSTOMER, ЕМР, MANUFACTURER, PRODUCT, QUANTITY, COST);

primary_key clients;

foreign key CUSTOMER до таблиці clients(client_id);

foreign key MANUFACTURER до таблиці PRODUCTS (MANUFACTURER_ID);

 

Пояснення до бази даних "Продаж товарів".

□ CLIENTS (КЛІЄНТИ) — інформація про клієнтів, які купують товари компанії (CLIENT_ID (номер клієнта) — primary_key, company (юридична назва), CUSTOMER__REP (номер_продавця_клієнта) — foreign key до таблиці EMPLOYEE (emp_id), CREDIT_LIMIT (лиміт_кредиту))

□ employee (СЛУЖБОВЦІ) — інформація про службовців, що працюють в компанії і продають товари клієнтам (emp_id (номер_службовця) — primary_key, name (ПІБ_ службовця), age (вік), rep_office (номер_офису) — foreign key до таблиці offices (office), appointment (посада), hire_date (дата_найму), manager_id (номер_ менеджера) — foreign key до таблиці employee (emp_id), plan (план), sales (продажі));

□ offices (ОФІСИ) — офіси компанії, в яких працюють службовці (office (номер офису) — primary__key, city (місто), region (регіон), manager (номер_менеджеру) — foreign key до таблиці employee (emp_id), office__plan,(план_офісу), office_sAles (продажі_офісу));

□ products (ТОВАРИ) — інформація про товари, що продаються компанією (manufacturer_id (номер_виробника) — primary__key, product_id (номер_товару) — primary_key, description (опис), price (ціна), QTY_on_hANd (кількість на складі));

□ orders (ЗАМОВЛЕННЯ) — інформація про замовлення, зроблені клієнтом (order_id (номер_замовлення) — primary_key, order_date (дата_ замовлення), customer (клієнт) — foreign key до таблиці clients (client_id), емр (службовець) —

foreign key до таблиці employee (emp_id), manufacturer (виробник) — foreign key до таблиці products (manufacturer_id), product (товар) — foreign key до таблиці products (product_id), quantity (кількість), cost (вартість)).

 

 

2. [3, стр.411]

Мал. 1. Діаграма призначення привілеїв

 

3 [3, стр.413]

Мал. 2. Діаграма мал. 1 після видалення привілеїв користувача User 2
 

Приклад 4 [ ] Існує декілька тонких моментів, пов'язаних з процесами анулювання привілеїв, і для їх ілюстрації ми удамося до декількох абстрактних прикладів. Перш за все, якщо видаляється загальний привілей р, це не означає, що має бути відкликаний і призначений привілей, що є окремим випадком р. Розглянемо ситуацію, коли користувач U, що володіє відношенням R, спочатку призначає користувачеві V загальний привілей insert для R, а потім більш приватний привілей, insert (а),  для того V  відношення  R.

 

Операці я Ким виконана Дія
1 U GRANT INSERT ON R TO V
2 U GRANT INSERT (A) ON R TO V
3 U REVOKE INSERT ON R FROM V RESTRICT

 

Коли користувач U анулює привілей insert у V, привілей insert (а) залишається в силі. Діаграми призначення привілеїв після виконання операцій 2 і 3 показані на мал.3.

Зверніть увагу, що після операції 2 граф містить дві схожі, але окремі вершини, відповідні привілеям, отриманим користувачем V. Візьміть до відома і те, що опція restrict не перешкоджає анулюванню, оскільки користувач V не передавав отримані ним привілеї кому б то не було ще (втім, він і не зміг би цього зробити, оскільки отримав привілеї без права передачі).

 

 

а) після операції 2 в) після операції 3

Мал..3. Анулювання загального привілею не зачіпає приватний привілей

 

Приклад 5. Тепер розглянемо ситуацію, коли користувач U призначає користувачу V привілей р з правом його передачі, а потім анулює тільки це право, але не привілей як такий. В цьому випадку доведеться відобразити на діаграмі факт втрати права передачі, а також видалити дуги, які виходять з вершини V/p і ілюструють можливі операції передачі користувачем V привілею р якимнебудь іншим користувачам. Приблизна послідовність операцій може виглядати так, як показано в таблиці.

 

Операція  Ким виконана Дія
1 U GRANT р TO V WITH GRANT OPTION
2 V GRANT p TO W
3 U REVOKE GRANT OPTION FOR p FROM V CASCADE

 

Операція 1 припускає призначення користувачем U користувачеві V привілею р з правом її передачі. Виконуючи операцію 2, користувач V передає привілей р користувачеві W. Відповідна діаграма призначення привілеїв приведена на мал. 8.29(a).


а) після операції 2                        в) після операції 3

Мал..4. Анулювання права передачі не відміняє привілей

 

При виконанні операції 3 користувач U анулює право передачі привілею р користувачем V, але не відбирає сам привілей р. Символ зірочки, яким помічена вершина V/p, тепер необхідно вилучити. Вершина, не позначена таким символом (*), не може, виступати як джерело ("дарувальника") привілеїв, тому витікаючі з неї дуги (зокрема, дуга, зв'язуюча V/p з W/p) також мають бути видалені. Тепер до вершини W/p не можна "добратися" з вершини V/p, поміченої двома зірочками, тому W/p підлягає видаленню. Вершина V/p, проте, залишається на місці — правда, вже без зірочки, оскільки право передачі привілею анулюване. Підсумкова діаграма призначення привілеїв показана на мал. 8.4(b). Х

Вправа 5. Накресліть діаграми призначення привілеїв після виконання операцій 4—6 з таблиці, (передбачається, що користувач А є власником відношення, до якого відноситься привілей р).

 

Операція Ким виконана Дія
1 а grant р to В with grant option
2 A grant р to ЗC
3 B grant р to D with grant option
4 D grant p to В, C, E with grant option
5 B revoke p from D cascade
6 A revoke p from C cascade

Послідовність операцій до вправи 5

 

Вправа 6. Накресліть діаграми призначення привілеїв після виконання операцій 5, 6 з таблиці, показаної на мал. 8.31 (передбачається, що користувач А є власником відношення, до якого відноситься привілей р).

 

Операція Ким виконана Дія
1 A GRANT р to В, Е WITH GRANT OPTION
2 B GRANT р to C WITH GRANT OPTION
3 C GRANT р toD WITH GRANT OPTION
4 E GRANT p TO C
5 E GRANT p TO D WITH GRANT OPTION
6 A REVOKE GRANT OPTION FOR p FROM В CASCADE

Мал. 8.31. Послідовність операцій до вправи 8.7.3

 

Вправа 7. Накресліть підсумкову діаграму призначення привілеїв після виконання операцій з таблиці, показаної нижче (передбачається, що користувач А є власником відношення, до якого відноситься привілей р).

 

Операція

Ким виконана

Дія

1

A GRANT р TO В WITH GRANT OPTION

2

B GRANT р TO В WITH GRANT OPTION

3

A REVOKE р FROM В CASCADE
       

 


Список літератури

1. Астахова И.Ф., Мельников В.М., Толстобров А.П., Фертиков В.В., СУБД: язык SQL в примерах и задачах. – М.: ФИЗМАТЛИТ, 2007. – 168 с.

2. Базы данных: модели, разработка, реализация / Т. С. Карпова. _ Спб.: Питер, 2001. – 304 с.

3. Гарсия-Молина Г., Ульман Д., Уидом Д. Системы баз данных. Полный курс.: пер. с англ. – М.: Издательский дом «Вильямс», 2003. – 1088 с.

4. Гайна Г.А. Основи проектування баз даних: Навчальний посібник. –К.:Кондор, 2008. 200 с.

5. Дейт К. Введение в системы баз данных, 6е издание: Пер.с англ. – К.; М.; СПб.: Издательский дом «Вильямс», 1999. – 848с.

6. Коннолли Т., Бегг К., Страчан А. Базы данных: проектирование, реализация, сопровождение. Теория и практика, 2е изд.: Пер. с англ.: Уч. Пос. М.; СПб.: Издательский дом «Вильямс», 2000. – 1120с.

7. Марков А.С., Лисовских К.Ю. Базы данных. Введение в теорию и методологию: Учебник. М.: Финансы и статистика, 2004. – 512 с.

8. Рудикова Л.В. Базы данных. Разработка приложений. – СПб.:БХВПетербург,2006. – 496 с.

9. Советов Б.Я. Базы данных: Теория и практика: Учебник для вузов/ Б.Я. Советов, В.В. Цехановский, В.Д. Чертовской. – М.: Высш. шк., 2005. – 463 с.

10. Хансен Г., Хансен Д. Базы данных: разработка и управление; Пер. с англ. – М.: ЗАО «Издательство БИНОМ», 1999. – 704с.

11. Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. Базы данных: Учебник для высших учебных заведений. Под редакцией проф. А.Д Хомоненко. – Издание второе, дополненное и переработанное – СПб.: КОРОНА принт, 2002. – 672 с.


Частина V. Завдання до самостійної роботи

Додаток



Поделиться:


Последнее изменение этой страницы: 2020-12-09; просмотров: 78; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

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