Большинство айти-модных слов быстро теряют свою актуальность, и на то есть веская причина: большинство технологий, когда-то дававших конкурентное преимущество, в течение десятилетия или даже меньше уступают место более совершенным альтернативам. Таким образом, если поставщик программного обеспечения продолжает использовать модное словечко после истечения его срока годности (1), самое простое объяснение заключается в том, что его команда R&D даже не осознает, что мир уже изменился.

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

(1) Сам рынок технологий определяет, когда технология «устаревает». Рассматривая ту или иную технологию, в лучшем случае можно лишь приблизительно оценить, как долго она будет оставаться достаточно близкой к передовому уровню.

Базы данных в оперативной памяти когда-то были IT-слэнговым выражением, и их репутация со временем ухудшилась: любая компания-разработчик программного обеспечения, позиционирующая себя сегодня как поставщик вычислений «in-memory» или просто «in-memory», выталкивает на рынок устаревшие технологии (2). Однако, не поймите меня неправильно: максимально эффективное использование «памяти» — подробнее об этом позже — никогда не было столь важным; тем не менее, вычислительный ландшафт теперь гораздо сложнее, чем был раньше.

(2) В теории, возможно, лишь отдел маркетинга отстает, в то время как техническая команда уже сделала скачок вперед. Однако я никогда не встречал компании-разработчика программного обеспечения, страдающей от этой проблемы. Можно с уверенностью предположить, что маркетинг всегда опережает технологии.

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

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

  • Кэш L1 процессора
  • Кэш L2/L3 процессора
  • Локальная оперативная память
  • Локальная память GPU
  • Локальный SSD
  • Локальный HDD
  • Удалённая оперативная память
  • Удалённый SSD
  • Удалённый HDD
  • Лентовое или оптическое хранилище

Я даже не перечисляю новые технологии хранения данных, такие как Intel Optane, которые почти представляют собой отдельный класс устройств.

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

Например, за последние два десятилетия кэш процессора у высокопроизводительных моделей вырос с 512 КБ до более чем 60 МБ. Благодаря такому объёму кэша теперь возможно проводить вычисления «в кэше», обеспечивая значительное ускорение по сравнению с простыми вычислениями «in-memory». Однако использование кэша требует минимизации многих структур данных или даже более умных стратегий, которые значительно превосходят то, что считается необходимым или даже желательным с точки зрения оперативной памяти.

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

Таким образом, Lokad не предоставляет технологию «in-memory», поскольку это помешало бы нам воспользоваться другими доступными на данный момент вариантами. Например, хотя мы могли бы арендовать машины с оперативной памятью до 2 ТБ, это было бы неоправданно дорого для наших клиентов. Существует множество алгоритмов, способных работать в потоковом режиме; следовательно, обработка терабайтов данных не требует терабайтов оперативной памяти, и, учитывая, что 1 ГБ ОЗУ примерно в 1000 раз дороже 1 ГБ HDD, это уже не просто техническая деталь.

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

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