Спросить
Войти

СРАВНЕНИЕ ПРОИЗВОДИТЕЛЬНОСТИ СОВРЕМЕННЫХ NOSQL БАЗ ДАННЫХ С РЕЛЯЦИОННОЙ БАЗОЙ ДАННЫХ SYBASE ASA 9.02

Автор: Буйволов Евгений Алексеевич

СРАВНЕНИЕ ПРОИЗВОДИТЕЛЬНОСТИ СОВРЕМЕННЫХ NOSQL БАЗ ДАННЫХ С РЕЛЯЦИОННОЙ БАЗОЙ ДАННЫХ

SYBASE ASA 9.02 Буйволов Е.А.

Буйволов Евгений Алексеевич - магистр прикладной математики и информатики, кафедра информационных технологий, строительный факультет, Санкт-Петербургский архитектурно-строительный университет, г. Санкт-Петербург

Аннотация: до сих пор в outsource-компаниях встречается устаревшее программное обеспечение, которое может работать не один десяток лет, будучи единожды настроенным. Вопрос эффективности подобных программных продуктов может встать только при сбое в работе. Данная статья направлена на демонстрацию разницы в производительности устаревшей реляционной базы данных Sybase Adaptive Server Anywhere 9.02 2003 года выпуска и популярных NoSQL баз данных Cassandra, MongoDB и ElasticSearch при работе с денормализованными данными. Ключевые слова: NoSQL, базы данных, тестирование производительности, программное обеспечение, DBA.

DOI: 10.24411/2413-2101-2020-10601

Зачастую в компаниях настроенные однажды программные продукты могут работать десятилетиями. Без обновления программного обеспечения компании могут начать терять эффективность выполнения обработки данных. Когда речь заходит о данных, то основным условием быстрой обработки является хранилище, зачастую -база данных (БД). Необходимость настройки и администрирования БД вынуждает компании привлекать администраторов БД. Небольшие компании не всегда имеют подобную возможность, т.к. данная профессия является одной из самых востребованных в области IT. В таких случаях транспортировка данных может быть настроена на скорую руку. Схема не проектируется, связи между данными не устанавливаются, в результате данные хранятся в виде, не удовлетворяющем нормальным формам, а скорость доступа к данным обеспечивается посредством индексирования. Отсутствие возможности проектирования БД или чрезвычайная сложность проектирования логичным образом привела к появлению NoSQL БД, в которых структура данных может быть не определена изначально, и упор делается на скорость доступа и отказоустойчивость в рамках микросервисной архитектуры, пришедшей на смену монолиту. В [1] приводится сравнительный анализ реляционной и нереляционной модели хранения служебной информации. Упоминается, что в настоящее время нереляционные БД используются для хранения слабоструктурированных данных. В статье приводится анализ быстродействия системы с использованием реляционной и нереляционной БД. Определяется модель данных на основе принципов Кодда: множество информационных конструкций, множество допустимых операций, множество ограничений, наложенных на информационные конструкции. В рамках статьи рассматривается логическая модель БД, упоминаются документоориентированные СУБД. В статье проводится эксперимент с комплексом, быстродействие которого зависит от быстродействия словаря, содержащего служебную информацию. Эксперимент проводился при замере производительности CRUD-операций над словарем. Были построены регрессионные модели. В качестве реализации рассматриваются реляционные MySQL 5.7, PostgreSQL 9.3, и документоориентированная MongoDB 3.6. В результате проведенного эксперимента MongoDB показала наилучшие результаты производительности для конкретного типа задачи. Помимо этого, автор указывает на возможность параллельной обработки данных на основе MapReduce. В [2] проводится исследование реляционных и нереляционных БД, приводится информация о том, что

реляционные БД используют при необходимости консистентности данных и транзакционного контроля, подчиняются принципам ACID (атомарность, согласованность, изолированность, устойчивость), а аналитические, агрегированные или метаданные могут храниться в NoSQL, и в целом выбор БД определяет эффективность системы. В статье приводится информация об экспоненциальном росте информации на цифровых носителях. В качестве решения проблемы в статье описывается использование NoSQL. Изначально термин использовался реляционную систему управления БД, не использующую стандарты SQL. В дальнейшем термин NoSQL стал относиться и к нереляционным БД. NoSQL стали первой альтернативной реляционным БД, отличались отказоустойчивостью, масштабируемостью, доступностью. Технология предназначалась для гибкой схемы данных, распределенной архитектуры, использование «Не только SQL» языков. Во главу угла ставится подход BASE, который заключается в:

