Вне памяти баз данных
Большинство модных слов в IT быстро устаревают, и это имеет свои причины: большинство технологий, которые раньше имели конкурентное преимущество, в течение десятилетия или даже меньше заменяются более совершенными альтернативами. Таким образом, если поставщик программного обеспечения продолжает использовать модное слово после его устаревания (1), то самое простое объяснение заключается в том, что его команда исследований и разработок даже не осознала, что мир движется вперед.
Кстати, несколько венчурных капиталистов также говорили мне, что они неохотно инвестируют в компании, которые существуют более нескольких лет, потому что большинство компаний никогда не удается отделить свои технологии от технологической среды, которая определяла их на старте.
(1) Сам рынок технологий определяет, когда технология “устаревает”. При рассмотрении конкретной технологии вы можете только приблизительно оценить, насколько долго она останется близкой к состоянию искусства.
Базы данных в памяти раньше были модным словом, и это не сохранилось: любая компания, которая сегодня рекламирует себя как поставщик в памяти или предлагает вычисления в памяти, продвигает устаревшие технологии на рынок (2). Но не поймите меня неправильно: максимальное использование “памяти” - об этом позже - никогда не было так важно, однако сейчас компьютерная среда стала более сложной, чем раньше.
(2) В теории это может быть проблема только маркетинговой команды, которая отстает, в то время как команда разработки уже продвинулась вперед. Однако я никогда не встречал компании, которая страдала от этой проблемы. Можно смело предположить, что маркетинг всегда опережает технологии.
В конце 90-х и начале 00-х годов определенный тип летучей памяти, неформально называемый ОЗУ, стал достаточно доступным, чтобы в него могли поместиться все более интересные и ценные наборы данных. В то время большинство программного обеспечения было разработано с учетом того, что ОЗУ настолько дорога и ограничена, что использование сложных подходов, только для того чтобы ограничить давление на ОЗУ настолько, насколько это возможно, было целесообразным подходом. Просто пересмотрев большинство проблем с нового, неограниченного подхода, т.е. “вычисления в памяти”, многие поставщики программного обеспечения достигли значительного ускорения по сравнению с более старыми продуктами, которые полностью полагались на вращающиеся диски.
Перейдем к 2018 году, базы данных в памяти - это устаревшая точка зрения, и так оно уже несколько лет. Существует множество типов хранения данных:
- L1 кэш процессора
- L2/L3 кэш процессора
- Локальное ОЗУ
- Локальное ОЗУ графического процессора
- Локальный SSD
- Локальный HDD
- Удаленное ОЗУ
- Удаленный SSD
- Удаленный HDD
- Лента или оптическое хранилище
Я даже не перечисляю новые технологии хранения, такие как Intel Optane, которые почти представляют собой отдельный класс устройств.
Поставщики, продвигающие “вычисления в памяти”, намекают на то, что их программное обеспечение в основном ориентировано на использование двух типов памяти: локального ОЗУ и удаленного ОЗУ. Хотя максимальное использование ОЗУ, как локального, так и удаленного, безусловно, хорошо, это также указывает на подходы к разработке, которые недостаточно используют альтернативы.
Например, за последние два десятилетия кэш процессора вырос с 512 КБ до более 60 МБ для высокопроизводительных процессоров. С таким объемом кэша процессора теперь возможно выполнять “в кэше вычисления”, что приводит к значительному ускорению по сравнению с обычными “вычислениями в памяти”. Однако использование кэша требует минимизации многих структур данных или даже более умных стратегий, выходящих далеко за рамки того, что считается необходимым или даже желательным с точки зрения ОЗУ.
Однако указывать только на то, что кэш процессора быстрее локального ОЗУ, было бы неправильно. В настоящее время хорошая разработка программного обеспечения включает максимальное использование возможностей всех этих классов хранения данных. Благодаря облачным вычислениям, сборка необходимого набора вычислительных ресурсов никогда не была такой простой.
Таким образом, Lokad не предоставляет технологию программного обеспечения “в памяти”, потому что это помешало бы нам воспользоваться другими доступными в настоящее время вариантами. Например, хотя мы могли бы арендовать машины с объемом ОЗУ до 2 ТБ, это было бы излишне дорого для наших клиентов. Существует множество алгоритмов, которые могут быть полностью потоковыми; поэтому обработка терабайтов данных не требует терабайтов ОЗУ, и учитывая, что 1 ГБ ОЗУ стоит примерно в 1000 раз дороже, чем 1 ГБ жесткого диска, это не является деталю реализации.
Наша цель - не придерживаться какой-то жесткой точки зрения на разработку программного обеспечения, а придерживаться более широкой инженерной перспективы, которая заключается в том, чтобы делать максимум с бюджетом, который у вас есть. Другими словами, мы склонны использовать обработку в памяти, когда она превосходит альтернативы, но не более того.
Затем, поскольку вычислительные ресурсы нельзя полностью настроить по требованию - например, вы не можете реалистично арендовать машину без кэша процессора - в Lokad мы стремимся максимально эффективно использовать все ресурсы, за которые платят, даже если эти ресурсы изначально не были строго запрошены.