Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Общий конспект по Технологии анализа и обработ...docx
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
2.66 Mб
Скачать

6.Оценка производительности

Первоначально целью исследовния NoSQL систем был выбор быстрой на вставку и выборку небольших объемов данных: альтернативы MySQL.

Для взаимодействия с обеими базами использовался Perl, для MongoDB одноименный модуль, а для MySQL модуль DBI. Словарь содержит более 90 000 слов. Структура таблицы/коллекции была проста: кроме первичного индекса я записывал туда само слово и его длину. Процесс заполнения базы данными и стал первым испытанием.

добавление записей/документов в базы

Как видно из графика, время выполнения вставки увеличивается линейно, без каких-либо скачков, а MongoDB опережает MySQL на 40%! Это преимущество по производительности можно легко объяснить отсутствием настоящего ACID, то есть при записи не проверяется и не возвращается её результат. Ради интереса было включено безопасное добавление записей в MongoDB, это самая верхняя линия, в итоге Mongo стала в 2.5 раза медленнее MySQL. Вторым этапом тестирования была выборка, сначала использовался тот же алгоритм, что и в поиске опечаток, делалась выборка в разных диапазонах длин слов. Очевидно, что слов средней длины в словаре больше, и на графиках заметно, как сильно там проседает MongoDB. А по краям, там где количество слов небольшое, почти сравнивается с MySQL.

полная выборка данных по диапазонам длин слов с дополнительными индексами и без (чем меньше тем лучше) обработка запроса и выборка только первого результата по диапазону длины слова (чем меньше тем лучше)

Следующим этапом сравнения производительности было обновление. Вот сравнительные результаты обновления каждой 10ой/100ой/1000ой строки:

обновление каждой 10ой/100ой/1000ой записи (чем меньше тем лучше) Тут следует рассказать о том, как работает обновление в MongoDB и какие хитрости используются для достижения такого эффекта. Если обновляемый объект не вырастает в размере, то он просто обновляется в том же месте, где находится, и базе не приходится выделять место и создавать новую копию объекта, что повышает производительность некотрых операций вроде увеличения счетчика. Второй хитростью является так называемая ленивая запись, когда данные из памяти переписываются на диск не сразу после запроса, а через несколько секунд, и если за это время приходит несколько обновлений, то записывается только последнее. Заключительным этапом тестирования стало удаление записей. Ниже приведены результаты удаления каждой 10ой/100ой/1000ой строки. И опять MongoDB оказался вне конкуренции.

удаление каждой 10ой/100ой/1000ой записи (чем меньше тем лучше) В результате MongoDB — это высокопроизводительная система, которая отлично подходит для проектов с высокой динамикой обновления базы. И в идеале может заменить собой целый стэк технологий ORM/mysql/memcached. Но тем не менее является нишевым продуктом и не подходит для случаев в которых надежность данных является главным приоритетом.

7.Безопасность

  • Производитель рекомендует использовать сервера БД в доверенной среде и не полагаться на встроенные в сервер средства безопасности.

  • Реализована одноступенчатая аутентификация по имени пользователя и паролю. Три группы пользователей:

  • Администраторы

  • Пользователи с правами на чтение и запись

  • Пользователи с правами на чтение

  • Администраторы - на уровне сервера, пользователи - на уровне каждой отдельной БД.

  • Аутентификация поддерживается в репликационных множествах с версии 1.7.5.

  • Аутентификация не поддерживается при использовании sharding.