Где хранить данные, когда их слишком много
medium

Где хранить данные, когда их слишком много

Выбираем хранилище биг-даты под наши задачи

Биг-дата — так в ИТ называют большие данные: миллионы строк данных. Например:

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

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

Чем отличаются способы хранения данных

Объясняем одной картинкой:

Где хранить данные, когда их слишком много

Простой текстовый документ

Для чего: одноразовые или тестовые проекты.

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

Но единственное, что может такой файл, — это просто хранить данные. В нём нет механизма запросов, чтобы получить только часть данных, или нет способов восстановления данных после неудачной записи. 

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

Эксель-файл

Для чего: разовый анализ данных.

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

Многие используют Эксель как способ выгрузки из базы данных, чтобы передать эти данные потом в другую программу. Мы тоже такое делали, когда строили тепловую карту твитов Байдена и Трампа или визуализировали объёмы строительства в Нью-Йорке.

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

База MySQL

Для чего: хранение данных в системах с небольшой нагрузкой.

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

  • найти все записи по каким-то критериям;
  • удалить ненужные и добавить нужные;
  • выдать все записи в определённой строке или столбце;
  • выполнить любой запрос, который мы сформулируем для неё.

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

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

ClickHouse

Для чего: быстрая аналитика и хранение биг-даты. Очень быстрая.

Эту базу разработали в Яндексе специально для своего продукта — «Метрики» (система аналитики сайтов). В Метрике хранится огромное количество данных, которые нужно было как-то быстро обрабатывать и строить понятные графики, — для этого и придумали ClickHouse.

В этой базе данных используется урезанный язык SQL-запросов, а часть кода написана на C++ для ускорения обработки. В ClickHouse можно получить высокую скорость работы, но для этого нужно разобраться с форматами хранения данных и выучить систему запросов.

Особенность ClickHouse — в нём можно хранить сырые и необработанные данные и получать нужные записи моментально. Новичку разобраться с этой системой сложно, но в отрасли эта база уже стала одним из стандартов.

Hadoop

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

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

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

Что ещё есть

Мы рассказали только про небольшую часть систем хранения больших данных. Ещё есть Teradata, Vertica, MemSQL, Drud и много других — специализированных и систем широкого профиля. Если решите работать с биг-датой, то обязательно про них узнаете.

Корректор:

Ира Михеева

Художник:

Алексей Сухов

Вёрстка:

Кирилл Климентьев

Соцсети:

Виталий Вебер

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Вам может быть интересно
medium