Орлов Станислав Валерьевич

Харьковский национальный университет радиоэлектроники

Применения NoSQL подхода для реализации программной системы подбора персонала для выполнения сдельной работы

С развитием информационных технологий начали появляться все новые возможности и расширяться существующие области их применения. Основной способ их применения заключается в создании информационных систем, работающие с определенным объемом данных и предоставляющих определенные услуги. Одним из видов таких систем является система поиска и подбора персонала в глобальной сети интернет для выполнения определенного вида работ и предоставления соответствующих услуг, которые стали набирать все большую популярность. С ростом популярности также растут и размеры источников данных, растут нагрузки и, к сожалению, падает производительность этих систем. Следовательно, это приводит к увеличению требований к данным системам, среди которых можно отметить: скорость обработки данных, возможность линейного масштабирования, отказоустойчивость обработки данных.

До определенного момента времени единственным способом хранения  данных являлась реляционная СУБД. Но с увеличением объема данных обнаруживались проблемы, с которыми реляционная СУБД была не в состоянии справиться. В связи с этим появилась необходимость поиска разработки новых технологий хранения данных, архитектура которых будет способна адаптироваться к возрастающему объему данных и эффективно их обрабатывать. Одной из таких технологий стал переход от реляционной модели хранения данных на постреляционную модель и привел к появлению NoSQL СУБД.

NoSQL или постреляционные базы данных – это термин, объединяющий в себе нереляционные хранилища данных, которые не подчиняются привычным правилам хранения данных, так называемому ACID (атомарность, согласованность, изолированность, надежность). Термин “NoSQL” впервые был использован в 1998 году для описания реляционной базы данных, не использовавшей SQL. Однако популярность данный подход начал набирать только лишь в 2009 году в связи с появлением большого количества веб-стартапов. В то время как традиционные СУБД ориентируются на требования ACID к транзакционной системе, в NoSQL СУБД вместо ACID может рассматриваться набор свойств BASE (базовая доступность, гибкое состояние, согласованность, в конечном счете).

Рассмотрим основные особенности NoSQL подхода:

1)                     Хранилища на графах. Подобные хранилища применяются для работы с данными, которые естественным образом представляются графами. Модель данных состоит из вершин, ребер, свойств. Работа с данными осуществляется путем обхода графа по ребрам.

2)                     Хранилище «ключ-значение» является простейшим хранилищем данных, как для организации, так и для реализации. Такие хранилища позволяют хранить в памяти по определенному ключу любые данные. Примерами таких хранилищ являются – Berkeley DB, Memcached DB, Redis.

3)                     В хранилище семейств колонок данные хранятся в виде разреженной матрицы, строки и столбцы которой используются как ключи. Типичным видом применения этого вида СУБД является веб-индексирование.

4)                     Документо-ориентированные СУБД служат для хранения иерархических структур данных. Каждая запись хранится как отдельный документ, имеющий собственный набор полей, который может отличаться от записи к записи.

У всех этих подходов есть ряд преимуществ перед реляционными хранилищами. Во-первых – это простота, а значит, система будет обладать большей масштабируемостью, чем с реляционными СУБД. Значит система подбора персонала будет способна выдерживать высокие нагрузки и поддерживать большую аудиторию пользователей. Следующим преимуществом является более естественная интеграция схемы базы данных с объектной моделью системы. Реляционная и объектная модель обычно строятся по-разному, что ведет к некоторой несовместимости. Обычно эта проблема решается написанием кода, преобразующего реляционную модель в объектную.

Также NoSQL решения имеют более эффективное использование распределенных индексов и оперативной памяти для хранения данных.

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

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

NoSQL СУБД спроектированы с расчётом на достижение следующих системных характеристик: доступность, масштабируемость, эластичность, выравнивание нагрузки, отказоустойчивость. Доступность позволит давать доступ к системе даже в случае отказа сети или отключения центра обработки данных. Масштабируемость подразумевает, что данная система может поддерживать очень большие базы данных с очень высокой частотой запросов при очень низкой задержке. Эластичность подразумевает, что система в состоянии удовлетворять меняющиеся требования к приложениям в обоих направлениях (увеличение или уменьшение масштаба). Кроме того, система способна корректно реагировать на эти меняющиеся требования и быстро восстанавливать свое устойчивое состояние. Выравнивание нагрузки подразумевает, что система в состоянии автоматически перемещать нагрузку между серверами. Отказоустойчивость подразумевает, что система в состоянии учитывать тот факт, что даже самые редкие аппаратные проблемы могут однажды воплотиться в реальность.

Таким образом, можно сделать вывод о том, что использование не реляционных хранилищ необходимо только для решения определенного класса задач. В качестве примера, можно рассмотреть случаи, при которых доменная модель объектно-ориентирована, и использование хранилища типа ключ-значение уменьшит размер дополнительного кода для преобразования данных, а также, если важность высокой производительности и масштабируемости базы данных превосходит недостатки модели ключ-значение.

1.                     J. Chris Anderson, Jan Lehnardt, Noah Slater. “CouchDB: The Definitive Guide”. O'Reilly Media, 2010.

2.        Rick Cattel. “Scalable SQL and NoSQL data stores. ACM SIGMOD Record”. New York, NY, USA, December 2010.