Автор: Максим Белько, разработчик в американской IT-компании thredUP
Данные — это океан. Чтобы ловить в нем рыбу, а не тонуть, нужно научиться выбирать необходимые данные в конкретную секунду. В этом бизнесу помогает язык SQL.
Максим Белько занимается базами данных более восьми лет. Сейчас он разработчик в американской IT-компании thredUP. Раньше работал в телеком-компаниях Lifecell и «Киевстар». Максим рассказал, почему работа с базами данных — обязательное условие для любого бизнеса, а шпионские триллеры со взломом Пентагона — это сказки.
Как использовать SQL для масштабирования бизнеса
У вас есть идея: покупать арбузы в Херсоне и продавать их в Борисполе. Вы находите оптовых продавцов и того, кто привезет арбузы, узнаете цену. Начинаете продавать. Со временем покупаете грузовые машины и возите арбузы сами.
Где зафиксируете контакты продавцов и покупателей, данные о машинах? Скорее всего, в телефоне или Google-таблице. А если поставщиков, покупателей и машин — десятки? А если начнете возить еще дыни и цветы? Однажды листов станет слишком много, и разобраться в них будет крайне сложно.
Вам понадобятся реляционные базы данных и то, что поможет их структурировать. Чаще всего бизнес покупает коробочные решения с подпиской. Но это временный выход. В какой-то момент вы захотите продавать и покупать в Беларуси, появятся представители — и нужно будет выдавать разные доступы к системе. Коробочного решения окажется мало.
При таком масштабировании нужен SQL — он поможет управлять базой данных, в которой все процессы упорядочены. Знание SQL пригодится, когда листочков и рук не хватает или потерялся заказ. То есть, когда бизнес из-за хаоса начинает терять деньги.
Какие задачи решает система управления базами данных
Система управления базами данных (СУБД) — это то, что позволяет получать информацию из таблиц и дата-файлов. Они хранятся на диске операционной системы, а «доставать» их помогают реляционные базы данных.
«Реляционные базы данных» — набор таблиц с данными и идентификаторами. Это похоже на адресную книгу: вот Excel-таблицы — там имена абонентов и номера, определяющие город абонента (идентификаторы 1, 2... 10). Первые таблицы с именами по номеру ссылаются на таблицу с расшифровкой идентификаторов — так будет понятен город.
Благодаря этому вместо одной громоздкой таблицы у нас много маленьких и «легких», связанных между собой таблиц. Так уменьшаем объем файла с информацией. Он занимает меньше места на диске, время выполнения запросов сокращается, система работает быстрее.
Подключившись к базе данных через интерфейс или командную строку, можно изменить или извлечь данные в удобном виде.
Как SQL помогает бизнесу
В любой ритейл-сети — Auchan, Walmart, сети аптек — множество баз данных. Каждый, кому это нужно, может «вытаскивать» и использовать данные с помощью SQL — языка структурированных запросов. Он позволяет делать запросы разного типа. Например, вывести список чеков за вчера дороже определенной суммы и посмотреть, на каких кассах их выдавали.
Когда товар купили, привезли, отправили на хранение или продали, база данных обновляется. Нужно быть в курсе изменений, чтобы правильно на них реагировать. Если заканчивается шоколадное мороженое, об этом можно узнать, обратившись к базе данных — и вовремя его докупить.
Доступ к базе данных может быть у многих аналитиков, но не все понимают, как писать запросы, чтобы видеть промежуточные результаты. Они не могут составить ad-hoc отчеты и ждут пересчетов раз в неделю от программистов.
Но если аналитик показывает программистам, что знает про HAVING и SUM и умеет ими пользоваться, доверия к нему будет больше, а доступ — шире (если компания не запрещает).
Какие выводы о внутренних процессах дает SQL
SQL позволяет «вытаскивать» любые данные любых бизнесов — телеком-компаний, банков, перевозчиков. Но сделать это может не каждый. Чтобы погрузиться в базы данных, у пользователя должны быть права и привилегии.
Звоните, например, мобильному оператору, а там говорят: «Здравствуйте, Аня». Откуда они знают ваше имя? Оно высвечивается по номеру телефона. Озвучиваете проблему — операторы делают запрос в базу данных, получают ответы в интерфейсе на экране.
Ответы «выводит» бэкенд, который обращается к базе данных напрямую и сам вытягивает информацию. Он может посмотреть, сколько денег снялось, в результате какого действия, как это действие сочеталось с другими. Узнать о действиях можно только по конкретному пользователю — и только то, что предложено администратором или базой данных.
Меня всегда смешит, когда в шпионских фильмах кто-то садится за компьютер и через две минуты говорит: «Все, я взломал Пентагон». Такого не бывает. В базе данных куча связей — нужно много времени, чтобы понять, где какая таблица и где что хранится.
Приходя на новые проекты, ты два месяца только со всем знакомишься. Тебе говорят: «Вот основная таблица, пять колонок. Остальные 15 узнаешь в течение следующего года». Нет диаграммы на всю стену, где расписаны все связи.
Аналоги SQL
Язык SQL предназначен для реляционных баз данных, а NoSQL — для нереляционных. Если база реляционная, между таблицами есть ссылки. В нереляционой данные хранятся в листах — дата-сетах с ключами хранения.
У каждой из этих систем есть свои преимущества.
Там, где много данных и запросов, — нужен SQL. Возьмем телеком. У корпорации мобильной связи огромное количество абонентов, и база данных NoSQL не справится с таким объемом информации.
NoSQL — для всего, что считывается и сохраняется на ходу. Это промежуточная база данных. Например, наполнение корзины: заходим на сайт, начинаем добавлять покупки. Тут данные хранятся в нереляционной базе. А когда заказ сделан, все переходит в реляционную.
SQL и NoSQL могут существовать параллельно. Возможности передавать данные напрямую нет, но через язык программирования это реально. Допустим, логины и пароли хранятся в нереляционной базе данных, а информация о покупках и дисконтах — в реляционной.
Безопасность SQL для бизнеса
SQL применим к любой сфере бизнеса, где есть данные. Если данные секретны, нужно защищать саму сеть.
Администратор устанавливает базу данных на сервер в серверной, и только он понимает, что именно там стоит. Этого может не знать даже программист — он работает с персонального компьютера по интернету/локальной сети под логином и паролем.
Иногда для работы с базой данных логина и пароля мало. Доступ к таблицам есть, но информация зашифрована. В банке часто говорят: «Никому не сообщайте пароль». Пароли не читают даже сотрудники — они видят кэшированные кракозяблики. Войти в базу, увидеть номер банковской карты, пароль и кодовое слово возможно, только если вы прошли аутентификацию.
На одном проекте мы шифровали персональные данные при помощи 64-битного ключа, который обезличивает имя, отчество и дату рождения. В другой базе данных хранился ключ, позволяющий эти данные дешифровать. Это хорошо для безопасности, но плохо для скорости. Шифрование занимает процессорное время.
Администраторы банков рассказывали мне, что их вызывали в отделение, где «все очень медленно работало». Оказывалось, что у всех уровень доступа — супер-пользователи. Первым делом администратор отнимал у пользователей-аналитиков админские права, затем назначал их только тем, кому это нужно.
Хочешь доступ? Пиши служебную записку с подтверждением руководителя. Привилегии выдавали постепенно, и это решило проблемы с производительностью системы.
Аналитика и SQL
SQL не нужен креативщикам. Он нужен экономисту в банке, который хочет стать ведущим аналитиком. SQL анализирует данные, которые чаще всего хранятся в базе. Нужно понимать запросы и уметь с ними работать.
Аналитик может работать без программистов, пока дата-сетов, которые они подготовили, достаточно для решения задач. Если недостаточно, он говорит: «Мне нужно видеть вот это, хочу, чтобы данные строились по таким правилам». И озвучивает бизнес-требования. Программист говорит: «Я создал восемь новых таблиц, между ними вот такая связь. Они доступны вот так, а новые будут появляться в 3:00 каждый день».
Что нужно, чтобы освоить SQL
Чтобы начать заниматься SQL, достаточно базовой школы математики и понимания, как работают таблицы Excel. Дальше — курсы, тренинги, митапы, книги и вебинары. Чистым гуманитариям освоить эту область сложно.
SQL — это все бекэнд — то, чего ты не видишь. За полдня видеоурока можно научиться делать сайты — первый лендинг будет примитивный, деревянный, но будет. Тут же все за кадром. Вставил строку, увидел «One row inserted» («Одна строка вставлена»). Чтобы проверить, нужно написать запрос, который обнаружит это значение строки с условием.
Чего сейчас не хватает в SQL
Сейчас базы данных переходят в облака. Уже есть решения Microsoft Azure, Amazon Redshift, Google BigQuery, которые ускоряют передачу данных. У предыдущей компании, в которой я работал, было шесть филиалов по всему миру. Серверы стояли в Швейцарии и Китае.
Когда Китай пытался получить данные из швейцарского сервера (а это через интернет), были задержки. Cloud-решения позволяют распределять информацию. Запрос в Европе будет «браться» из Гамбурга, в Америке — из Лас-Вегаса или Сан-Франциско, а в Азии — из Китая.
Но в облаке можно хранить не все. Нельзя размещать телеком — слишком много персональных данных. А если база схлопнется, компании конец. Если в телекоме что-то не работает 20 минут, это плохо (абоненты начинают жаловаться). Полдня — огромная проблема (начинают уходить). День — и оператор может закрываться.
Клауд-решения важны и для таргетированной рекламы. Когда заходите на сайт и смотрите новый смартфон, его реклама «преследует» вас в Facebook. Как это работает? Ваш профиль «прогоняется» по базе данных запросов — и каждый день пересчитывается, где вы были и что делали.
Это требует больших мощностей, но не постоянно. Чтобы сэкономить, продавец купит в облаке новые сервера с бОльшим объемом и мощностями, и справится за 20 минут, заплатив только за них.
Источник: l-a-b-a.com
0 комментариев
Добавить комментарий