В гонку технологий баз данных, целиком размещаемых в оперативной памяти (in-memory), пару лет назад подстегнутую выпуском продукта SAP HANA, включилась и Microsoft. В ее арсенале уже есть подобные средства для решения аналитических задач (Parallel Data Warehouse и PowerPivot), а на недавно прошедшей в Новом Орлеане (США) конференции Microsoft TechEd был представлен инструмент, который появится в новой версии СУБД SQL Server 2014 и обещает существенно ускорить обработку транзакций. В его основе — технология Heckaton, разработанная подразделением Microsoft Research.
По словам вице-президента Microsoft Квентина Кларка, речь идет не о самостоятельном продукте, а о функциональности, встраиваемой в традиционную версию SQL Server и доступной без дополнительного программирования. В отличие от таких конкурирующих решений, как Oracle TimesTen или SAP HANA, Heckaton не предполагает размещения в оперативной памяти всей БД, туда будут загружаться лишь те таблицы, от которых скорость обработки транзакций зависит наиболее существенно. Для этого необходимо предварительно явным образом указать, какие таблицы следует оптимизировать для обработки в памяти. Помочь в этом должна специальная утилита, которая анализирует статистику использования таблиц в реальной системе и выдает рекомендации о размещении некоторых из них в ОЗУ. Судя по всему, такой подход является главным отличием от традиционного кэша базы данных, в который загружается наиболее часто используемый фрагмент всей БД, а не отдельные ее таблицы. Обращение ко всем таблицам, включая и те, что загружены в ОЗУ, осуществляется прозрачным образом из стандартных операторов языка T-SQL.
Сообщается о 16—50-кратном повышении производительности обработки транзакций, зафиксированном первыми пользователями данной технологии. Это ускорение достигается не только за счет уменьшения числа обращений к медленной дисковой подсистеме. К примеру, встроенные процедуры, имеющие отношение только к таблицам in-memory, компилируются в машинные коды, которые более компактны и гораздо быстрее исполняются, в частности, благодаря распараллеливанию в многоядерных системах. Усовершенствован также механизм блокировок. Данные, участвующие в транзакции, блокируются не постранично, а на уровне отдельных записей. Причем в отличие от традиционной блокировки такого рода запись, участвующая в транзакции, остается доступной для чтения, а транзакционное обновление вплоть до фиксации транзакции осуществляется на специально созданной копии строки. В результате блокировка имеет место лишь на тех отрезках времени, когда разные процессы действительно конкурируют за доступ к данной записи на обновление.
Как заверили представители Microsoft, предварительная версия SQL Server 2014 появится уже в конце июня, а выход коммерческой запланирован на начало следующего года.