Введение .......................................................................................................................... 2
1. Цель работы ............................................................................................................... 4
2. Задачи ......................................................................................................................... 5
3. Обзор............................................................................................................................ 6
3.1 Обзор СУБД .................................................................................................... 6
3.2 Наборы данных для тестирования ............................................................... 12
3.3 Обзор инструментов и метрик тестирования ............................................. 13
4. Основная часть ......................................................................................................... 16
4.1 Определение схемы хранения данных ....................................................... 16
4.2 Описание данных и особенности СУБД .................................................... 19
4.3 Методика тестирования ............................................................................... 21
4.4 Тестирование операционной задержки ...................................................... 22
4.5 Тестирование пропускной способности...................................................... 24
4.6 Измерение использования дискового пространства ................................. 26
4.7 Анализ системной нагрузки ........................................................................ 27
5. Заключение ............................................................................................................... 28
5.1. Результаты ..................................................................................................... 28
5.2. Итоги............................................................................................................... 28
Литература .................................................................................................................... 31
Приложение .................................................................................................................. 33
1. Скрипты для загрузки и запросов .................................................................. 33
2. Образцы наборов данных ............................................................................... 35
При растущем объеме информации мы сталкиваемся с проблемой
рационального управления данными. Оптимальная система поиска и
хранения данных помогает не только быстрее находить объекты с нужными
атрибутами, но и анализировать данные. Реализация такой системы
невозможна без явно представленных описаний свойств данных -
метаданных. Метаданные хранят основную информацию об объекте,
обеспечивают сохранность данных и защищают от несанкционированного
доступа. Они существенно повышают ценность данных и обеспечивают
более широкие возможности их использования. Содержание метаданных, их
структура, функции и средства их представления зависят от описываемых
ресурсов, предметной области использующих их систем, контекста и
характера их использования, а также от многих других факторов.
Метаданные могут храниться вместе с объектом, что гарантирует, что
они не будут потеряны и при изменении будут обновлены вместе. Однако не
всегда возможно встроить метаданные в некоторые типы объектов, кроме
того хранение метаданных отдельно может улучшить и упростить поиск этих
объектов. Поэтому метаданные часто хранятся в базе данных и «связывают»
с описываемыми объектами[3]. Использование различных СУБД может
требовать разного способа представления данных, а также влиять на легкость
управления данными. Поэтому выбор системы для хранения метаданных
является важным решением.
Для выбора такой системы важно рассмотреть СУБД с разными
моделями хранения данных, так как структура метаданных может быть
различна, необходимо оценить эффективность той или иной модели
представления данных и сравнить возможные схемы хранения. Конечно,
важное значение имеют стандарты для представления метаданных, которые
определяют схему хранения и позволяют легче переиспользовать данные в
дальнейшем и управлять ими. Однако, часто встречаются метаданные с
нефиксированным набором атрибутов или имеющие сильно иерархическую
структуру, что затрудняет определение схемы. Это нужно учитывать при
выборе хранилища данных. Поэтому требуется оценить сложность
представления метаданных с различной структурой в разных базах данных.
С увеличением количества данных, возрастает сложность управления
этими данными, растет время записи, чтения или просмотра метаданных.
Поэтому необходимо протестировать производительности СУБД для
определения этих показателей и проанализировать системы для выявления
оптимального решения в качестве хранилища метаданных.
В данной работе будем тестировать на различных по структуре наборах
метаданных. Для анализа выберем наиболее распространенные системы
управления базами данных, имеющие разные модели хранения данных.
Сравним из относительно ключевых характеристик в контексте цели данной
работы и измерим их производительность при работе с метаданными на
разных запросах и выполняя операции записи и чтения.
5.1. Результаты
При тестировании операционной задержки и пропускной способности
на запись/чтение выявили, что в сравнении с другими СУБД MongoDB в
среднем быстрее работает на выполнение этих операции с выбранными
датасетами, чем другие рассматриваемые СУБД. Однако, при увеличении
нагрузки она начинает уступать по этим показателям, сохраняя
преимущество только при записи сложно структурированного документа.
При большей нагрузке лучшие показатели на чтение и стабильность
пропускной способности демонстрирует Cassandra.
В большинстве рассмотренных аналитических запросов лидирует
ArangoDB, но в запросе - выборке по первому набору, уступает по
показателям Apache Cassandra. Минусом использования СУБД Cassandra
может являться меньшая гибкость языка этой СУБД, в сравнении с SQL и
возможностями, предоставляемыми ArangoDB и Mongo, и, как следствие -
невозможность реализовать сложные запросы. При выполнении
аналитических запросов Mongo и Postgresql по-разному обрабатывают
запросы на уровне СУБД и их результаты разняться при тестировании на
датасете с простой схемой и большим числом атрибутом, при работе именно
с вложенными документами и выполнении с ними запросов Mongo лидирует,
сразу после Arango, а при выборке с подзапросом даже превосходит.
ArangoDB в свою очередь очень сильно уступает по записи и чтению
документов из выбранных датасетов. Так, если рассмотреть в совокупности
показатели замеров при выполнении операций на запись и чтение и запросах
MongoDB демонстрирует в среднем более стабильные результаты, также
данная СУБД предоставляет удобные средства для загрузки данных в базу.
При тестировании было показано, что Mongo создает большую
системную нагрузку на cpu, но использует во время работы намного меньше
памяти и диска, чем ArangoDB. Postgresql создает меньшую системную
нагрузку, чем другие сравниваемые СУБД, но при этом хранение коллекций
в данной СУБД занимает большее количество пространства. При оценке
памяти на диске, занимаемого наборами в базах данных, Mongo лидирует при
хранении сложно структурированного набора, так как в других СУБД для
эффективного выполнения аналитических запросов пришлось его разбить на
несколько коллекций/таблиц, что привело к увеличению занимаемого
пространства на диске.
Таким образом, основываясь на результатах и показателях выбранных
метрик, можно выделить MongoDB как более оптимальное решение для
хранения и работы с метаданными и слабоструктурированными или
иерархическими данными. Минусом для определенных систем может
являться отсутствие на данный момент в MongoDB обеспечения ACID
свойств в полной мере, как в реляционных базах данных, однако с версии 4.0
заявляется их поддержка при транзакции с множеством документов, что
будет являться ее преимуществом относительно других NoSQL-решений.
5.2. Итоги
Таким образом, в данной работе, в пункте 3.1, были рассмотрены
основные характеристики следующих СУБД ArangoDB, PostgreSQL,
MongoDB и Cassandra, важные для обеспечения управления метаданными в
базах данных. Для сравнения СУБД были выделены основные метрики,
пункт 3.3, чтобы определить оптимальное решение в качестве хранилища для
системы управления метаданными. В работе для тестирования СУБД были
подобраны и подготовлены два разных по структуре набора метаданных
(пункт 3.2), схемы хранения которых были оптимизированы с учетом
особенностей СУБД, подробно рассмотрено в пунктах 4.1-4.2. Для
определения производительности была определена методология
тестирования (пункт 4.3), были разработаны скрипты для загрузки данных,
выполнения запросов, чтения и записи данных (скрипты запросов в
Приложении[1.5-1.12]), были получены и наглядно представлены для
сравнения результаты тестирования и замеров, выбранных метрик, приведено
в пунктах 4.3-4.7. Анализ результатов и определение более оптимальный
СУБД как основы для построения системы управления метаданными
описаны в пункте 5.1.
1. Claudius Weinberger. Benchmark: PostgreSQL, MongoDB, Neo4j,
OrientDB and ArangoDB [https://www.arangodb.com/2015/10/benchmark-
postgresql-mongodb-arangodb/].October 13, 2015
2. Fábio Roberto Oliveira, Luis del Val CuraPerformance. Evaluation of
NoSQL Multi-Model Data Stores in Polyglot Persistence Applications. July 11 - 13, 2016
3. National Information Standards Organization; Rebecca Guenther; Jaqueline
Radebaugh. Understanding Metadata. 2004
4. Jorge Bernardino, Pedro Furtado, Veronika Abramova. Which NoSQL
Database?, 2014
5. Ion LUNGU, Bogdan George TUDORICA. The Development of a
Benchmark Tool for NoSQL Databases. 2013
6. Rick Cattell, R. Scalable SQL and NoSQL data stores, 2011.
7. Bogdan George Tudorica, Cristian Bucur. A comparison between several
NoSQL databases with comments and notes. 2011
8. Haleemunnisa Fatima, Kumud Wasni. Comparison of sql, nosql and new sql
databases in light of internet of things – a survey. 2016
9. Alexandre Fonseca, Anh Thu Vu, Peter Grman. Evaluation of NoSQL
databases for large-scale decentralized microblogging. 2013
10. John Klein, Ian Gorton, Neil Ernst, Patrick Donohoe, Kim Pham, Chrisjan
Matser. Performance Evaluation of NoSQL Databases: A Case Study. 2015
11. https://docs.arangodb.com/3.3/Manual/index.html
12. http://cassandra.apache.org/doc/latest/
13. https://www.postgresql.org/docs/10/static/index.html
14. https://docs.mongodb.com/manual/
15. Claudius Weinberger. NoSQL Performance Benchmark 2018 – MongoDB,
PostgreSQL, OrientDB, Neo4j and ArangoDB. February 14, 2018
...