Технология in memory – Как создать таблицу, оптимизированную для памяти? Технология In-Memory OLTP в Microsoft SQL Server | Info-Comp.ru

Содержание

Как технология in-memory изменила бизнес-аналитику / Habr

Примерно 5 миллисекунд проходит от запроса до ответа, если данные хранятся на жестком диске. SSD отвечает в 30 раз быстрее — за 150 микросекунд. Оперативной памяти требуется в 300,000 раз меньше времени — лишь 15 наносекунд.*

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

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

Технология in-memory заключается в том, что для трансформации в оперативную память единовременно загружаются все данные из разных источников. После этого трансформацию можно выполнить «на лету», без запросов к диску. Например, кликом выбрать измерение и сразу получить график, который будет отображать значения показателей в нужном разрезе. Благодаря тому, что все данные уже в оперативной памяти, аналитическому приложению не нужно делать запросы к жесткому диску для получения новой информации.

Это вступление должно помочь мне рассказать о том, как и почему менялись технологии, лежащие в основе современных аналитических решений.

Сначала было дорого

«Память — это новый диск», — заявил исследователь из Microsoft Джим Грей (Jim Grey) в начале нулевых. В 2003 году он опубликовал статью «Экономика распределенных вычислений»**, где сопоставил стоимость разных этапов компьютерной обработки данных. Джим Грей показал, что вычисления должны быть там же, где находятся данные — чтобы лишний раз их не перемещать. Он советовал передвинуть вычисления как можно ближе к источникам данных. То есть, отфильтровать данные как можно раньше и в результате сэкономить.

В течение нескольких следующих лет на рынке появились in-memory СУБД сразу от нескольких лидеров индустрии, включая Oracle, IBM, и SAP, а также несколько open source проектов — например, Redis и MemcacheDB.

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

Рынок решений для анализа корпоративных данных тем временем развивался по другой траектории. Большинство предприятий неразрывно связаны с системами, использующими транзакционные СУБД, которые основаны на принципах, разработанных еще в 80-х годах прошлого века. Их задача — постоянно сохранять на диск идущие потоком небольшие порции данных и сразу подтверждать их целостность (OLTP-сценарий работы). Среди систем, использующих такие СУБД — ERP-решения, автоматизированные банковские системы, биллинг, POS-терминалы.

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

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

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

Таким образом, традиционные СУБД, в которых изначально сохранялась вся исходная для анализа информация, плохо подходили для того, чтобы выполнять роль источника данных, к которому аналитическая система подключается напрямую. Поэтому в прошлом веке для аналитических задач стандартной практикой было использование промежуточной модели данных, в которой все значения уже рассчитаны на какой-то момент времени. Такая модель данных называлась «аналитическим кубом», или OLAP-кубом. Для создания OLAP-куба разрабатывались так-называемые ETL-процессы (extract, transform, load) — запросы к базам данных в исходных системах и правила, в соответствии с которыми нужно осуществить преобразования данных. Очевидно, если в OLAP-кубе какой-то информации нет, то в отчете она появиться не может.

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

Допустим, OLAP-куб содержит информацию о продажах по разным странам. Но финансовый директор вдруг захотел увидеть продажи в разрезе городов, а потом сгруппировать их по среднему чеку. Для получения такого отчета ему приходилось обращаться в ИТ-службу, чтобы она перестроила OLAP-куб. Либо он мог форсировать события и привлечь знатока MS Excel, который создал бы такой отчет вручную. Для этого ему приходилось выгружать с помощью аналитических запросов данные из исходных систем в таблицы и проделывать с ними ряд трудоемких и недекларируемых манипуляций.

В первом случае финансовому директору приходилось ждать. Во втором он получал цифры, которым трудно доверять.

К тому же, решение оказывалось очень дорогим. Нужно было потратить деньги на создание хранилища, которое надо администрировать. Требовалось нанять специалистов по СУБД для того, чтобы они занимались ETL — перестраивали OLAP-кубы под каждую из задач. Параллельно в компании обычно появлялись специальные аналитики, которые создавали отчеты по запросу (так-называемые ad-hoc отчеты). Фактически они изобретали разные способы получить нужный отчет с помощью MS Excel и преодолевали трудности, связанные с тем, что эта программа предназначена для других задач.

В результате путь получения отчетности был дорогим даже для крупных компаний. Менеджерам из небольшого и среднего бизнеса приходилось довольствоваться возможностями, которые есть в программе MS Excel.

Решение нашлось в другом месте

В 1994 году тогда еще шведская компания QlikTech из небольшого города Лунд выпустила программу QuikView, которую позже переименовали в QlikView. Приложение было разработано для оптимизации производства. Оно позволяло узнать, использование каких деталей и материалов связано между собой, а каких — нет. То есть, от программы требовалось визуализировать логические взаимосвязи между частями, материалами, агрегатами и продуктами. Для этого она загружала в оперативную память наборы данных из разных источников, сопоставляла их и мгновенно показывала связи.

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

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

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

С распространением 64-разрядных серверов, которые позволяли работать с большим объемом оперативной памяти, технология in-memory стала быстро менять бизнес-аналитику. Это хорошо иллюстрируют отчеты Magic Quadrant исследовательской компании Gartner. В 2016 квадрант лидеров покинуло сразу 6 разработчиков BI-платформ, среди которых оказались такие ветераны отрасли, как IBM, Oracle и SAP. Осталось лишь три игрока, сделавших ставку на технологию in-memory и отказавшихся от OLAP-кубов. Это Microsoft, Qlik и Tableau.

Положение игроков в Gartner’s Magic Quadrant for Analytics and Business Intelligence Platforms***


Можно сказать, что компания Qlik стала пионером и лидером трансформации рынка. К 2016 платформу для анализа данных QlikView использовали заказчики по всему миру, а годовой объем продаж превысил $600M.

От отчетов к управлению на основе данных

С распространением аналитических решений, основанных на технологии in-memory, перед огромным числом компаний открылась недоступные раньше способы использовать корпоративные данные. Появилась возможность не ограничиваться управленческими отчетами, которые стандартны для каждой из отраслей. Самые разные процессы стали «измерять» — вводить метрики и использовать их для описания процессов. Стало гораздо проще пользоваться объективной информацией, чтобы принимать более обоснованные решения. Резко выросло число работающих с данными бизнес-пользователей.

Огромное влияние на интерес к использованию данных оказали изменения потребительского поведения и маркетинга, который стал цифровым — то есть основанным на метриках. Много новых людей привлекли в Data Science ожидания от того, как мир изменит Big Data.

В результате всех этих процессов быстро произошла «демократизация» корпоративных данных. Раньше данные принадлежали ИТ-службам. Маркетинг, продажи, бизнес-аналитики и руководители обращались для получения отчетов в ИТ-службу. Теперь сотрудники работали с данными самостоятельно. Оказалось, прямой доступ сотрудников к данным способен повысить продуктивность работы и дать конкурентное преимущество.

Однако, первое поколение основанных на технологии in-memory аналитических решений давало бизнес-пользователям очень ограниченные возможности использовать данные. Они могли работать только с готовыми панелями и дэшбордами. Технология in-memory позволяла им «провалиться» вглубь любого показателя и увидеть, из чего он складывается. Но речь всегда шла о тех показателях, которые определены заранее. Исследование ограничивалось уже размещенными на дэшборде визуализациями. Такой способ использования данных получил название «направленная аналитика» и он не предполагал, что бизнес-пользователь самостоятельно займется подключением новых источников и будет сам создавать показатели и визуализации.

