Пока нет оценок.
Пожалуйста, подождите...

Как-то быстро пришло то время, когда SQL устарел и стал не таким актуальным языком программирования. Как итог, в сети появились массовые NoSQL-решения, которые моментально вытеснили язык SQL и параметры реляционной модели хранения данных.

Базовыми аргументами в поддержку подобного подхода стали:

  • Реальная возможность работы с большими объемами данных (пресловутая Big Data);
  • Процесс хранения данных в наиболее экзотичных структурах;
  • И самое главное – возможность оперировать и хранить подобные данные за самые кратчайшие временные промежутки.

Далее мы детально поговорим о том, насколько просто это получается у самых известных и востребованных представителей мира NoSQL.

Как достигается основная скорость в NoSQL

Во-первых, это итог совершенно другой парадигмы хранения информации. Процесс парсинга и трансляции SQL-запросов, функционирование оптимизатора, объединения таблиц и остальное сильно затягивает процесс ответа.

Если удалить эти слои, максимально упростить запросы, читать с диска прямо в сеть или хранить информацию в ОЗУ, то можно выиграть в скорости. Снижается как время обработки каждого запроса, так и сумма запросов за 1 секунду.

Подобным образом в интернет-сообществе появилось значение ключа (англ. key-value), наиболее известным представителем которых считается memcached (распределённая система кэширования в оперативной памяти). Именно, данный кеш, широко распространен в некоторых веб-приложениях для процесса ускорения доступа к информации и является собратом NoSQL.

Виды NoSQL

Запросто можно выделить сразу 4 базовые виды современных NoSQL-систем:

  • Ключ — значение / Key-value. Представляет собой огромную хеш-таблицу, внутри которой допустимы исключительно операции записи и чтения информации по ключу.
  • Семейство столбцов / Column. Особые таблицы со строками и колоннами. В отличие от SQL сумма колонок от строки к строке запросто может быть переменной, а суммарное количество колонок может исчисляться миллиардом. Подобная таблица содержит оригинальный ключ. Такую структуру можно рассматривать как хеш-таблицу хеш-таблицы, первым ключом которой есть ключ строки, а вторым – название колонки. Благодаря поддержке вторичных индексов есть параметры выбора по значению колонки, а не исключительно по ключу строки.
  • Документо-ориентированная СУБД / Document-oriented. Определенные коллекции структурированных файлов. Есть возможность проведения выборки по определенным файлам, а также редактирование части файла. К подобной категории также можно отнести поисковые движки, которые по своей сути являются индексами, но не содержат документов.
  • Графовая СУБД / Graph. Специально созданы для хранения всех математических графов: узлы и связи между ними. Традиционно, позволяет задавать набор атрибутов для узлов и устанавливать связи по ним. Поддерживается работа алгоритма обхода графов и создания маршрутов.

Пример теста

Для тестирования ограничимся первыми тремя категориями

  1. Aerospike. Весьма популярная база данных типа ключ-значение (начиная с версии 3.0 является немного документно-ориентированной). Поддерживает SSD, применяет их напрямую, без файловых систем, по типу блочных устройств. Первоначально создавалась под потребности рынка онлайн-рекламы, где необходимы большие кеши информации.
  2. Couchbase. Олицетворяет собой симбиоз CouchBD и Membase. Считается последователем memcached, а именно ключ-значения. От memcached отличается персистентностью и кластерностью, ведь подобные фичи создавались на Erlang.
  3. Cassandra. Наиболее старая СУБД в данном списке. Происходит из Facebook и была выпущена как собственный релиз Apache еще в 2008 году. По сути, является колоночно-ориентированной базой данных, своего рода идейным наследником google Bigtable.
  4. MongoBD. Очень известная документно-ориентированная база данных. Ее можно по праву считать родоначальником всех документно-ориентированных NoSQL баз. Все документы являют собой JSON-объекты. В первую очередь разрабатывалась для нужд веб-продуктов.

Суть теста

Итак, представим, что для проведения теста у нас есть 4 серверные машины. Каждая оборудована 8-ядерным Xeon, 32ГБ ОЗУ и 4 Intel SSD (по 120ГБ каждый).

