International conference of developers
and users of free / open source software

Методика оценки производительности нереляционных СУБД

Илья Бакулин, Москва, Россия

LVEE 2011

Non-relational databases are now widely used when building scalable web applications. As NoSQL database systems each have its own interface, so failing to choose the right product before beginning to develop application will lead to complete rewrite of database work layer. Most database testing frameworks can not be used to benchmark NoSQL DBMS. We have carried out testing with Yahoo Cloud Serving Berchmark to benchmark non-SQL systems.

В последнее время нереляционные базы данных часто используются при построении веб-приложений, проектируемых с упором на масштабируемость. Это становится своего рода «модой». Но ведущие специалисты-архитекторы, реализующие свои идеи во всемирно известных проектах (Facebook, Twitter, Digg, Riak) сходятся во мнении, что нереляционные базы не могут полностью заменить традиционные системы хранения данных. Большое значение имеет выбор методики обоснования необходимости использования нереляционной базы данных при разработке той или иной части функционала приложения.

Ни одна NoSQL СУБД не поддерживает ставший стандартным в мире реляционных БД язык запросов SQL. Одной из важнейших особенностей SQL является то, что он позволяет разработчику абстрагироваться от внутренней схемы хранения данных в конкретной СУБД. Хотя между диалектами SQL, используемыми в различных реляционных СУБД, имеются определённые различия, в целом для приложения логика работы с БД не меняется при смене СУБД. Напротив, каждая NoSQL-СУБД предоставляет свой интерфейс (API) для взаимодействия, свою схему хранения данных, и в разных решениях они порой очень сильно отличаются. Попытка сменить движок базы данных в процессе разработки может обернуться непредвиденными сложностями, потерей времени, затраченного на проектирование, программирование и тестирование нового решения, и в конечном итоге ущербом для бизнеса компании.

Очевидно, необходимо тщательное тестирование возможных решений, основанных на различных NoSQL-СУБД, перед собственно созданием системы. Тестирование должно давать как можно более полное представление о том, как ведёт себя выбранная СУБД в различных сценариях, типичных для проектируемого веб-приложения.

Одной из систем оценки производительности, умеющих работать с нереляционными базами данных, является написанный в Yahoo программный пакет YCSB (Yahoo Could Serving Benchmark). Поддержка доступа к любой базе данных может быть реализована путём написания адаптера, обеспечивающего элементарные операции CREATE/REPLACE/UPDATE/DELETE. Немаловажным является то, что становится возможным тестирование и реляционных, и нереляционных БД с помощью одних и тех же тестовых сценариев.

Мы использовали пакет YCSB был использован для оценки производительности хранилища данных для SMS-сообщений при выборе между Cassandra и sharded MySQL. Для тестирования сначала была проведена оценка распределения количества запросов на чтение, запись и обновление, после чего написан конфигурационный файл для YCSB. После этого на одной и той же машине были поочерёдно запущены кластеры Cassandra и MySQL и проведено тестирование.

Результаты свидетельствуют о том, что при использовании
Cassandra-кластера достигаются более высокие скорости записи в базу, но более низкие скорости чтения, чем на MySQL. Это, в целом, подтверждается и опытом других пользователей. В настоящее время рассматривается возможность тестирования MongoDB, для которой в составе YCSB также имеется адаптер.

presentation