Следующим этапом на пути демократизации данных стало самообслуживание. Идея самообслуживания заключалась в том, что бизнес-пользователи исследуют данные, создавая визуализации и вводя новые показатели самостоятельно.

Стоит заметить, к моменту, когда технология in-memory стала менять бизнес-аналитику, уже не было серьезных технологических препятствий перед тем, чтобы дать пользователям доступ ко всем данным. Возможно, у самых консервативных заказчиков был вопрос о целесообразности такой функции. Но мир уже повернулся в сторону желания «посчитать все». Теперь менеджерам, не имеющим математического образования и навыков программирования, тоже требовался инструмент, который позволил бы говорить на языке данных.

Бизнес-аналитикам прямой доступ к данным открывал много новых возможностей. Они могли выдвигать и проверять любые гипотезы, применять методы Data Science, выявлять такие зависимости, существование которых трудно предположить заранее. Появилась возможность объединять внутренние корпоративные данные с внешними — полученными из сторонних источников.

В сентябре 2014 компания Qlik выпустила второе поколение своей платформы, которое получило название Qlik Sense. В Qlik Sense применялась та же архитектура и те же технологии. Отличие было в новом подходе к созданию визуализаций. Теперь стандартные визуализации можно было создавать «на лету», просто перетаскивая на лист поля с нужными измерениями. Это упростило исследование данных благодаря очень резкому сокращению цикла исследования. Проверка гипотезы стала занимать лишь пару секунд.

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

Данные есть. Что теперь?

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

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

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

Однако, это уже не те трудности, которые преодолевали заказчики несколько лет назад. Уровень зрелости аналитических платформ сегодня такой, что даже если исходных данных очень много, то ждать подсчета показателей больше не нужно, а полученным цифрам можно доверять. В основе случившейся трансформации — вычисления in-memory.

Следующей технологией, которая будет менять рынок аналитических решений, наверняка станут облачные платформы. Уже сегодня инфраструктура облачных сервис-провайдеров (CSP) вместе с набором услуг на ней превращается в платформу управления данными.


Источники:

* IDC, «Market Guide for In-Memory Computing Technologies», www.academia.edu/20067779/Market_Guide_for_In-Memory_Computing_Technologies

** Jim Gray «Distributed Computing Economics», www.microsoft.com/en-us/research/wp-content/uploads/2016/02/tr-2003-24.doc

*** Посмотреть, как менялось с 2010 по 2019 положение разработчиков BI-платформ в отчетах Gartner Magic Quadrant можно на интерактивной визуализации: qap.bitmetric.nl/extensions/magicquadrant/index.html

Как работает технология In-Memory Computing и ее применение в бизнесе


Название In-Memory Computing буквально переводится как «вычисления в оперативной памяти», и это является самым точным описанием данной технологии. Она представляет собой хранение информации в основной оперативной памяти (ОЗУ) выделенных серверов, а не в сложных реляционных базах данных, которые работают на сравнительно медленных дисках. Размещение данных непосредственно в ОЗУ помогает бизнес-клиентам, включая предприятия розничной торговли, банки и т. д., быстро обнаруживать шаблоны, анализировать большие объемы данных «на лету» и так же быстро выполнять необходимые операции. Росту популярности In-Memory Computing способствует снижение цен на оперативную память, поэтому сейчас эта технология выгодна для широкого спектра приложений. Количество компаний, которые используют вычисления в оперативной памяти, растет почти на треть каждый год. Ожидается, что в ближайшие два года рынок решений с поддержкой In-Memory перешагнет отметку в 23 миллиарда долларов США.

Возможности и преимущества In-Memory Computing


Сегодня In-Memory Сomputing используют многие технологические компании. Встроенная вычислительная технология HANA (High-Performance Analytic Appliance), разработанная в SAP, использует метод сложного сжатия данных для хранения их в оперативной памяти. Производительность HANA в 10 000 раз выше по сравнению со стандартными дисками. Это позволяет компаниям тратить на анализ считанные секунды вместо долгих часов.


Другие преимущества вычислений в памяти:

  • непрерывное кэширование огромных массивов данных. Это обеспечивает чрезвычайно быстрый отклик в процессе поиска;
  • хранение данных сеансов и изменение их «на лету». Это обеспечивает оптимальную производительность веб-сайтов;
  • обработка событий и реагирование на сложные события в масштабе времени, близком к реальному.

Рабочий компьютер


Технология In-Memory Сomputing позволяет тратить на анализ данных считанные секунды

Оборудование для In-Memory Сomputing


Для реализации концепции In-Memory Сomputing применяют ПО, соответствующее потребностям бизнеса, и серверное оборудование с достаточным объемом ОЗУ. Современные процессоры Intel позволяют устанавливать до 1.5 ТБ оперативной памяти. Таким образом, популярные 2-сокетные серверы поддерживают до 3 ТБ оперативной памяти, 4-сокетные модели – до 6 ТБ и 8-сокетные – до 12 ТБ. Это открывает даже небольшим предприятиям доступ к преимуществам современных высокоэффективных технологий обработки данных.


На роль сервера, отвечающего за вычисления In-Memory Сomputing, подойдет любая модель производителя HPE из этого списка:


В линейке продукции Dell это могут быть такие серверы:


Японская Fujitsu предлагает для этой цели следующее оборудование:


В Lenovo можно выделить модели Lenovo System x3950 X6 и Lenovo System x3850 X6.


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

В банковской отрасли


Российские законы обязывают банки и другие финансовые структуры собирать и обрабатывать большие объемы данных для уменьшения количества мошеннических действий и оперативного выявления фактов отмывания денежных средств. Чтобы оставаться конкурентоспособными, банки вынуждены делать это максимально быстро, так как любое промедление чревато оттоком клиентом и снижением прибыли. Крупные банки РФ уже внедрили технологию In-Memory, чтобы избежать этой проблемы, и теперь способны обрабатывать до 1 миллиарда транзакций в секунду.


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


Пример. Коммерческий банк планировал заменить действующую систему обработки данных на более новую и совершенную. Она должна быстро находить и предотвращать риски, выполнять аналитические задачи и приумножить количество транзакций в секунду. Внедрение технологии In-Memory решило эти задачи и одновременно увеличило производительность в целом, обеспечило бесперебойную работу в режиме 24/7, а также дало конкурентное преимущество в инвестициях и трейдинге.

В финансовых технологиях


Обработкой и анализом данных часто занимаются аутсорсинговые компании – это позволяет самим банкам сконцентрироваться на приоритетных направлениях. В этом случае In-Memory Сomputing, на которой специализируются финтех-организации, позволяет улучшить производительность сервисов и приложений для банковских учреждений. Вычисления в памяти помогают создавать аналитическое ПО для оценки рисков, эффективные решения для банковского менеджмента и казначейств, гибко управлять корпоративными данными, заниматься страховыми операциями и краудфандингом, обеспечивать прозрачное кредитование физических лиц.


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

В сфере информационных технологий


In-Memory Сomputing широко востребована среди разработчиков ПО и поставщиков программного обеспечения как услуги. Она используется там, где традиционные облачные инструменты и сервисы не справляются с критичным увеличением объемов данных и возникают простои в работе. Многие компании несут убытки, так как требовательные к сервису клиенты уходят к конкурентам, если их провайдер работает даже с незначительными перебоями. Платформа In-Memory увеличивает скорость обработки потоков и упрощает горизонтальное масштабирование систем. Эту технологию уже взяли на вооружение лидеры мирового IT-рынка.