Весь процесс теста проводится на основе Yahoo! Cloud Serving Benchmark. Это особый бенчмарк, разработанный Yahoo! в 2010 году на основе лицензии Apache. Его специально создали для процесса проведения тестирования NoSQL БД.

И даже сейчас он остается очень популярным инструментом для тестирования продуктов NoSQL, его своего рода может считать стандартом. К слову, создан на языке программирования Java.

Для нашего теста к Yahoo! Cloud Serving Benchmark был добавлен драйвер для Aerospike, немного обновлен драйвер под MongoDB, а также отредактирована форма вывода результатов.

Важно! При тестировании NoSQL можно использовать также все предоставленные инструменты от JMeter.

Для процесса воссоздания нагрузки на проверяемый кластер потребовалось 8 локальных машин (4-ядерные процессоры i5 + 4ГБ ОЗУ на каждый).

Настройка NoSQL проводится следующим образом

Изначальная конфигурация редактируется исключительно на основе рекомендаций, описанных в документации по достижению прогнозируемой производительности. Наиболее распространенная рекомендация – настройка сети под количество ядер и объема оперативной памяти.

Очень просто настраивается Couchbase. У этого продукта есть своя веб-консоль. Вам остается лишь запустить сервис на каждом узле кластера.

Потом на одном узле создать новую корзину (специально для ключей-данных) и добавить другие узлы в кластер. Это все выполняется через удобный веб-интерфейс. Скрытых и сложных параметров настройки не предусмотрено.

Cassandra и Aerospike выстраиваются примерно на одном уровне. Пользователю достаточно на каждом узле кластера создать оригинальный конфигурационный документ.

Подобные файлы практически идентичны для каждого узла. Потом очередь запуска процесса-демона. Если все прошло правильно, узлы самостоятельно соединяются в единый кластер.

Труднее придется с MongoBD. Если у других баз данных узлы равнозначны, то здесь не так. В MongoBD сумма копий информации определяется структурой кластера. Правильно настроить кластер в MongoBD можно, если только детально разобраться с технической информацией на этот счет.

YCSB

У каждой NoSQL базы данных свой оригинальный способ предоставления данных и подходящих операций с ними. А значит, YCSB пойдет по пути максимального обобщения случайных БД (в том числе и SQL). Набор информации, которыми оперирует YCSB – это банальные значения и ключи.

Ключ – оригинальная строка, в структуру которой входит 64-битный хеш. То есть, сам YCSB, зная суммарное количество записей в базе, обращается к ним по целостному индексу. А вот для БД множество ключей выглядит вполне случайным.

Как итог, десяток полей случайной бинарной информации. По умолчанию YCSB может генерировать записи килобайтного размера. Но внутри гигабитной сети это ограничивает пользователя всего в 100 тысяч операций за 1 секунду. При тестировании рекомендуется уменьшать размер записи до 100 байт.

YCSB выполняет самые простые операции над подобной информацией: простановка новой записи с ключом и случайными данными, чтение и обновление записи по ключу.
Непосредственно тест выполняется под нагрузкой разного вида. Критическим параметром является процесс соотношения операций: сколько будет чтений, а сколько обновлений.

Можно использовать интенсивную запись (50% чтений и 50% обновлений) и в основном чтении (95% чтений и 5% обновлений). Какую именно операцию выполнить, определяется в случайном порядке. Проценты же отвечают лишь за определение вероятности выбора операции.

Итоги

Компании, предоставляющие услуги по контролю качества, могут использовать 2 вида NoSQL – медленные и быстрые. К быстрым, согласно описанному тесту, да и общей тенденции в интернет-сообществе можно отнести БД типа ключ-значение. Тот же Couchbase и Aerospike заметно опережают своих соперников.

Aerospike действительно очень быстрая база данных. С ее конфигурациями запросто можно дойти до миллиона операций за 1 секунду.

Couchbase тоже быстрый, но только на операциях в памяти. Данную базу можно использовать при надобности проведения операций в количестве не более 500 миллионов записей.

MongoBD – медленная на процесс записи, но быстрая при чтении. Отличным плюсом данной базы служит наличие параметров на блокировку чтения или записи, что может помочь при очень больших нагрузках.

Оставить комментарий