Администрирование баз данных и компьютерных сетей
Покупка
Основная коллекция
Тематика:
Системы управления базами данных (СУБД)
Издательство:
Южный федеральный университет
Год издания: 2020
Кол-во страниц: 127
Дополнительно
Вид издания:
Учебное пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-9275-3577-4
Артикул: 756678.01.99
В учебном пособии описьюаются основы администрирования баз данных и компьютерных сетей. Предназначено для студентов направления 09.03.01 и 09.04.01 «Информатика и вычислительная техника», специальности 09.05.01 «Применение и эксплуатация автоматизированных систем специального назначения» всех форм обучения и слушателей СФПК.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- ВО - Магистратура
- 09.04.01: Информатика и вычислительная техника
- ВО - Специалитет
- 09.05.01: Применение и эксплуатация автоматизированных систем специального назначения
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное автономное образовательное учреждение высшего образования «ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ» Инженерно-технологическая академия А. И. КОСТЮК Д. А. БЕСПАЛОВ АДМИНИСТРИРОВАНИЕ БАЗ ДАННЫХ И КОМПЬЮТЕРНЫХ СЕТЕЙ Учебное пособие Ростов-на-Дону - Таганрог Издательство Южного федерального университета 2020
УДК 004.65(075.8) ББК 32.973-018.2я73 К728 Печатается по решению кафедры вычислительной техники Института компьютерных технологий и информационной безопасности Южного федерального университета (протокол № 6 от 23 января 2020 г.) Рецензенты: кандидат физико-математических наук, доцент, директор Института радиотехнических систем и управления А. С. Болдырев кандидат технических наук, доцент кафедры систем автоматического управления автоматизированного проектирования ИКТИБ ЮФУ О. Б. Лебедев Костюк, А. И. К728 Администрирование баз данных и компьютерных сетей : учебное пособие / А. И. Костюк, Д. А. Беспалов ; Южный федеральный университет. - Ростов-на-Дону ; Таганрог : Издательство Южного федерального университета, 2020. - 127 с. ISBN 978-5-9275-3577-4 В учебном пособии описываются основы администрирования баз данных и компьютерных сетей. Предназначено для студентов направления 09.03.01 и 09.04.01 «Информатика и вычислительная техника», специальности 09.05.01 «Применение и эксплуатация автоматизированных систем специального назначения» всех форм обучения и слушателей СФПК. УДК 004.65(075.8) ББК 32.973-018.2я73 ISBN 978-5-9275-3577-4 © Южный федеральный университет, 2020 © Костюк А. И., Беспалов Д. А., 2020 © Оформление. Макет. Издательство Южного федерального университета, 2020
СОДЕРЖАНИЕ ВВЕДЕНИЕ............................................. 5 1. NOSQL БАЗА ДАННЫХ MONGODB...................... 6 1.1. Введение...................................... 6 1.2. Особенности MongoDB .......................... 7 1.3. Установка MongoDB ........................... 13 1.4. Программы для работы с MongoDB............... 17 1.5. Выводы....................................... 20 2. NOSQL БАЗА ДАННЫХ CASSANDRADB................. 21 2.1. Введение..................................... 21 2.2. Особенности CassandraDB...................... 21 2.3. Установка CassandraDB........................ 28 2.4. Программы для работы с CassandraDB........... 30 2.5. Выводы....................................... 32 3. NOSQL БАЗА ДАННЫХ INFLUXDB .................. 34 3.1. Введение..................................... 34 3.2. Особенности InfluxDB......................... 34 3.3. Установка InfluxDB........................... 39 3.4. Программы для работы с InfluxDB............. 42 3.5. Выводы....................................... 43 4. NOSQL БАЗА ДАННЫХ REDIS CACHE................ 44 4.1. Введение..................................... 44 4.2. Особенности Redis............................ 45 4.3. Установка Redis.............................. 56 4.4. Программы для работы с Redis.............. 57 4.5. Выводы....................................... 59 5. NOSQL БАЗА ДАННЫХ TARANTOOL.................. 61 5.1. Введение..................................... 61 5.2. Особенности Tarantool........................ 62 5.3. Установка Tarantool.......................... 69 5.4. Программы для работы с Tarantool............ 70 5.5. Выводы....................................... 70 3
Содержание 6. NOSQL БАЗА ДАННЫХ MEMCACHED....................... 72 6.1. Введение........................................ 72 6.2. Особенности Memcached........................... 72 6.3. Установка Мemcached............................. 79 6.4. Программы для работы с Memcached................ 80 6.5. Выводы.......................................... 80 7. NOSQL БАЗА ДАННЫХ DYNAMODB ......................... 82 7.1. Введение........................................ 82 7.2. Особенности DynamoBD............................ 82 7.3. Установка DynamoDB.............................. 85 7.4. Программы для работы с DynamoDB................. 86 7.5. Выводы.......................................... 87 8. СУБД MS SQL SERVER.................................. 88 8.1. Введение........................................ 88 8.2. Резервное копирование и восстановление данных... 88 8.3. Создание полной резервной копии базы данных..... 89 8.4. Использование Transact-SQL...................... 95 8.5. Создание разностной резервной копии базы данных. 98 8.6. Создание резервной копии журнала транзакций.... 102 8.7. Восстановление базы данных из резервной копии.. 106 9. НОВЫЕ ТЕХНОЛОГИИ НЕРЕЛЯЦИОННЫХ БАЗ ДАН НЫХ NEWSQL............................................ 115 9.1. Введение....................................... 115 9.2. Особенности решений NewSQL..................... 118 9.3. Популярные СУБД класса NewSQL.................. 119 ЗАКЛЮЧЕНИЕ............................................ 124 СПИСОК ЛИТЕРАТУРЫ..................................... 125
ВВЕДЕНИЕ Современная разработка программного обеспечения немыслима без инструментов хранения и обработки данных. Практически любые программы имеют либо собственное хранилище, либо обращаются к удаленным хранилищам посредством сетевых протоколов и программных интерфейсов. Мобильные приложения и, особенно, веб-приложения хранят данные пользователей, кэшируют информацию, агрегируют и обрабатывают миллионы записей в секунды, используя для этого различные инструменты, подходы и технологии. На заре развития технологий хранения мы имели возможность использовать только реляционные хранилища, теперь же для этих целей разработаны и успешно применяются хранилища другого типа: NoSQL или NewSQL. О таких решениях и пойдет речь в данном учебном пособии. Мы рассмотрим документо-ориентированные базы данных, системы кэширования и распределенной обработки документов, такие как MongoDB, Redis, Memcached, CassandraDB, InfluxDB и прочие.
1. NOSQL БАЗА ДАННЫХ MONGODB 1.1. Введение MongoDB реализует совершенно новый подход к построению баз данных, где нет таблиц, схем, прямых запросов SQL, внешних ключей и многих других вещей, которые присущи привычным нам реляционным базам данных. В отличие от последних, MongoDB предлагает документо-ориентированную модель данных, благодаря чему MongoDB работает быстрее для определенного типа операций, обладает лучшей масштабируемостью, ее легче использовать. Однако, учитывая все недостатки традиционных баз данных и достоинства MongoDB, важно понимать, что задачи бывают разные и методы их решения тоже отличаются. В какой-то ситуации MongoDB действительно улучшит производительность приложения, например, если надо хранить сложные по структуре данные или же схема данных не определена заранее или может меняться в процессе работы и даже от записи к записи. В другой же ситуации лучше будет использовать традиционные реляционные базы данных. Кроме того, можно использовать смешанный подход: хранить один тип данных в MongoDB, а другой тип данных - в традиционных Базах Данных (БД) [1]. Это абсолютно нормально, так как MongoDB невероятно быстрая при запросах документов по идентификатору, но по умолчанию не умеет сливать несколько документов в один (SQL JOIN). Вся система MongoDB может представлять не только одну базу данных, находящуюся на одном физическом сервере, но и распределенную БД, размещеную на нескольких физических или виртуальных серверах. Функциональность MongoDB позволяет расположить несколько баз данных на нескольких физических серверах, и эти базы данных смогут легко обмениваться данными и сохранять целостность. Этот факт делает MongoDB удобным для «стартапов» и для небольших проектов, которые постоянно адаптируются к требованиям и к условиям эксплуатации. Рассмотрим далее основные особенности MongoDB. 6
1.2. Особенности MongoDB 1.2. Особенности MongoDB Для начала стоит сказать, что основным способом хранения данных в MongoDB является представление в формате, похожем на JSON (JavaScript Object Notation). Сам по себе JSON эффективно описывает сложные по структуре данные и является стандартом «де-факто» для современных языков программирования, например JavaScript, Python. Способ хранения данных в MongoDB в этом плане очень похож на оригинальный JSON, хотя формально сам JSON в чистом виде не используется. Для хранения в MongoDB применяется свой совместимый формат, который называется BSON или сокращение от binary JSON. BSON позволяет работать с данными быстрее: например, поиск и обработка информации занимают намного меньше времени, чем в других форматах. Хотя надо отметить, что BSON в отличие от JSON имеет небольшой недостаток: в целом данные в JSON-формате занимают меньше места, чем в формате BSON, с другой стороны, данный недостаток с лихвой окупается скоростью. Рассмотрим основные возможности данной СУБД: • Документо-ориентированное хранилище (простая и мощная JSON-подобная схема данных). • Достаточно гибкий язык для формирования запросов. • Динамические запросы. • Полная поддержка индексов. • Профилирование запросов. • Быстрые обновления «на месте». • Эффективное хранение двоичных данных больших объёмов, например фото и видео. • Журналирование операций, модифицирующих данные в БД. • Поддержка отказоустойчивости и масштабируемости: асинхронная репликация, набор реплик и шардинг (один из видов распределенного хранения). • Может работать в соответствии с парадигмой MapReduce. • Полнотекстовый поиск, в том числе на русском языке, с поддержкой морфологии. 7
1. NoSQL база данных MongoDB СУБД MongoDB эффективно управляет наборами JSON-подобных документов, хранимых в двоичном виде, благодаря вызовам протокола GridFS. Среди других отличий от традиционных реляционных СУБД [2]: • Отсутствует оператор «join». Обычно данные могут быть организованы более денормализованным способом, но на разработчиков ложится дополнительная нагрузка по обеспечению непротиворечивости данных. • Нет такого понятия, как «транзакция». Атомарность гарантируется только на уровне целого документа, т.е. частичного обновления документа произойти не может. • Отсутствует понятие «изоляции». Любые данные, которые считываются одним клиентом, могут параллельно изменяться другим клиентом. MongoDB написана на C++, поэтому ее легко портировать на самые разные платформы. MongoDB может быть развернута на платформах Windows, Linux, MacOS, Solaris. Можно также загрузить исходный код и самому скомпилировать MongoDB, но рекомендуется использовать библиотеки с официальных источников. Если реляционные базы данных хранят строки, то MongoDB хранит документы. В отличие от строк документы могут хранить сложную по структуре информацию. Документ можно представить как хранилище ключей и значений. Ключ представляет простую метку, с которой ассоциирован определенный кусок данных. Однако при всех различиях есть одна особенность, которая несколько сближает MongoDB и реляционные базы данных. В реляционных СУБД встречается такое понятие как первичный ключ (идентификатор, ObjectId). Это понятие описывает некий столбец, который имеет уникальные значения. В MongoDB для каждого документа имеется уникальный идентификатор, который называется _id. Если явным образом не указать его значение, то MongoDB автоматически сгенерирует для него значение, например: ObjectId("507f1f77bcf86cd799439011"). Каждому ключу сопоставляется определенное значение. Но здесь также надо учитывать одну особенность: если в реляционных базах есть четко очерченная структура, где есть поля, и, если какое-то поле не имеет 8
1.2. Особенности MongoDB значения, ему, в зависимости от настроек конкретной БД, можно присвоить значение NULL. В MongoDB это не работает. Если какому-то ключу не сопоставлено значение, то этот ключ просто опускается в документе и не употребляется. Если в традиционном мире SQL есть таблицы, то в мире MongoDB есть коллекции. И если в реляционных БД таблицы хранят однотипные жестко структурированные объекты, то в коллекции могут содержать самые разные объекты, имеющие различную структуру и различный набор свойств. Система хранения данных в MongoDB представляет набор реплик. В этом наборе есть основной узел, а также может быть набор вторичных узлов. Все вторичные узлы сохраняют целостность и автоматически обновляются вместе с обновлением главного узла. И если основной узел по каким-то причинам выходит из строя, то один из вторичных узлов становится главным. Отсутствие жесткой схемы базы данных и, в связи с этим, потребности при малейшем изменении концепции хранения данных пересоздавать эту схему значительно облегчают работу с базами данных MongoDB и дальнейшим их масштабированием. Кроме того, экономится время разработчиков. Им больше не надо думать о пересоздании базы данных и тратить время на построение сложных запросов [3]. Одной из проблем при работе с любыми системами баз данных является сохранение данных большого размера. Можно сохранять данные в файлах, используя различные языки программирования. Некоторые СУБД предлагают специальные типы данных для хранения бинарных данных в БД (например, BLOB в MySQL). В отличие от реляционных СУБД MongoDB позволяет сохранять различные документы с различным набором данных, однако при этом размер документа ограничивается 16 мб. Но MongoDB предлагает решение - специальную технологию GridFS, которая позволяет хранить данные по размеру больше, чем 16 мб. Система GridFS состоит из двух коллекций. В первой коллекции, которая называется files, хранятся имена файлов, а также их метаданные, например, размер. А в другой коллекции, которая называется chunks, в виде небольших сегментов хранятся данные файлов, обычно сегментами по 256 Кб. 9
1. NoSQL база данных MongoDB Для тестирования GridFS можно использовать специальную утилиту mongofiles, которая идет в пакете mongodb [1]. Рассмотрим далее обобщенное устройство базы данных MongoDB. Устройство базы данных MongoDB. Всю модель устройства базы данных в MongoDB можно представить следующим образом (рис. 1). База данных MongoDB Коллекция! 1 Коллекция п Коллекция? Документ!, 1 Документ!, Документ?, Документ!, Документ?, ДокументЗ, Документ?, ДокументЗ, ДокументЗ, Документ п Документ п Документ п Рис. 1. Структура базы данных Документ в базе данных, как уже говорилось выше, можно представить как объект, хранящий некоторую информацию. В некотором смысле он подобен строкам в реляционных СУБД, где строки хранят информацию об отдельном элементе. Например, типичный документ MongoDB: { "name": "Bill", "surname": "Gates", "age": "48", "company": { "name": "microsoft", "year": "1974", "price": "300000" } } Этот документ и представляет набор пар ключ-значение. Например, в выражении "name": "Bill" name представляет ключ, а Bill - значение [3]. Ключи представляют собой обычные строки. Значения же могут различаться по типу данных. В данном случае у нас почти все значения также представляют строковый тип, и лишь один ключ (company) ссылается на отдельный объект. Всего имеется следующие типы значений: 10