Вычисления в оперативной памяти применяются для ускорения транзакций и поиска в больших массивах данных, в HTAP, аналитике Big Data, при подготовке отчетности в реальном времени, для быстрого управления и улучшения пользовательского опыта.


Пример. Разработчик аналитического ПО для телекоммуникационной компании столкнулся с проблемой анализа нескольких десятков терабайт в реальном времени. Эти объемы данных обеспечивали работу огромной клиентской базы. Платформа с интегрированной технологией In-Memory обеспечила ощутимый прирост в скорости вычислений и повысила удовлетворенность клиентов телекоммуникационной компании.

В транспортной логистике


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


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


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

 IT в логистике


Внедрение In-Memory-систем позволяет автоматизировать работу транспортных компаний

В ритейле и электронной коммерции


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


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


Пример. Разработчик ПО для совместной работы представителей брендов и крупного ритейла столкнулся с проблемой поиска инструментов для обработки больших объемов данных. Главной задачей компании была организация работы в реальном времени и сложная аналитика многочисленной аудитории (несколько тысяч пользователей). Внедрение In-Memory открыло возможности для кеширования в оперативной памяти и потоковой обработки информации. Благодаря этому ритейлеры улучшили бизнес-показатели, покупатели стали более лояльными, а эксперты получили инструменты для точной настройки таргетированной рекламы.

В обработке данных для IoT (интернет-вещей)


На фоне непрерывного роста устройств, взаимодействующих с интернетом, увеличивается объем обрабатываемой информации. Платформы, на которых работает IoT-техника, должны быть высокопроизводительными, масштабируемыми и поддерживать инструменты гибкой балансировки нагрузки. In-Memory справляется с этой задачей и заменяет собой традиционные БД, размещенные на СХД.


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


Пример. Разработчик большой IoT-сети столкнулся с ограничением роста производительности и слабой масштабируемостью оборудования, в то время как стоимость лицензий на специальное ПО продолжала увеличиваться. За счет внедрения In-Memory компания уменьшила операционные расходы и привлекла новых крупных клиентов.

В фармацевтической отрасли


Компании, которые разрабатывают и производят лечебные препараты, регулярно исследуют их эффективность и побочные действия. Технологии In-Memory помогают фармацевтическому бизнесу перебирать большое количество комбинаций и оперативно принимать окончательное решение по препарату.


Вычисления в оперативной памяти используются в исследовательской работе и для моделирования действия потенциальной эффективных лечебных препаратов.


Пример. Зарубежная фармацевтическая компания занимается поиском препаратов для лечения сложных заболеваний. Для этого она проводит постоянный анализ зараженных клеток – несложную, но требующую многократных повторений операцию. Использование In-Memory-системы позволило компании перейти на параллельные вычисления в распределенной системе и в несколько раз сократить трудоемкость аналитических проектов. Также у нее появились инструменты для построения сложных моделей поведения клеток, что в перспективе поможет открыть новые методы лечения.

Перспективы In-Memory


Технология In-Memory шагнула далеко за пределы IT и финансовой сферы, и темпы ее распространения увеличиваются с каждым годом. Очередного прироста решений по вычислениям в оперативной памяти стоит ожидать и в нынешнем 2018 году. Это подтверждают результаты исследований ведущих мировых аналитиков – Gartner, MarketsandMarkets и других.


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

Что такое In-Memory Data Grid / Habr

Обработка данных in-memory является довольно широко обсуждаемой темой в последнее время. Многие компании, которые в прошлом не стали бы рассматривать использование in-memory технологий из-за высокой стоимости, сейчас перестраивают архитектуру своих информационных систем, чтобы использовать преимущества быстрой транзакционной обработки данных, предлагаемых данными решениями. Это является следствием стремительного падения стоимости оперативной памяти (RAM), в результате чего становится возможным хранение всего набора операционных данных в памяти, увеличивая скорость их обработки более чем в 1000 раз. In-Memory Compute Grid и In-Memory Data Grid продукты предоставляют необходимые инструменты для построения таких решений.

Задача In-Memory Data Grid (IMDG) — обеспечить сверхвысокую доступность данных посредством хранения их в оперативной памяти в распределённом состоянии. Современные IMDG способны удовлетворить большинство требований к обработке больших массивов данных.

Упрощенно, IMDG — это распределённое хранилище объектов, схожее по интерфейсу с обычной многопоточной хэш-таблицей. Вы храните объекты по ключам. Но, в отличие от традиционных систем, в которых ключи и значения ограничены типами данных «массив байт» и «строка», в IMDG Вы можете использовать любой объект из Вашей бизнес-модели в качестве ключа или значения. Это значительно повышет гибкость, позволяя Вам хранить в Data Grid в точности тот объект, с которым работает Ваша бизнес-логика, без дополнительной сериализации/де-сериализации, которую требуют альтернативные технологии. Это также упрощает использование Вашего Data Grid-а, поскольку в большинстве случаев Вы можете работать с распределённым хранилищем данных как с обычной хэш-таблицей. Возможность работать с объектами из бизнес-модели напрямую — одно из основных отличий IMDG от In-Memory баз данных (IMDB). В последнем случае пользователи всё ещё вынуждены осуществлять объектно-реляционное отображение (Object-To-Relational Mapping), которое, как правило, приводит к значительному снижению производительности.


Есть и другие функциональные особенности, которые отличают IMDG от других продуктов, таких как IMDB, NoSql или NewSql базы данных. Одна из основных — по-настоящему масштабируемое секционирование данных (Data Partitioning) в кластере. IMDG по сути представляет собой распределённую хэш-таблицу, где каждый ключ хранится на строго определённом сервере в кластере. Чем больше кластер, тем больше данных можно в нем хранить. Принципиально важным в этой архитектуре является то, что обработку данных следует производить на том же сервере, где они расположены (локально), исключая (или сводя к минимуму) их перемещение по кластеру. Фактически, при использовании хорошо спроектированного IMDG, перемещение данных будет полностью отсутствовать за исключением случаев, когда в кластер добавляются новые сервера или удаляются существующие, меняя тем самым топологию кластера и распределение данных в нем.

Нижеприведённая схема показывает классический IMDG с набором ключей {k1, k2, k3}, в котором каждый ключ принадлежит отдельному серверу. Внешняя база данных не является обязательной. Если она присутствует, IMDG, как правило, будет автоматически читать данные из базы или записывать их в нее.


Ещё одной отличительной особенностью IMDG является поддержка транзакционности, удовлетворяющей требованиям ACID (atomicity, consistency, isolation, durability — атомарность, целостность, изоляция, сохранность). Как правило, чтобы гарантировать целостность данных в кластере, используют двухфазную фиксацию (2-phase-commit или 2PC). Разные IMDG могут иметь разные механизмы блокировок, но наиболее продвинутые реализации обычно используют параллельные блокировки (например, GridGain использует MVCC — multi-version concurrency control, управление конкурентным доступом с помощью многоверсионности), сводя тем самым сетевой обмен к минимуму, и гарантируя транзакционную целостность ACID с сохранением высокой производительности.

