In-memory СУБД, в которых вся БД располагается в оперативной памяти, получили в последнее время большую популярность. Во многом, благодаря выпуску компанией SAP продукта HANA, который сначала представлял собой еще одну in-memory СУБД, но потом пополнился сервером приложений и разнообразными службами, превратившись в полноценную платформу разработки и исполнения приложений. О том, насколько велика ставка SAP на HANA, свидетельствует принятое руководством компании решение о постепенном переводе всех ее приложений, включая ERP, на эту платформу. Тем не менее, первопроходцем здесь была не SAP, а ряд других вендоров, причем имена некоторых из них мало что говорят широкой общественности. Впрочем, IBM еще в 1979 г. выпустила TPF (Transaction Processing Facility), который осуществлял в оперативной памяти транзакционную обработку данных системы резервирования авиабилетов. В 1997 г. свои in-memory СУБД представили фирма TimesTen (в 2005 г. была куплена Oracle) и корейские разработчики продукта P*time, приобретенного впоследствии SAP. В 1992 г. на свет появилось solidDB — гибридное решение компании Unicom Global, позволявшее часть таблиц хранить в ОЗУ, а часть — на диске (тоже была впоследствии куплена IBM). За последние годы в этом сегменте появились и новые игроки.
Сама идея подобной СУБД лежит на поверхности: размещение всей БД в памяти позволяет существенно ускорить обработку данных, исключив чрезвычайно медленные операции их чтения и записи на диске. Сложности возникают при ее реализации. Сначала основным тормозом служила дороговизна оперативной памяти в сравнении с дисковой. Поэтому распространение получили технологии кэширования наиболее часто используемых данных в ОЗУ, позволяющие снизить интенсивность обмена с диском. Сегодня, когда набрали популярность твердотельные флэш-диски, такой кэш приобретает двухуровневую структуру, где «горячие» данные размещаются в ОЗУ, а «прохладные» на твердотельном диске. По такому пути сейчас идут все крупные производители in-memory СУБД, к которым недавно присоединилась и SAP. В этом свете «чистую» in-memory СУБД следует рассматривать, как предельный случай размещения в кэше всей БД. Такие «чистые» продукты используются в задачах, требующих сверхмалого времени отклика (телекоммуникации, сети мобильной рекламы). Следует отметить, что удешевление оперативной памяти привело к возникновению целого класса продуктов In-Memory Computing (IMC), к которому Gartner относит наряду с СУБД «бездисковые» варианты Application Server, Data Grid, Messaging и Complex Event Processing. Его объем в 2013 г. аналитическое агентство Research and Markets оценивало в 2,21 млрд. долл., а к 2018 г. он должен составить 13,23 млрд. долл. (43%-ный ежегодный рост).
Поскольку традиционные СУБД были оптимизированы для дисковых систем хранения, пришлось пересматривать структуры таблиц, технологии индексирования, механизмы оптимизации запросов и т. д. В некоторых случаях, таких как анализ потоковых данных и работа с Big Data, выгоднее вообще отказаться от реляционной модели и применять простые движки «ключ-значение», на которых базируются системы типа NoSQL. Их недостатком является неполное соблюдение требований ACID (Atomicity, Consistency, Isolation, Durability — Атомарности, Согласованности, Изолированности, Надежности), важных в ряде транзакционных задач. В результате появились реляционные СУБД типа NewSQL, совмещающие достоинства NoSQL и поддержку ACID.
Большую популярность получили БД с поколоночным хранением таблиц, позволяющие обходиться без индексов и способные подвергаться сильной компрессии. Они поддерживаются во многих in-memory СУБД для решения аналитических задач, но плохо приспособлены к транзакционным. Представители SAP говорят, что им удалось совместить высокие характеристики транзакционной и аналитической обработки в рамках одного экземпляра in-memory БД, а это в свою очередь позволяет обходиться без хранилищ данных, обращаясь с аналитическими запросами непосредственно к транзакционным источникам. Разработчики Oracle остановились на варианте с двумя синхронизируемыми БД: одной с хранением по строкам для транзакционных задач, второй — поколоночной — для аналитических. При этом, по данным Oracle, транзакционные операции ускоряются в
Об аналогичном качестве in-memory опций для своих СУБД заявляют и два других лидера рынка БД — IBM и Microsoft. У IBM это появившееся в 2013 г. BLU Acceleration — расширение флагманской DB2, поддерживающее мощные технологии компрессии (до двух порядков), быстрой обработки в памяти и векторных операций. Утверждается о 8-25-кратном увеличении скорости выполнения запросов по сравнению с традиционным дисковым вариантом БД. У Microsoft речь идет о выпущенной в составе SQL Server 2014 опции Microsoft SQL Server In-Memory OLTP, ускоряющей транзакционную производительность в
Отдавая должное лидерам мирового рынка СУБД, не следует упускать из виду и небольших игроков, которые, как правило, и являются генераторами инновационных идей и решений. Самый поразительный в этом отношении пример — германская компания EXASOL с поколоночной in-memory СУБД EXASolution, возглавляющей все списки рекордов производительности и удельной стоимости на единицу производительности в тестах по аналитической обработке TPC-H на БД объемом от 100 Гб до 100 Тб. Поскольку эта СУБД развертывается на кластерах из серверов стандартной архитектуры, для ее эксплуатации требуется фирменная надстройка EXACluster OS над ОС Linux.
Корейская фирма Altibase присутствует на рынке in-memory продуктов около 20 лет и предлагает два решения: функционирующее только в оперативной памяти XDB, применяющееся в приложениях реального времени для телекома, банков и интернета вещей, и HDB, поддерживающее многоуровневое хранение фрагментов данных с учетом их «температуры» (частоты обращения к ним). Компания Aerospike ориентирует свою одноименную распределенную NoSQL СУБД на анализ больших данных в задачах с временем отклика порядка миллисекунд (рекламные и игровые сети, электронная коммерция, обнаружение угроз). Разработчики сообщают о полной поддержке в ней ACID. Фирма DataStax, предоставляющая услуги поддержки открытой NoSQL СУБД Apache Cassandra, выпустила в 2014 г. in-memory надстройку DataStax Enterprise для транзакционных приложений, позволяющую с целью повышения производительности переносить в ОЗУ БД или отдельные ее таблицы. Она предлагает также средства интеграции с открытым аналитическим in-memory сервером Apache Spark. Для тех приложений, где наряду со скоростью требуется выполнение требований ACID и желательно наличие развитого SQL-интерфейса, подойдет одноименное NewSQL-решение фирмы MemSQL. В 2014 г. она расширила свое in-memory предложение, обеспечив в нем возможность поколоночного хранения «холодных» данных на SSD и жестких дисках, а уже в нынешнем году анонсировала коннектор к Apache Spark. Еще один представитель поколения NewSQL — продукт VoltDB одноименной фирмы обеспечивает поддержку ACID и SQL, нацелен на обработку мощных потоков данных и предлагается по открытой лицензии AGPL.
Следует отметить, что довольно много решений in-memory предлагается по тем или иным открытым лицензиям. Это упомянутый выше продукт Aerospike (AGPL), BigMemory входящей ныне в состав Software AG фирмы Terracotta (Apache), FuelDB от Wonderfuel (MIT License), Hazelcast от Hazelcast Team (Apache), SQLite (Public domain), OrigoDB от Devrex Labs, Redis от VMware/Pivotal Software (BSD), UnQLite Embedded Database от Symisc Systems (BSD, SPL), WebDNA от WebDNA Software Corporation и ряд других. Для нынешней ситуации в России, осложненной санкциями и проблемами импортозамещения, наличие такого широкого спектра опенсорсных решений является большим плюсом.