Хотя в Oracle по-прежнему предпочитают хранить молчание о перспективах перехода на технологии NoSQL, не секрет, что разработчики корпорации также ищут пути обеспечения высокого быстродействия и гибкости, характерных для NoSQL, в СУБД с открытым кодом MySQL.
На конференции OpenWorld корпорация провела несколько семинаров и презентаций, посвященных СУБД Oracle NoSQL. Максимальное внимание специалистов было приковано к сообщениям о идущих работах по оснащению MySQL всеми функциями NoSQL.
Цель Oracle заключается в том, чтобы к оперативности систем NoSQL добавить полный набор поддерживающих SQL функций, которые предлагаются СУБД.
Вероятно, секретным оружием Oracle должно стать придание продуктам SQL скорости NoSQL. Речь идет о технологии кэширования Memcached, которая уже используется в социальной сети Facebook и во многих других сервисах. Корпорация рассматривает по меньшей мере два способа объединить Memcached и СУБД с открытым кодом MySQL.
СУБД категории NoSQL завоевали свою популярность за высочайшую скорость обработки данных. Она значительно выше, чем у традиционных систем SQL, к которым относится, в частности, СУБД Oracle. Однако технологиям NoSQL не хватает общего интерфейса и языка для работы с данным, их-то и предлагают продукты SQL.
В отличие от NoSQL, модель SQL обладает рядом фундаментальных свойств под общим названием ACID (atomicity, consistency, isolation, durability — «атомарность, согласованность, изолированность, долговечность»), которые служат математическим основанием для эффективного механизма обработки транзакций.
Вице-президент Oracle по проектированию MySQL Томас Улин сообщил, что цель проекта заключается в придании MySQL скорости доступа, присущей NoSQL.
«Мы считаем, что нам удастся наконец объединить SQL и NoSQL, — подчеркнул он. — Если к производительности отдельных компонентов приложения действительно будут предъявляться повышенные требования, вы сможете снабдить набор данных интерфейсами как NoSQL, так и SQL».
Ключевой элемент проекта Oracle – интеграция технологии Memcached, которую владельцы масштабных интернет-ресурсов (крупнейший из них — Facebook) уже давно используют для обеспечения быстрого доступа клиентов к данным MySQL. Memcached формирует хэш-таблицу общедоступных компонентов базы данных, и эта таблица хранится в оперативной памяти сервера. А быстрый доступ к ней обеспечивается посредством API.
«Memcached для MySQL становится естественным интерфейсом NoSQL, — пояснил Улин. — Эта технология активно применяется в мире Интернета. Сисадмины уже установили ее на своих системах и знают, как с ней обращаться. И мы считаем, что она станет удачным вариантом предоставления доступа NoSQL».
В Oracle полагают, что интерфейс Memcached вполне может претендовать на роль альтернативной точки доступа к MySQL. Негибкость систем SQL зачастую обусловлена недостатками полноценной поддержки инфраструктуры ACID, необходимой для выполнения сложных запросов. Предоставив своим клиентам альтернативный метод доступа в стиле NoSQL, корпорация Oracle поможет им сочетать достоинства СУБД с полной поддержкой ACID и скорость NoSQL.
При обращении к Memcached доступ к данным осуществляется не через SQL, а путем простой выборки в списке 'ключ–значение'. «Воспользовавшись простым поиском в списке 'ключ–значение', вы сможете добиться оптимальной производительности», — указал Улин.
Технология не требует внесения изменений непосредственно в MySQL. «Достаточно просто подключить соответствующие компоненты, – пояснил Улин. — Корпорация Oracle планирует включить эту технологию в следующую версию MySQL 5.6».
«Какое-то время назад, еще до вхождения в состав Oracle, разработчики MySQL занимались проектом HandlerSocket, также предполагавшим использование Memcached для доступа к данным MySQL, — сообщил Петр Зайцев, генеральный директор компании Percona, предоставляющей своим клиентам сервисы MySQL. — Благодаря HandlerSocket на одном сервере за одну секунду можно осуществить выборку до миллиона пар ключ–значение. Это почти в десять раз превосходит возможности интерфейса MySQL». Компания Percona уже обеспечила интеграцию HandlerSocket в Percona Server – один из своих продуктов, построенных на основе MySQL.
Реализация NoSQL, планируемая Oracle в будущих версиях MySQL, во многом напоминает HandlerSocket, но здесь предполагается более тесная привязка к API Memcached.
В одном из проектов разработчики Oracle представили версию Memcached для MySQL Cluster — устойчивой к сбоям редакции MySQL, ориентированной на работу сразу на нескольких серверах.
На недавней конференции NoSQL Now разработчик Oracle MySQL Джон Дэвид Данкен рассказал о предпринимавшихся ранее попытках обеспечить доступ NoSQL к MySQL Cluster, в том числе о проекте ClusterJ на базе Java и о модуле mod_ndb, созданном на основе JSON (JavaScript Object Notation). Оба этих подхода оказались слишком громоздкими, тогда как API Memcached представляется вполне естественной оболочкой для MySQL. В настоящее время компания предлагает клиентам ознакомиться с предварительной версией MySQL Cluster 7.2, включающей в себя интерфейс Memcached.
«Мы полагали, что любая реализация MySQL Cluster обеспечит уровень быстродействия ближе к Memcached, чем к серверу MySQL, — отметил он. — Кластер позволяет сделать буфер Memcached постоянным и сохранять его даже в случае отключения питания. И сегодня у нас есть все необходимое для достижения производительности, которой вы вправе ожидать от Memcached».