Целостность данных является одним из главных отличий IMDG от NoSQL баз данных. NoSQL базы данных, в большинстве случаев, спроектированы с использованием подхода, называемого “целостность в конечном итоге” (Eventual Consistency, EC), при котором данные могут некоторое время находиться в несогласованном состоянии, но обязательно станут согласованными *со временем*. В целом, операции записи в EC системах происходят достаточно быстро по сравнению с более медленными операциями чтения (точнее, не превосходящими по скорости операции записи). Последние IMDG с *оптимизированным* 2PC как минимум соответствуют EC системам по скорости записи (если не опережают их), и значительно превосходят их по скорости чтения. Интересно, что индустрия сделала полный круг, двигаясь от тогда ещё медленных 2PC к EC, а теперь от EC к гораздо более быстрым *оптимизированным* 2PC.

Разные продукты могут предлагать разные 2PC оптимизации, но в целом задачами всех оптимизаций являются увеличение параллелизма (concurrency), минимизация сетевого обмена и снижение числа блокировок, требуемых для совершения транзакции. Например, распределённая глобальная база данных Spanner компании Google основана на транзакционном 2PC подходе просто потому, что 2PC предоставил более быстрый и простой способ гарантировать целостность данных и высокую пропускную способность в сравнении с MapReduce или EC.

Даже несмотря на то, что у разных IMDG обычно много общих базовых функциональных возможностей, существует множество дополнительных возможностей и деталей реализации, которые отличаются в зависимости от производителя. Оценивая IMDG продукт, обращайте внимание на механизмы выгрузки данных при переполнении (eviction policies), техники загрузки данных, в том числе, при старте сервера ((pre)loading techniques), параллельное секционирование (concurrent repartitioning), объём дополнительной памяти, требуемый для хранения записей (data overhead), и тому подобное. Также, обращайте внимание на возможность делать запросы (query) в кэш во время выполнения. Некоторые IMDG, например, GridGain, позволяют пользователям осуществлять запросы к данным, хранящимся в памяти, используя обычный SQL с поддержкой распределённых join-ов (distributed joins), что является довольно большой редкостью.

Хранение данных в IMDG — это лишь половина функциональности, требуемой для in-memory архитектуры. Данные, хранимые в IMDG, также должны обрабатываться параллельно и с высокой скоростью. Типичная in-memory архитектура секционирует данные в кластере с помощью IMDG, и затем исполняемый код отправляется именно на те сервера, где находятся требуемые ему данные. Поскольку исполняемый код (вычислительная задача) обычно является частью вычислительных кластеров (Compute Grids), и должен быть правильно развернут (deployment), сбалансирован по нагрузке (load-balancing), обладать отказоустойчивостью (fail-over), а также иметь возможность запуска по расписанию (scheduling), интеграция между Compute Grid и IMDG очень важна. Наибольший эффект можно получить, если IMDG и Compute Grid являются частями одного и того же продукта и используют одни и те же API. Это снимает с разработчика бремя интеграции и обычно позволяет достигнуть наибольшей производительности и надёжности in-memory решения.


IMDG (вместе с Compute Grid) находят свое применение во многих областях, таких как анализ рисков (Risk Analytics), торговые системы (Trading Systems), системы реального времени для борьбы с мошенничеством (Fraud Detection), биометрика (Biometrics), электронная коммерция (eCommerce), онлайн-игры (Online Gaming). По сути, любой продукт, перед которым стоят проблемы масштабируемости и производительности, может выиграть от использования In-Memory Processing и IMDG архитектуры.

Технологии In-Memory на практике | Компьютерра

В прошлый раз мы говорили о востребованности приложений In-Memory, которая будет только расти в ближайшее время. Это утверждение подкреплено свежим онлайн-опросом, проведённым T-Systems в сентябре 2013 года среди 147 респондентов на тему «Какие технологии лучше всего решают проблему “больших данных”». Лидируют технологии In-Memory, причем в регионе EMEA им доверяют больше всего – 60% опрошенных, тогда как в США – всего 22%, а в Бразилии – 14%.

Рис. 1.

Исследование T-Systems

В опросе приняли участие 1 010 человек из Германии, Австрии, Швейцарии, Франции, Испании, ЮАР, Бразилии, США и России. Целевая аудитория состояла из лиц, принимающих решения в сфере ИТ, их помощников и специалистов, работающих с “большими данными”. В основную фокус-группу вошли предприятия, занятые в промышленности, торговле, коммуникационной сфере, банковском деле и страховании, услугах корпоративного уровня, а также в государственном секторе.

Согласно другому глобальному исследованию T-Systems, проведенному в июне–июле 2012 года среди более чем 1 000 ИТ-специалистов из разных стран мира, включая Россию, почти две трети опрошенных компаний выделяют на внедрение In-Memory от 100 тыс. до миллиона евро. Для России бюджеты по большей части находятся в диапазоне шестизначных сумм в евро, ниже 500 тыс. Так что же это за приложения?

Как выяснилось, с большим отрывом по узнаваемости лидируют Microsoft SQL и SAP HANA, что является хорошим результатом для аналитического решения, запущенного в 2010 году.

Рис. 2.

Однако общая узнаваемость бренда – это лишь первый шаг к тому, чтобы компания начала пользоваться продуктом. T-Systems как глобальный партнер SAP в ходе проведенного исследования интересовалась успехами SAP HANA в первую очередь (рис. 3). Более трети опрошенных указали, что им известны преимущества SAP HANA – а следовательно, и предполагаемый процесс его функционирования, а 28% лиц, принимающих решения, уже начали планирование стратегии In-Memory, основанной на SAP HANA, для своей компании. Более того, 27% опрошенных лиц, принимающих решения в сфере ИТ, уже определили конкретные сценарии применения данного приложения. Во многом из-за сложностей в подготовке к внедрению SAP HANA процент компаний, уже использующих эту технологию, составляет, казалось бы, незначительные 6% от числа опрошенных. Однако для технологии, которая на рынке всего несколько лет, это весомый результат, особенно учитывая количество людей, запланировавших её внедрение, – почти треть опрошенных.

Рис. 3.

Самая оптимистичная картина наблюдается в США, Бразилии и России: в этих странах более половины респондентов собираются в ближайшем будущем применять технологию SAP HANA. На первом месте по применению технологии стоят сферы поставок и сфера обслуживания – 15% и 10% соответственно. Меньше всего применяется она в торговом и финансовом секторах. Это коррелирует с ответами на вопрос о значимости технологий In-Memory для каждой области: наиболее заинтересованы в них в целом сферы коммуникаций и услуг.

Многим было бы интересно узнать, что же случится с другими приложениями по управлению базами данных от компании SAP в условиях активного развития HANA. Согласно данным самой компании, в 2012 году она рассматривала полный переход на SAP HANA – например, перевод пользователей с SAP BW на SAP HANA. Как планирует вендор, процесс должен пройти без каких-то заметных затруднений. На данный момент SAP предлагает использовать “SAP BW powered by SAP HANA” – SAP BW на платформе HANA. Кроме того, особое положение SAP HANA как базы данных для всего функционала SAP Business Suite станет причиной смены парадигмы использования и основной архитектуры баз данных для систем обработки транзакций. В связи с этим интересно мнение самих ИТ-руководителей касательно того, что они собираются делать с существующими приложениями SAP (рис. 4). Вот о чём нам говорит исследование: 36% респондентов рассматривают данное приложение как инструмент целевой поддержки областей деятельности, важных для работы, и поэтому предпочитают воспринимать этот модуль как «аналитического помощника» SAP BW. Почти каждое седьмое лицо, принимающее решения, считает, что SAP HANA найдет собственную отдельную нишу в общей SAP-среде, а каждый пятый руководитель рассматривает его как основную базу данных для аналитических и транзакционных приложений. При этом США, Бразилия и Россия – те страны, где наиболее высок процент компаний, ожидающих, что SAP HANA станет новой стандартной базой данных.

