Убивает ли No-SQL SQL?

Две причины, по которым SQL никогда, никогда не умрет

На прошлой неделе друг прислал мне электронное письмо от успешного предпринимателя, в котором говорилось: «SQL мертв».

Предприниматель утверждал, что чрезвычайно популярные базы данных без SQL, такие как MongoDB и Redis, постепенно вытеснят базы данных на основе SQL, и поэтому изучение SQL в качестве специалиста по данным было «унаследованной проблемой».

Я был полностью шокирован его электронным письмом: как он пришел к такому необоснованному выводу? Но это также вызвало у меня любопытство ... Возможно ли, что других так же дезинформировали? У этого предпринимателя появилось много последователей, и он был весьма откровенен - ​​получали ли новые специалисты по обработке данных совет, что им следует избегать изучения SQL?

Поэтому я подумал, что поделюсь своим ответом с предпринимателем публично, если кто-то еще поверит, что SQL находится на грани исчезновения.

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

По сути, есть две причины, по которым SQL будет оставаться актуальным еще многие десятилетия.

Причина №1: базы данных без SQL не заменят такие аналитические базы данных, как Presto, Redshift или BigQuery

Независимо от того, используют ли ваши приложения серверную часть SQL, например MySQL, или серверную часть без SQL, например MongoDB, данные в этом сервере в конечном итоге будут загружены в специализированную аналитическую базу данных, такую ​​как Redshift, Snowflake, BigQuery или Presto.

Почему компании передают свои данные в специализированные колоночные хранилища, такие как Redshift? Поскольку столбчатые хранилища способны выполнять аналитические запросы намного быстрее, чем как NoSQL, так и базы данных с хранилищем строк, такие как MySQL. На самом деле, я готов поспорить, что базы данных столбчатого хранилища набирают популярность так же быстро, как и базы данных NoSQL.

Таким образом, технология базы данных приложения, NoSQL или что-то еще, обычно не актуальна для специалистов по данным, потому что они не используют базу данных приложения (хотя есть некоторые исключения, о которых я расскажу позже).

Причина №2: преимущества баз данных NoSQL заключаются не в том, что они не поддерживают язык SQL

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

Так почему же базы данных столбчатого хранилища намеренно выбирают предоставление интерфейса SQL?

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

Рассмотрим простой пример запроса, который подсчитывает количество документов в коллекции из базы данных NoSQL MongoDB.

Примечание. Документы в MongoDB аналогичны строкам, а коллекции аналогичны таблицам.

db.sales.aggregate( [
  {
    $group: {
       _id: null,
       count: { $sum: 1 }
    }
  }
] )

Сравните это с эквивалентным SQL.

select count(1) from sales

Должно быть ясно, что язык SQL - лучший выбор для человека, который хочет извлекать данные. (Базы данных NoSQL поддерживают другой язык, потому что SQL сравнительно сложнее для правильного построения библиотек приложений, взаимодействующих с базой данных).

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

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

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

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