1. Базовой доступности (запрос завершается с определенным статусом)
2. Гибком состоянии (состояние системы может изменяться со временем для обеспечения согласованности данных)
3. Итоговой согласованности данных (данные могут быть несогласованными, но в конечном счете будут приведены к согласованию)

В соответствии с теоремой CAP в распределенных вычислительных системах одновременно может быть гарантирована работа двух свойств из трех: быстрый доступ, согласованность данных, устойчивость к разделению [3]. NoSQL применяется в BigData, при большой производительности записи (inmemory системы), для быстрого доступа по ключу, кэширования в памяти, доступность без учета уровней изоляции транзакций (в виду их отсутствия), при необходимости параллельных вычислений, например, используя MapReduce. В статье [4] также приведен список самых популярных БД на 2018 год. Реляционные БД все так же занимают лидирующие позиции, среди них Oracle, MySQL, MSSQL, PostgreSQL. На пятом месте рейтинга присутствует документоориентированная MongoDB. Также дается пример разницы представлений одних и тех же данных, и указывается на определения полей для таблицы в Oracle, и на определение полей внутри документа в MongoDB. В первом случае данные хранятся в таблице, во втором в коллекции в JSON-формате. Таким образом MongoDB не требует преобразования данных для разработки клиент-серверных приложений (только на уровне DTO), структура данных может быть произвольной и заключать в себе любые типы связей. В алгоритме описания миграции данных с реляционной БД в нереляционную стоит описать только сериализацию в JSON и запись в нереляционную БД. Существует достаточно большое количество статей, посвященных обзору типов хранения данных в нереляционных БД, подчиняющихся принципам NoSQL, стоит отметить следующие типы:

1. Ключ-значение (Map) - хэш таблица, предоставляющая доступ к значению по ключу, среди нереляционных БД можно выделить Redius, Memcached, Riak [5].
2. Документоориентированные - хранение иерархических систем данных. MongoDB, CouchDB, Elasticsearch.
3. Колоночные - хранят данные не в строках, а в колонках. К плюсам можно отнести эффективность сжатия, т.к.каждая колонка является таблицей определенного типа. HBase, Cassandra, Vertica.
4. Графовые. Neo4j, OrientDB.

Важнейшим показателем работы системы является её производительность, которая в первую очередь будет зависеть от самого нижнего уровня взаимодействия с данными. При переходе на NoSQL необходимо понимать характер задач и подбирать решение под данные. В [6] приведен сравнительный анализ производительности NoSQL и реляционных БД на примере работы с гео-данными. Предполагается, что NoSQL, как системы, разрабатываемы для параллельных вычислений и работы с данными различной структуры при работе с геоданными дадут прирост в

27

производительности. В ходе эксперимента сравниваются MongoDB, Cassandra, CouchDB и PostgreSQL (расширение PostGIS), используя три различных набора данных. В результате тестирования при запросах по атрибуту самой быстрой БД оказалась MongoDB, в то время как самой медленной - CouchDB. В настоящий момент существует более двухсот NoSQL решений. В рамках данной статьи рассмотрено сравнение быстродействия самых популярных и быстрых NoSQL БД (Cassandra 3.11.6, MongoDB 4.2.0, ElasticSearch 7.7.0) с реляционной БД Sybase Adaptive Server Anywhere 9.02 2003 года выпуска для подчеркивания разницы в производительности БД различных декад.

Техническая информация о тестовом стенде