Рис. 4.

Внедрение приложений для работы с “большими данными” влечёт за собой и ещё один серьёзный вопрос: какую модель эксплуатации выбрать для данной технологии? Функционирование SAP HANA преимущественно рассматривается лицами, принимающими решения по ИТ, в собственном центре данных компании. Следовательно, пользователи оставляют за собой контроль над приложением, оплачивают более высокие расходы, которые часто амортизируются только в среднесрочной перспективе, и теряют гибкость. Так зачем тогда компании тратят лишние деньги на хранение всей информации у себя? Такое отношение можно объяснить недостаточным представлением о расходах на технологии In-Memory, а также опасениями за безопасность данных. В целом более половины опрошенных компаний предпочитают хранить важные данные на своём собственном аппаратном обеспечении внутри компании и перемещают к ИТ-провайдеру только ресурсы, и лишь 5% готовы отдать обработку данных полностью в виртуальное пространство с помощью SAP HANA.

Рис. 5.

Принимая во внимание инновационный характер и сложность технологий In-Memory, компании в данный момент предпочитают внедрять эти приложения с помощью поставщиков программных решений. Здесь возникает вопрос, каким поставщикам решений потребители отдадут своё предпочтение. Респонденты отметили, что предпочтут нанять специализированного подрядчика, который фокусируется на вопросах управления данными для подготовки рекомендации и поддержки в использовании технологии In-Memory. В этом вопросе эксперту со стороны доверяют больше, чем привычному и проверенному ИТ-провайдеру (рис. 6). Такой результат неудивителен, поскольку это не типичная установка приложения: технологии In-Memory требуют для обслуживания специалиста, демонстрирующего глубокие познания в сфере ИТ, а также обладающего экспертизой в статистике и экономике, чтобы использовать новые системы в полной мере. Хотя в разных странах и даже отраслях предпочтения весьма варьируются. В России почти половина респондентов доверила бы подобное только узким специалистам и наняла бы отдельного поставщика с подтверждённой экспертизой в этом вопросе. А наиболее консервативная промышленная отрасль осталась бы верна существующему провайдеру ИТ-услуг.

Рис. 6.

Подводя итог циклу своих статей, посвященных технологии In-Memory, могу отметить, что за короткое время тема Big Data завладела вниманием ИТ-руководителей. При этом российские ИТ-менеджеры не вошли в первую тройку респондентов, осознающих значимость технологий In-Memory; они пока недооценивают преимущества нового подхода, но уже видят реальную необходимость в инвестициях и в анализе Big Data и готовы тратить на это деньги (53%). В целом 16% опрошенных компаний уже используют технологии In-Memory для обработки своих данных, 31% планируют использование, а 90% лиц, принимающих решения по ИТ и уже получивших опыт работы с данной технологией, оценивают его очень хорошо или хорошо.
Почти треть опрошенных компаний уже составили бюджет для применения у себя технологий In-Memory, но стандарта пока нет: проекты бюджетов разительно отличаются друг от друга.

Респонденты считают, что технологии In-Memory необходима в первую очередь для оптимизации процессов (48%) и увеличения производительности (47%). Более 23% опрошенных компаний в настоящее время работают над их включением в свои ИТ-стратегии, а более 21% – над внедрением. Набрав 63%, SAP удалось добиться высокого уровня узнавания бренда SAP HANA за короткий срок и обойти другие классические приложения In-Memory. В России 45% респондентов заинтересованы в применении SAP HANA.

Big data – что делать? Во-первых, компаниям следует проанализировать внутреннюю ситуацию и решить, действительно ли Big Data – их проблема. После этого можно будет более эффективно определить перспективы новой технологии. Во-вторых, поставить под сомнение существующий ИТ-ландшафт: проблема обработки больших массивов данных может быть связана с архитектурными недостатками существующих систем, которые решаются аппаратно-производственной или другой оптимизацией ИТ-инфраструктуры. Третье – финансовый анализ: поскольку общая стоимость приобретения и эксплуатации может быстро превратиться в проблему, чрезвычайно важно выполнить технический и экономический анализ потенциальных областей применения технологий In-Memory. Необходимо просчитать возможность масштабирования решения, поскольку основной параметр “больших данных” – экспоненциальный рост. Один из вопросов, на который тоже придется ответить, – где вы будете хранить и обрабатывать растущее количество данных. Выбор модели эксплуатации для программного приложения оказывает непосредственное влияние на стоимость, инфраструктуру и гибкость ИТ-ландшафта компании. И, как обычно, кадры решают всё. Придется нанимать или готовить своим силами специалиста по вопросам управления данными, который будет давать рекомендации и оказывать поддержку в использовании технологии In-Memory. Готовых специалистов, кстати, очень мало на рынке.

In-Memory. База данных в оперативной памяти #управление контентом #СЭД #ECMJ

По следам статьи о больших данных, хотелось бы поговорить о конкретных технологиях, применяемых при реализации решений в этой области. Речь пойдет о In-Memory технологиях, а именно In-Memory Data Base (IMDB) и In-Memory Data Grid (IMDG). Если говорить русским языком, то это базы данных использующие оперативную память компьютера в качестве основного хранилища.


Немного предыстории


Почему In-Memory решения стали такими популярными? Дело в том, что стоимость оперативной памяти неуклонно падает, что позволяет хранить весь набор операционных данных непосредственно в памяти, увеличивая тем самым скорость их обработки более чем в 1000 раз. Так же важен тот факт, что современные серверные операционные системы, такие как Windows Server 2012, способны использовать до 4ТБ RAM. А объединив эти сервера в кластеры, можно получить хранилища данных с внушительным объемом и не менее внушительной скоростью доступа.


Чем отличается IMDB и IMDG?


IMDB по своей архитектуре ближе к традиционным реляционным базам данных, в свою очередь IMDG – это распределенное хранилище объектов, схожее с многопоточной хэш-таблицей. Главное преимущество IMDG заключается в возможности работать с объектами из бизнес-модели напрямую. Если в классической РСУБД нам позволено хранить строго типизированные данные, то в IMDG можно хранить любой вид данных, например класс из .NET описывающий покупателя. Данный подход позволяет существенно сократить временные затраты на сериализацию и десериализацию данных на стороне клиента. Ещё одним важным моментом IMDG архитектуры является то, что если используется кластер из нескольких IMDG узлов, то данные следует обрабатывать на том же сервере (узле) где они расположены, что практически исключает их перемещение внутри кластера, тем самым снижается вычислительная нагрузка на сеть и повышается безопасность.


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


Среди крупных игроков на этом рынке можно выделить SAP с реляционной IMDB HANA, Oracle с IMDB TimesTen, а так же IMDB от MemSQL и IMDG от GridGain.


Слабые стороны


У IMDB/IMDG как и у любой другой технологии есть свои слабые стороны, в первую очередь это стоимость. Несмотря на то, что цены на RAM стремительно падают, они по прежнему намного выше, чем у своих твердотельных аналогов. К тому же из-за особенности устройства оперативной памяти, в случае обесточивания все данные моментально исчезают, что требует от компаний вложений в дорогостоящие инфраструктурные решения, обеспечивающие бесперебойное питание и схемы регулярной репликации данных на твердые носители.


Слабые стороны накладывают свои ограничения на потенциальные сферы применения подобных решений, как правило, это второстепенные системы решающие конкретные задачи и берущие данные из основных хранилищ на твердых носителях. Однако зачастую преимущества в виде сверх высокой скорости обработки данных берут верх и In-Memory технологии находят свое применение в таких чувствительных к надежности областях как обработка online транзакций (OLTP).


Области применения


Основными областями применения In-Memory решений являются:


1. Анализ данных рынка, Реакция на события (CEP), Торговля.


2. Авторизация, Online транзакции (OLTP).


3. Real-Time аналитика – интерактивное представление данных, витрины данных.


4. Электронная коммерция (Electronic Data Interchange, e-trade, e-cash, e-marketing), персонализация, Real-Time обслуживание.


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


ECM?


Открытым остается вопрос о полезности In-Memory в ECM, если посмотреть на области, то в основном это ниша ERP и BI систем. Использование подобных технологий в ECM пока кажется избыточным и выглядит как стрельба из пушки по воробьям, по крайней мере, до тех пор, пока не будут найдены задачи, требующие от системы молниеносной реакции и не решающиеся простым масштабированием существующей инфраструктуры.



In-memory-data-grid. Масштабируемые хранилища данных / Habr

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

1) Кэширование результатов выполнения запросов

  • плюсы: высокая скорость доступа к данным
  • минусы: требует компромисса между актуальностью данных и скоростью доступа, т.к. данные в кэше могут устареть, а удалять старые данные из кэша с последующим кэшированием новых — это дополнительные задержки и нагрузка на систему

2) NoSQL решения

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

Сегодня я хочу познакомить вас с таким типом хранилища данных, который объединяет достоинства обоих подходов и при этом имеет ряд преимуществ перед упомянутыми выше решениями: In-memory-data-grid (IMDG).

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

  • Oracle Coherence — Java/C/.NET
  • VMWare Gemfire — Java
  • GigaSpaces — Java/C/.NET
  • JBoss (RedHat) Infinispan — Java
  • Terracota — Java

Так как я собираюсь рассказывать о решениях для Java, то узлами кластера IMDG будут JVM, но данная статья будет интересна и тем, кто не имеет отношения к Java, потому что во-первых, некоторые из популярных решений имеют поддержку нескольких языков, а во-вторых, даже IMDG на Java может быть использован для быстрого доступа к данным через REST API.

Итак, что же представляет из себя in-memory-data-grid?

Это кластерное key-value хранилище, которое предназначено для высоконагруженных проектов, имеющих большие объемы данных и повышенные требования к масштабируемости, скорости и надежности.
Основными частями IMDG являются кэши (в GemFire это называется регионами).
Кэш в IMDG — это распределенный ассоциативный массив (т.е. кэш реализует джавский интерфейс Map), обеспечивающий быстрый конкурентный доступ к данным с любого узла кластера.

Кэш также позволяет производить обработку этих данных распределенно, т.е. модификация любых данных может быть произведена с любого узла кластера, при этом не обязательно доставать данные из кэша, изменять их, а потом класть обратно.

Практически во всех IMDG кэши поддерживают транзакции.

Данные в кэшах хранятся в сериализованном виде (т.е. в виде массива байтов).

1. Скорость

Все данные находятся в оперативной памяти кластера, за счет чего существенно сокращается время доступа.
Т.к. все данные сериализованы, то время получения какого-либо объекта из кэша = (время перемещения объекта на конкретный узел кластера) + (время на десериализацию).
В случае, если запрашиваемый объект находится на том же узле, на котором выполнен запрос, то (время получения) = (время на десериализацию). И здесь мы видим, что доступ к данным мог бы быть вообще бесплатным, если бы объект не надо было десериализовать, для чего в концепцию IMDG было введено понятие near-cache.

Near-cache — это локальный кэш объектов для быстрого доступа, все объекты в нем хранятся готовыми к использованию. Если near-cache для данного кэша сконфигурирован, то объекты туда попадают автоматически при первом get-запросе этих объектов.

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

  1. expiration — время жизни объекта в кэше
  2. eviction — удаление объекта из кэша
  3. ограничение по количеству хранимых объектов

При желании (а также недостатке памяти) данные могут храниться в файле, либо в БД.

2. Надежность

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

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

3. Масштабируемость

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

4. Актуальность данных

При использовании IMDG вы всегда получаете актуальные данные, т.к. при выполнении put отсылается уведомление всем узлам кластера о том, что объекты с такими-то ключами получили новое значение. Каждый узел обновляет свои партиции, содержащие эти ключи, и удаляет старые значения из своего near-cache.

5. Снижение нагрузки на БД

IMDG можно использовать не только как самостоятельное хранилище, но и как узел системы, снимающий нагрузку с трудномасштабируемой реляционной БД.

Для чтения и записи из/в БД для каждого кэша в конфигурации указывается Loader, который будет отвечать за чтение/запись объектов в БД.

Возможны несколько вариантов организации доступа к данным:

  • во время запуска приложения высасывать все необходимые данные из БД в грид (так называемый preloading). Время подъема приложения увеличивается, потребление памяти тоже, но скорость работы растет
  • во время работы приложения подтягивать необходимые данные по запросам клиентов (read-through). Выполняется автоматически с помощью объекта Loader для данного кэша. Время подъема приложения небольшое, начальные затраты памяти тоже, но дополнительные временные затраты на обработку запросов, вызывающих read-through

Варианты записи в БД при изменении соответствующих данных:

  • при каждой операции put в кэш автоматически производится запись в БД с помощью Loader’a (так называемый write-behind). Подходит только для систем, основная нагрузка на которые вызывается чтением.
  • данные, ожидающие записи в БД, накапливаются, а потом производится один запрос на запись в БД. Сигналом к выполнению такого запроса может быть определенное количество данных, ожидающих записи, либо таймаут. Подходит для write-intensive систем, но сложнее в реализации

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

Вывод

In-memory-data-grid является сравнительно молодой, но хорошо себя зарекомендовавшей технологией, развитие которой ведется многими крупными вендорами. Она объединяет в себе достоинства NoSQL и систем кэширования, устраняет некоторые их существенные недостатки и позволяет поднять производительность системы на новый уровень. Если эта статья показалась вам интересной, то буду рад рассказать в следующий раз про какое-либо конкретное решение из семейства IMDG, а также затронуть вопросы построения и использования индексов, механизмов сериализации и взаимодействия с другими платформами в этих системах.

UPD: следующая статья

Все дело в памяти | Открытые системы. СУБД

О компании GridGain Systems заговорили в 2015 году, после того как стало известно, что Сбербанк планирует масштабное внедрение технологий обработки в памяти GridGain In-Memory Data Fabric и становится инвестором компании. Никита Иванов, основатель и технический директор GridGain Systems, родился и вырос в Ленинграде, окончил Балтийский государственный технический университет «Военмех», а с середины 90-х годов живет и работает в США. У него имеется более чем двадцатилетний опыт разработки программного обеспечения для высокопроизводительных систем и платформ промежуточного слоя. Он один из первопроходцев применения Java для разработки серверного промежуточного ПО. В 2005 году Иванов вместе с коллегами начал работу над распределенной технологией обработки данных в памяти, которая и положила начало продукту GridGain In-Memory Data Fabric. В 2015-м по результатам тендера решение GridGain было выбрано в качестве инфраструктурной платформы для проектов Сбербанка, и с прошлого года идет внедрение системы в производственную среду этой крупнейшей в мире финансовой организации.