В качестве тестового сервера используется компьютер с процессором AMD Ryzen 2600 с частотой 3.9 ГГц с отключенным TurboBoost (для предотвращения скачков температуры на процессоре), 16 Гб одноранговой оперативной памяти (скорость записи/чтения около 21 Гб/с), работающей на частоте 2800 МГц на таймингах 16-15-15-36. На компьютере установлен Oracle VirtualBox. Используется тип подключения NAT, тип адаптера virtio-net. Все БД тестировались на Ubuntu 18.04 с установленным Docker. Порты пробрасывались в настройках виртуальной машины. Виртуальная машина использует SSD Intel 660p NVMe PCIe M.2 512GB со скоростью 1.5 Гб/с на чтение и 950 Мб на запись. Docker-образа Sybase ASA 9.02 не существует, поэтому БД была установлена на родную операционную систему тестового компьютера. Используется виртуализация AMD-V. Для каждой БД реализовано клиентское Java-приложение с использованием Java Spring фрэймворка в контексте микросервисной архитектуры. Данные записывались из ОЗУ в БД. Тестирование проводилось на двух сетах данных: последовательности наборов пар ключ-значение, состоящих из двух элементов и из тридцати шести. Каждый сет данных состоял из 547823 набора пар ключ-значение.

Критериями тестирования являются:

1. Количество вставок в секунду в однопоточном режиме.
2. Количество вставок в секунду в многопоточном режиме.
3. Скорость выполнения запроса типа select * from entity where field = value
4. Скорость выполнения запроса типа select * from entity where filed like &%val%&

Результаты тестирования получены путем множественных прогонов данных с

накоплением (до трех итераций), после чего количество исходных записей делилось на время выполнения вставки (миллисекунды). Перед каждым тестом все неиспользуемые docker-контейнеры удалялись, БД очищались, а также освобождалось место на SSD. В качестве итогового значения бралось усредненное значение скорости записи и чтения (из трех попыток). Для bulk-вставки бралось максимальное значение вставки в зависимости от размера пакета. Результаты тестирования в графическом виде представлены на рисунках 1-3.

Скорость записи через драйвер

Рис. 1. Скорость записи данных через средства, предоставляемые БД

Рис. 2. Скорость чтения данных на соответствие. Имитирована высокая нагрузка

Секунд за 100(1 итераций {меньше лучше)

25000 -,
20000
10000
15000
5000
0
2 поля; 1 поток 2 поля; 6 потоков 36 полей; 1 поток 36 попей, 6

потоков

9 Sybase ASA 9.02 (2003) ■ Cassandra 3 11.6 BMongoDB4.2.0

Я ElasticSearch 7.7.0

Рис. 3. Скорость чтения данных на вхождение. Имитирована высокая нагрузка Заключение

В результате работы получены данные о быстродействии трех популярных NoSQL БД и устаревшей реляционной БД. На основе полученных результатов можно сделать вывод о необходимости обновления ПО. Также стоит отметить, что реализация многопоточного обращения через асинхронное выполнение инструкций в Cassandra лишь тормозит запись. ElasticSearch показал самое быстрое время чтения. MongoDB является самой быстрой БД при использовании bulk-загрузки. Cassandra является сбалансированным решением, подходящим под различные задачи.

1. Тимофеева Н.Е., Дмитриева К.А. Сравнительный анализ реляционной и нереляционной модели хранения служебной информации централизованной распределенной базы данных // Вестник российского нового университета. Серия: сложные системы, модели, анализ и управление, 2019. № 1. C. 66-74.
2. Губа Е.А., Брысин О.А. Объектно-ориентированные базы данных как основа формирования баз медико-биологических знаний // Информатика и прикладная математика: межвузовский сборник научных трудов, 2010. № 16. C. 21-24.
3. Королева Ю.А, Маслова В.О., Козлова В.К. Разработка концепции миграции данных между реляционными и нереляционными системами БД // Программные продукты и системы, 2019. № 1. C. 63-67.
4. Всё, что вы не знали о CAP теореме. [Электронный ресурс]. Режим доступа: https://habr.com/ru/post/328792/ (дата обращения: 23.10.2019).
5. Савоськин И.В., Фирсов А.О. Исследование способов применения NoSQL и реляционных баз данных // E-SCIO, 2019. № 6. C. 101-108.
6. Hasan M. Performances analysis of NoSQL and relational databases for analyzing GeoJSON spatial data // Перспективы науки, 2019. № 7. C. 40-42.

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

nosql БАЗЫ ДАННЫХ ТЕСТИРОВАНИЕ ПРОИЗВОДИТЕЛЬНОСТИ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ dba
Другие работы в данной теме:
Контакты
Обратная связь
support@uchimsya.com
Учимся
Общая информация
Разделы
Тесты