В интервью журналу «Открытые системы.СУБД» Никита Иванов рассказал об истории и перспективах своей компании и о том, почему технологиям in-memory альтернативы нет.

 

Как была создана компания GridGain?

Как и многие проекты в области инфраструктурного ПО, проект, который лег в основу технологий GridGain, начинался в рамках сообщества Open Source — cегодня это проект Apache Ignite, развиваемый с середины 2000-х. Компания GridGain Systems была создана в 2010 году вокруг этого проекта, когда были привлечены первые инвестиции.

Идея вычислений в памяти (in-memory computing) не нова — она появилась еще в 1960-е годы, с началом применения первых внешних накопителей на лентах. Доступ к ним был на несколько порядков медленнее, чем доступ к данным в памяти, поэтому сразу возник вопрос: почему бы не держать часто используемые данные в памяти, там же, где выполняются программы? С тех пор практически все системы по хранению и обработке данных имели возможность кэширования. В первых реализациях in-memory computing было совсем мало памяти, она была безумно дорогой, но с годами ситуация изменилась: падение цен на память, широкое распространение 64-битных процессоров и всплеск объемов данных — все это определило возможность современных реализаций in-memory computing. Наличие 64-битного процессора позволяет адресовать доступ к множеству данных на одном узле, а если соединить эти узлы в кластер, то появляется возможность работать с очень большими объемами данных. И самое главное, подоспели гражданские приложения, которые нуждаются в таком подходе к обработке данных, — в течение 20 лет это были в основном специализированные задачи военного назначения.

Сегодня in-memory computing становится для большинства современных приложений фактическим стандартом. И наш проект — один из тех, что возникли на последней волне развития технологии обработки в памяти.

Интересно также посмотреть на эту технологию с точки зрения эволюции систем хранения данных. Развитие шло от лент к жестким дискам, затем к флеш-памяти и сейчас — к хранению в памяти. К 2018 году прогнозируют активное развитие энергонезависимой памяти (non-volatile memory, NVM) и фактически хранение данных в памяти — это последний рубеж в эволюции хранения для компьютеров архитектуры фон Неймана. До тех пор пока мы кардинально не изменим эту архитектуру (например, перейдем к световым или биокомпьютерам), существенных прорывов в подходах к хранению уже не произойдет. Именно поэтому большинство аналитиков считают, что in-memory computing — это не просто очередная технология хранения, такая как флеш, а основной способ для работы с данными на долгое время.

 

В обозримом будущем альтернатива этому подходу не появится?

Да, для многих современных систем альтернативы уже нет. Скажите, вы часто слышите о проектах создания систем с нуля — в банке, страховой компании, индустрии развлечений, где не требуются высокая производительность и масштабируемость? Думаю, нет. Можете себе представить приложение на смартфоне, в котором ответ на ваш запрос приходит через час? Однако 20 лет назад все приложения были такими. Но мы забываем, что за нажатием кнопки запуска приложения на телефоне стоит обработка огромных объемов данных, которые постоянно растут. Поэтому и необходима обработка именно в памяти, то есть та, которая максимально приближена к оборудованию, иначе добиться ускорения уже физически невозможно. Сегодня нет технологий и подходов, которые бы обеспечивали более высокую скорость и большую масштабируемость, чем обработка и хранение в памяти.

Однако все это не так просто, как кажется, хотя бы по причине разнообразия задач и данных. Пять-семь лет назад, когда мы только поднимали наш бизнес, слышали множество возражений: зачем нам такие технологии, если мы не занимаемся запуском ракет или исследованием залежей углеводородов? Но за последние годы ситуация изменилась, и теперь к нам приходят стартапы, которые не знают, как справиться с ежедневной обработкой 400 Тбайт данных.

 

Что сдерживает распространение технологий обработки в памяти и где прежде всего востребованы ваши решения?

Циклы развития ИТ-индустрии сокращаются, и если 20 лет назад такой цикл составлял 10–15 лет, то сегодня компании каждые два-три года обновляют свои программные стеки. Системы in-memory computing пока не стали стандартом для всех организаций во всем мире, но есть определенные категории предприятий, которые уже не могут без них обойтись. Например, на Уолл-стрит это абсолютно необходимая технология, и больше половины наших клиентов — это финтех-компании, для которых скорость обработки данных находит прямое отражение в деньгах. Они первыми обратились к технологии обработки в памяти еще в 1990-е и с тех пор являются локомотивом ее продвижения. Но у нас много других интересных клиентов, например, в области биоинформатики, где ведется создание новых лекарств, в разработке мобильных приложений и др. Появляются клиенты, о заинтересованности которых в наших технологиях мы раньше даже и подумать не могли. Недавно к нам обратились заказчики из Autodesk, пожелавшие добавить к своей системе проектирования интересную возможность — кнопку, нажав на которую, пользователь отправляет чертеж детали в производственные студии по всему миру, имеющие 3D-принтеры. Конструктору выставляется предложение по цене, а система автоматически выбирает производство с оптимальными затратами. Когда в Autodesk была запущена эта функция, то все системы компании сразу «упали», поскольку не могли справиться с таким огромным числом студий, желающих предложить свои услуги и конкурирущих за право изготовить изделие по чертежу.

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

 

А какова ситуация в России?

Мы пытались продвигать здесь наши технологии сразу после кризиса 2008 года, вели переговоры с ФНС, «Газпромом», с другими крупными компаниями, которые в один голос заявляли, что эти «космические» технологии им не нужны. А через четыре года мы начали сотрудничать со Сбербанком и сейчас уже работаем с рядом российских компаний, с ФНС и др. В России поняли, что если требуется конкурировать наравне со всем миром, то такие системы нужны.

 

Ваш продукт — это своего рода «прослойка» между памятью и СУБД. Но есть мнение, что современные СУБД не готовы к работе даже с технологиями флеш-памяти, что уж говорить об in-memory computing.

 Никита Иванов: «Сегодня нет технологий и подходов, которые бы обеспечивали более высокую скорость и большую масштабируемость, чем обработка и хранение в памяти»
 Никита Иванов: «Сегодня нет технологий и подходов, которые бы обеспечивали более высокую скорость и большую масштабируемость, чем обработка и хранение в памяти»

 

Если посмотреть на технологии in-memory двадцатилетней давности, то это было именно так: системы выполняли только роль кэша между базой данных и приложением. Но за последнее время сложность подобных решений значительно выросла, и идея «прослойки» уходит. Сегодня GridGain сама по себе может полностью заменить СУБД, поскольку поддерживает все те же ключевые функции: SQL, транзакции, высокую доступность и др. Более того, мы предоставляем в разы больше функциональности, чем традиционные СУБД: потоковую репликацию, вычислительный грид (традиционные высокопроизводительные системы), интеграцию со Spark и Hadoop, файловую систему в памяти и многое другое.

Именно поэтому нас выбрали Сбербанк и Barclay’s, ведь GridGain — не просто инструмент вычисления в памяти, а возможность заменить все базы данных, которые сегодня развернуты в финансовых учреждениях. В Сбербанке это и происходит — одна из идей состоит в том, чтобы перейти с СУБД Oracle на GridGain. Базы данных в современном мире становятся местом, где складируются данные на долговременное хранение,  размещаются резервные копии, однако все это обходится компаниям слишком дорого. Зачем Сбербанку ежегодно платить десятки миллионов долларов в год лицензионных отчислений за резервную систему хранения, когда вся обработка будет на GridGain? Для этих целей гораздо проще развернуть, например, Hadoop.

Сама идея СУБД начинает постепенно вымываться, но, естественно, этот процесс займет определенное время. Цели использования СУБД меняются, наверно, будут меняться и сами технологии.

 

Насколько сложен процесс миграции с Oracle на GridGain?

Такие компании, как Сбербанк, имеют очень сложную ИТ-инфраструктуру, однако они приняли стратегическое решение о постепенном переходе от традиционных СУБД к обработке в памяти с использованием нашей технологии. Cложность такого перехода определяется конкретным проектом. Имеются проекты, где на GridGain переводятся уже существующие системы, а есть такие, где все делается с нуля с использованием наших технологий. Уже введены в продуктивную эксплуатацию первые системы на базе GridGain, причем меньше чем через год после подписания контракта, что для такого масштабного банка поразительный результат. Мы видим, как работают другие, более консервативные банки — например, американские, для которых любое небольшое изменение в бизнес-процессе занимает годы.

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

 

Какие еще у вас есть клиенты с похожими по масштабу задачами?

Сбербанк — уникальная компания. Мы работаем и с Barclay’s, и с Citibank, но аналогов тому, чего стремится достичь Сбербанк, пока нет. И поскольку у нас команда преимущественно российская, нам очень приятно, что банк именно из России настолько инновационен в самом правильном, непафосном смысле этого слова. По мнению аналитиков Gartner, в области in-memory computing Сбербанк является банком номер один в мире.

 

Что сегодня представляет собой рынок in-memory computing, кто ваши конкуренты?

Из больших компаний — это SAP с системой HANA, хотя опции обработки в памяти имеются в продуктах Oracle, Microsoft и IBM. Но всем этим компаниям гораздо сложнее, поскольку им надо обслуживать свои традиционные СУБД — эту громадную «дойную корову», которой они добавляют «бантики» работы в памяти, но принципиально сделать с ней ничего не могут, так как это важнейший источник дохода. Это монстры со своим рынком, и мы с ними практически не конкурируем.

Есть интересные стартапы вроде VoltDB и MemSQL. Они реализуют традиционные базы данных SQL, в которых диск заменен на память. Есть ряд компаний, подход которых аналогичен нашему, а мы предоставляем больше, чем просто СУБД: наша система реализует целый комплекс функций, формирующих полноценную структуру работы с данными, потому она и называется In-Memory Data Fabric. Среди компаний, придерживающихся схожего подхода, можно назвать Hazelcast, которая работает здесь в Кремниевой долине, Gigaspace из Израиля, и, наверно, на сегодня все. Поле конкуренции не такое большое. Нам помогает то, что мы развиваем свою систему в рамках модели Open Source и лидируем в этой области. Вообще, модель Open Source очень важна в сфере инфраструктурного ПО; в противном случае, думаю, у вас практически нет шансов. Это подтверждает успех и Hadoop, и Spark, и компаний, которые развивают свои решения на основе этих технологий.

Для Hadoop предлагается много коммерческих реализаций. С Ignite происходит что-то подобное?

Начавшийся было рост числа компаний вокруг Hadoop быстро прекратился, все поняли, что достаточно двух-трех дистрибутивов, а четыре-пять уже перебор. Поэтому сейчас здесь по сути осталось три серьезных игрока: Cloudera, Hortonworks и MapR, — а остальные сошли с дистанции, даже Intel закрыла полумиллиардный проект по Hadoop. Ничего, кроме головной боли для пользователей, большое число коммерческих версий проекта с открытым кодом не приносит. Если посмотреть на Spark, то как была одна компания, которая занималась его развитием (Databricks), так она и осталась, хотя никому ничто не мешало найти инвестиции и начать что-то делать вокруг Spark. Само сообщество пользователей решило, что это не нужно. Действительно, гораздо проще сконцентрироваться на разработке самого проекта с открытым кодом и иметь одну, максимум две компании, которые реализуют для него корпоративные версии.

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

Для Apache Ignite пока есть только одна компания, разрабатывающая корпоративную версию, — это GridGain. Мы предоставляем стабильную версию с дополнительными функциями и стандартным набором сервисов поддержки, консалтинга и т. д. Может быть, появятся и еще компании, а может быть, и нет, но, даже если GridGain завтра перестанет существовать, проект Ignite продолжит развиваться, и это одно из преимуществ модели Open Source. Когда мы приходим в крупную организацию, возникает вопрос: как можно смотреть в будущее, работая сегодня с небольшим стартапом в 100 человек? Но риски снимает тот факт, что за нами стоит мощный проект с открытым кодом.

 

 Компания GridGain до сих пор сохраняет статус стартапа, когда она станет зрелым бизнесом?

Согласно известному определению, стартап — это временная организация, которая находится в поиске устойчивой бизнес-модели. Абсолютное большинство компаний в Кремниевой долине — это стартапы, независимо от того, сколько человек в них работает. Думаю, мы останемся стартапом еще долго, находясь в поиске устойчивой бизнес-модели, потому что меняются технологии, меняются ожидания, сокращаются циклы развития технологий. Например, на изменение бизнес-модели очень сильно повлияли облака, что больно ударило по таким компаниям, как Microsoft, Oracle и др. С появлением и взрослением подобных технологий будет меняться и наша бизнес-модель. Я вообще приверженец идеи, что практически любой бизнес, если он правильно управляется, всегда остается стартапом, потому что постоянно находится в поисках этой модели. Внешние факторы все время меняются, и если 100 лет назад можно было основать IBM и следующие 50 лет развиваться в рамках одной и той же бизнес-модели, то больше такого уже не будет.

Конечно, мы будем расти, последние три года GridGain ежегодно удваивает продажи, и на следующий год у нас тоже большие планы. Мы постоянно нанимаем людей по всему миру — в Европе, в России, в Америке, но по сути своего бизнеса остаемся стартапом.

 

Ваши разработчики все из России? Какие к ним предъявляются требования? Готовят ли российские вузы нужные вам кадры?

В нашем штате около 70% разработчиков из России. Я сам получил образование в России и был воспитан с той мыслью, что наши специалисты — лучшие в мире, однако это миф. Безусловно, в стране приличное базовое образование, но нашим выпускникам кардинально не хватает реального опыта участия в серьезных проектах. Например, в любом крупном центре США молодые специалисты очень быстро накапливают практический опыт, работая либо в Google, либо в Facebook, Twitter или Microsoft, хорошо понимая, что такое современная коммерческая разработка программного обеспечения. А в России этого просто нет, и это главная проблема для нас.

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

 

Каковы планы по развитию технологий GridGain?

Мы не станем отклоняться от стратегической линии и делать принципиально новые продукты, но проекту предстоит глубокое развитие в силу того, что меняются требования к нему. Для крупных организаций сегодня все более актуальны задачи цифровой трансформации, и с этим связаны ключевые направления совершенствования технологии GridGain. Одно из наиболее интересных и важных направлений на этот год — машинное обучение, другая область — HTAP (hybrid transactional analytical processing).

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

Наталья Дубова ([email protected]) — научный редактор, «Открытые системы. СУБД» (Москва).

GridGain,гибридные технологии,Направления развития СУБД,Память,hybrid technology, database development future, Memory

Поделитесь материалом с коллегами и друзьями

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *