• Главная
  • DataScience
  • CloudServicesEngineer
  • Поиск
Data Science

OS. Метаданные

Кратко:

  • Метаданные объекта в хранилище представляют собой сведения о его свойствах.
  • Метаданные делятся на пользовательские и системные.
  • Системные метаданные устанавливаются сервисом, пользовательские добавляются и изменяются пользователем.
  • Метаданные используются для сортировки, анализа и поиска объектов.
  • Пользовательские метаданные передаются в хранилище при загрузке объекта в HTTP-заголовках.
  • Имена пользовательских метаданных могут быть указаны в разных регистрах, но после загрузки в хранилище они становятся строчными.
  • Пользовательские метаданные могут быть добавлены или изменены.

Метаданные

На прошлом уроке вы узнали, что у объекта в хранилище есть метаданные — сведения о его свойствах. Метаданные представляются в виде пары «имя: значение». Например, так записывается дата и время загрузки объекта в хранилище:
Date: Fri, 5 Mar 2021 14:00:00 GMT

 

Метаданные бывают пользовательскими (их имена и значения вы добавляете и меняете сами) и системными (их устанавливает сервис). Например, дата создания или последнего изменения объекта, его размер, MD5-хеш — это системные метаданные.

Предположим, клиника хранит в облаке рентгеновские снимки пациентов. К каждому снимку (объекту) вы добавляете метаданные: Ф. И. О. пациента, номер медицинской карты, дату обследования, код диагноза, модель рентген аппарата, Ф. И. О. проводивших обследование специалистов.
Задав много метаданных, вы сможете легко находить, сортировать и анализировать объекты. Например, врачи быстро узнают, какие пациенты получили избыточное облучение, если выяснится, что один из рентген-аппаратов барахлит, или проследят динамику заболеваемости воспалением легких у пожилых женщин с разбивкой по месяцам.
Пользовательские метаданные передаются в облачное хранилище при загрузке объекта в HTTP-заголовках запроса. Имена заголовков с пользовательскими метаданными при этом должны начинаться с префикса x-amz-meta-:
PUT /images/image0349.dat HTTP/1.1
Host: hospital.storage.yandexcloud.net
Content-Length: 1403256
Date: Sat, 20 Mar 2021 14:15:02 GMT
Authorization: *...*
x-amz-meta-Patient-Surname: Petrov
x-amz-meta-Patient-ID: 4536
*...* 

При запросе объекта сервис возвращает метаданные в виде таких же HTTP-заголовков с префиксом x-amz-meta-:

HTTP/1.1 200 OK
Server: nginx
Date: Tue, 23 Mar 2021 10:12:15 GMT
Content-Type: image/dat
Content-Length: 1403256
Connection: keep-alive
Keep-Alive: timeout=60
Accept-Ranges: bytes
Last-Modified: Sat, 20 Mar 2021 14:15:02 GMT
x-amz-meta-patient-surname: Petrov
x-amz-meta-patient-id: 4536
...

Важно! До загрузки вы можете указывать имена метаданных объекта и прописными, и строчными буквами (хоть ABC, хоть abc). Однако после загрузки в хранилище они станут строчными (только abc). Таким образом, хранилище посчитает метаданные с именами Patient-ID и patient-id одинаковыми.

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

 

 

Категория: Cloud Services Engineer
Просмотров: 623

OS. Object Storage и S3-совместимые хранилища

Кратко:

  • Объектное хранилище - облачная система хранения данных произвольного формата, подходящая для хранения видеозаписей, изображений, архивов и резервных копий.
  • Объектное хранилище обеспечивает доступность данных, их защиту от несанкционированного доступа и масштабируемость.
  • Идентификатор объекта - строка, используемая для идентификации объектов в хранилище, а метаданные содержат дополнительные сведения.
  • Объекты в хранилище группируются в бакеты, что позволяет разделять данные разных проектов или пользователей.
  • Объектные хранилища имеют некоторые особенности, такие как взаимодействие с приложениями через HTTP API и невозможность редактирования объектов.
  • В Yandex Cloud доступны три класса хранилищ: стандартное, холодное и ледяное, с разными тарифами на хранение и обращение к данным.
  • S3-совместимость позволяет использовать популярные инструменты для работы с S3-протоколом, такие как S3cmd, AWS CLI, Cyberduck, WinSCP, SDK для Python и Java.
  • Объектное хранилище имеет преимущества, такие как масштабируемость, высокую производительность, отказоустойчивость, метаданные и низкую стоимость хранения данных.

Object Storage и S3-совместимые хранилища

Пару лет назад клиника купила охранную систему видеонаблюдения: несколько десятков видеокамер и сервер, где записи хранятся 28 дней. Однажды главный врач решил, что записи нужно хранить дольше: целый год. Реализовывать проект поручили вам — главному айтишнику клиники. Изучив варианты, вы задумались о хранении видеозаписей в облаке и узнали о такой вещи, как объектное хранилище. Давайте вместе разберёмся, что это такое.
Мы используем разные данные: видеозаписи, изображения, архивы, резервные копии для аварийного восстановления, цифровые библиотеки. Многие из них требуются не постоянно, а время от времени — их нужно куда-то сложить, чтобы легко находить и доставать.
Задумываясь о хранении, мы рассчитываем, что данные:
  • никуда не пропадут;
  • доступны (в идеале — отовсюду, где есть интернет);
  • недоступны для тех, с кем мы не собирались делиться данными;
  • находятся в системе хранения, которую просто расширить.
Кроме того, мы не хотим потратить много денег на хранение и много сил, чтобы поддерживать систему хранения в рабочем состоянии.
Всем этим требованиям отвечает объектное хранилище (англ. object storage) — облачная система хранения данных произвольного формата. В хранилище записываются объекты — по сути, привычные нам файлы. У каждого объекта есть уникальный идентификатор (аналог имени файла) и метаданные (дополнительные сведения). Идентификатор помогает различать объекты, а в метаданных хранятся, например, дата создания и MD5-хеш.
Идентификатор объекта — это строка. Ее часто записывают как путь в файловой системе, используя символ / как разделитель. Например, archive/2020/ivanov/x-ray.jpg. Благодаря этому файловые браузеры при работе с объектами имитируют привычное нам дерево папок. В консоли управления Yandex Cloud тоже есть такая возможность — части пути называются папками. Но важно понимать: на самом деле иерархии в объектном хранилище нет, оно плоское. За счет плоскости достигается большая скорость поиска по сравнению с файловой системой.
Внутри хранилища объекты группируются в бакеты. Это позволяет разделять данные разных проектов или пользователей. У каждого бакета в Yandex Cloud уникальное имя. Переименовать бакет нельзя, поэтому выбирайте имя для бакета с умом.
image
С практической точки зрения объектные хранилища имеют некоторые важные особенности:
  • они рассчитаны, прежде всего, на взаимодействие с приложениями через HTTP API, а не напрямую с пользователем;
  • объекты в них не редактируются. Чтобы изменить объект, придётся загрузить в хранилище новую версию. Это неудобно, если объекты большие или часто изменяются.

Класс хранилища

Размер оплаты за использование объектного хранилища зависит от количества хранящихся данных, числа операций с ними и объёма исходящего трафика. Первый гигабайт данных, первые десятки тысяч операций и первые 100 гигабайт трафика бесплатные.
С учётом требований к длительности хранения объектов и частоте операций с ними вы можете выбрать класс используемого хранилища. В Yandex Cloud таких классов три: стандартное, холодное и ледяное. Более «холодные» классы используются для длительного хранения объектов, к которым обращаются редко. Чем «холоднее» хранилище, тем дешевле хранить в нём данные, но и тем дороже их читать или записывать.
 
Сценарий работы с данными Рекомендуемый класс хранилища Тариф на хранение данных Тариф на обращение к данным
Мало данных, частые запросы (например, аватарки пользователей приложения) Стандартное Самый высокий Самый низкий
Много данных, нечастые запросы (например, резервные копии) Холодное Примерно в 2 раза ниже, чем для стандартного Примерно в 2 раза выше, чем для стандартного
Много данных, очень редкие запросы (например, архивы) Ледяное Примерно в 4 раза ниже, чем для стандартного Примерно в 4 раза выше, чем для стандартного
 
 
 
Стоит иметь в виду, что у ледяного хранилища, в отличие от стандартного и холодного, есть минимальное тарифицируемое время хранения объекта. Оно составляет 12 месяцев. Если удалить объект, который хранился в нём меньший срок, то остаток стоимости хранения будет списан с вашего счёта.
Класс хранилища выбирается при загрузке объекта в бакет. Если этого не сделать, то объект сохранится в хранилище того класса, который выбран для всего бакета.
Класс хранилища для бакета можно изменить в консоли управления. Если объект загружен, изменить его класс хранилища нельзя: можно либо загрузить объект заново, либо задать правило, управляющее жизненным циклом объекта. Настраивать жизненный цикл вы научитесь на практическом занятии.

S3-совместимость

Сервис Yandex Object Storage — S3-совместимое хранилище. Его API совместим с Simple Storage Service API (S3 API), который был создан компанией Amazon в 2006 году и де-факто стал стандартом облачного хранения данных. S3-совместимость позволяет использовать в Yandex Cloud популярные инструменты для работы с S3-протоколом: консольные клиенты S3cmd и AWS CLI, файловые браузеры Cyberduck и WinSCP, библиотеки (SDK) для Python и Java.

Возможности и преимущества объектного хранилища

Объектное хранилище — общепринятый способ хранения неструктурированных данных в облаке. Преимущества объектного хранилища:
  • масштабируемость: размер системы архитектурно не ограничен, она может содержать любой объём данных;
  • более высокая производительность при управлении большими объёмами данных по сравнению с иерархическими файловыми системами;
  • отказоустойчивость: копии данных хранятся в нескольких географически распределённых дата-центрах;
  • метаданные, позволяющие искать, сортировать и анализировать неструктурированные данные;
  • невысокая стоимость хранения данных.
Используйте сервис Yandex Object Storage, чтобы разместить файлы любого формата для своего проекта (приложения или сайта) в закрытом или публичном доступе, хранить объёмные архивы (до 5 терабайт на файл), контролировать доступ к данным и организовать совместную работу с ними.
 
Проверьте себя
Вы используете Yandex Object Storage для хранения архива аудиозаписей. Какой класс хранилища стоит выбрать?
 
Холодное - Правильный ответ
 
Имеет ли смысл положить в объектное хранилище файл с очень большой базой данных SQLite, если к ней идет много запросов на чтение и лишь немного на запись?
 
Нет - Правильный ответ, т.к. данные в хранилище не изменяются
 

 

 

Категория: Cloud Services Engineer
Просмотров: 917

YBD. Выбор базы данных

Кратко:

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

Выбор базы данных

Универсальной базы данных не существует. Выбор зависит от вашей задачи. Вот схема, которая поможет выбрать БД:
image
Предположите, какую базу данных вы бы выбрали для приложения —  многопользовательской онлайн-стратегии в средневековом сеттинге, где можно развивать замки и захватывать территории противников?  Почему?
 
Вопрос о том, какую БД выбрать для своего приложения, зачастую не имеет единственного правильного ответа. На этот выбор будут влиять и особенности стоящей перед вами задачи, и, в какой-то мере, ваши личные предпочтения.
Для ответа на данный вопрос стоит учитывать несколько факторов:
  • возможность легко масштабировать систему;
  • структура данных — если вы планируете активно развивать свое приложение, то она вряд ли будет жёсткой;
  • необходимость реализации транзакций;
  • отсутствие (или очень небольшое число) сложных аналитических запросов;
  • работа под смешанной нагрузкой.

Поздравляем, вы завершили тему «Об управляемых базах данных»

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

 

 

Категория: Cloud Services Engineer
Просмотров: 610

YBD. Нереляционные базы данных

Кратко:

  • Нереляционные (NoSQL) базы данных обеспечивают высокую доступность, быстроту работы и масштабируемость.
  • MongoDB - популярная NoSQL СУБД с открытым исходным кодом, работает с документами и хорошо сочетается с JavaScript.
  • Redis - хранилище данных типа key-value, работает с Lua скриптами, обеспечивает высокую производительность, но имеет ограничения.
  • ClickHouse - столбцовая СУБД, хранит данные в таблицах, имеет высокую скорость работы, но не поддерживает транзакции.
  • Elasticsearch - нереляционное хранилище данных, хорошо масштабируется, но не обеспечивает транзакционную целостность.
  • YDB - разработанная Яндексом распределенная СУБД, основана на реляционной модели, обеспечивает отказоустойчивость и масштабируемость.
  • Apache Kafka - распределенная стриминговая платформа, обеспечивает надежность передачи данных между сервисами.

Нереляционные базы данных

На этом уроке вы узнаете, что такое нереляционные БД и какие из них доступны на платформе Yandex Cloud.
Нереляционные (NoSQL) БД обеспечивают высокую доступность, быстро работают и хорошо масштабируются. Однако зачастую это достигается за счет ограничения транзакционных возможностей, которыми славятся реляционные базы.
В Yandex Cloud входят несколько популярных управляемых нереляционных СУБД.

MongoDB

MongoDB — это масштабируемая документоориентированная СУБД с открытым исходным кодом, самая популярная NoSQL БД в мире.
Данные в MongoDB не организуются в таблицы, как в реляционных БД, а хранятся в документах, которые группируются в коллекции. Это позволяет работать с данными с разными наборами полей: такие данные плохо укладываются в жёсткую структуру таблицы.
image
MongoDB позволяет размещать части БД на разных хостах (это называется шардированием), так что её легко масштабировать.
СУБД хранит данные в документах схожего с JSON формата, поэтому хорошо сочетается с JavaScript-фреймворками и широко применяется при разработке JavaScript-совместимых серверной и клиентской частей приложений. MongoDB входит в стек технологий MEAN (MongoDB, Express.js, Angular.js, Node.js).
MongoDB удобно использовать, например, для хранения каталога товаров или в системах управления контентом.

Redis

Redis (Remote Dictionary Server) — хранилище данных типа key-value (ключ-значение) с открытым исходным кодом.
В key-value хранилище хранятся пары ключей и значений. Ключ в паре — это идентификатор, а значение — любые данные: число, строка или сложный объект.
В Redis вместо SQL в запросах используются скрипты на языке Lua. В отличие от других подобных хранилищ, Redis поддерживает больше типов данных (строки, списки, хеш-таблицы, упорядоченные и неупорядоченные множества, битовые массивы и др.) и операций с ними.
Redis хранит данные в оперативной памяти и благодаря этому обеспечивает очень высокую производительность — миллионы операций в секунду. Это же порождает два принципиальных ограничения. Первое: объём хранимых данных не может превышать размера оперативной памяти. Второе: при сбое сервера всё, что ещё не сохранилось на диск, безвозвратно пропадёт. Так что не стоит использовать Redis в качестве основного хранилища данных.
Эти особенности и определяют задачи, подходящие для Redis: хранение данных сессий в веб-приложениях, кеширование, генерирование таблиц результатов в многопользовательских играх.

ClickHouse

ClickHouse — это столбцовая СУБД для онлайн-обработки аналитических запросов.
Данные в ClickHouse организованы в таблицах и жестко структурированы. Но в отличие от реляционных БД, которые хранят на диске рядом друг с другом значения всех свойств одного объекта (строку таблицы), в столбцовых СУБД рядом хранятся значения одного свойства всех объектов (столбец).
image
Благодаря такому способу хранения можно очень быстро выполнять запросы, в которых исследуются не все свойства объекта, а только некоторые из них. При поиске в строковых БД требуется просканировать всю таблицу, а строки читаются с диска или из памяти целиком, даже если из них нужно взять лишь одну ячейку. В столбцовых БД поиск идет по столбцам, извлекаются только нужные значения.
Выигрыш в скорости особенно заметен на больших объемах данных — СУБД ClickHouse способна читать сотни миллионов записей в секунду. БД горизонтально масштабируется, что позволяет работать с базой размером в несколько петабайт. Язык запросов в ней близок к стандартному SQL.
Ещё одна особенность ClickHouse: эта СУБД не поддерживает транзакции и точечное изменение или удаление записей (данные в базе изменяются и удаляются большими порциями).

Elasticsearch

Elasticsearch — это нереляционное хранилище данных с широким набором функций полнотекстового поиска.
Данные в Elasticsearch хранятся в виде документов в формате JSON. Они автоматически индексируются, размер индекса составляет от 20 до 30% размера БД. Благодаря этому достигается скорость чтения в сотни миллионов записей в секунду. Для взаимодействия с БД используются JSON-запросы в RESTful API, а в качестве языка запросов — Querydsl.
Elasticsearch хорошо масштабируется, что позволяет работать с большими объёмами данных. При этом она не обеспечивает транзакционную целостность, а запись данных в БД и их удаление не отличаются высокой производительностью.
Основное назначение Elasticsearch — полнотекстовый поиск в большом объёме документов. Эта СУБД широко применяется для аналитической обработки больших массивов данных, анализа логов и журналов работы приложений, функций автозавершения и умного ввода текста.

YDB

YDB — это разработанная Яндексом распределённая СУБД. Она относится к типу NewSQL: основана на реляционной модели, но обеспечивает отказоустойчивость, доступность и масштабируемость на уровне NoSQL-решений.
В YDB данные организуются в таблицы, обеспечивается их транзакционное изменение и строгая консистентность, запросы пишутся на диалекте SQL.
При этом YDB изначально разрабатывалась для так называемых OLTP-сценариев (On-Line Transaction Processing). Это задачи, где СУБД должна поддерживать транзакции и консистентность данных, как это делают классические реляционные СУБД, но при этом надёжно и быстро работать с объёмными БД (т. е. иметь возможность масштабироваться) и с большим числом одновременных запросов на чтение и на запись.
YDB может использоваться в двух режимах: режиме бессерверных вычислений и режиме с выделенными виртуальными машинами. Первый режим подходит для небольших систем с незначительной нагрузкой, когда держать виртуальные машины с БД невыгодно с финансовой точки зрения.

Apache Kafka

Apache Kafka — разработка компании LinkedIn, сочетание распределённой БД и очереди сообщений. Формально Apache Kafka определяется как распределённая стриминговая платформа, т. е. система, управляющая потоками данных между сервисами.
Дело в том, что серверные приложения часто состоят из множества сервисов. Одни из них генерируют, а другие получают данные. Важно, чтобы даже сотни тысяч сообщений в секунду передавались надёжно.
Для таких задач и используются очереди сообщений. Одни сервисы генерируют сообщения и отправляют их Apache Kafka, а другие считывают сообщения тогда, когда удобно, и тем самым снижают нагрузку на систему. До доставки сообщения хранятся в БД, которая размещается на нескольких хостах.
 
 
Проверьте себя
 
База данных MongoDB входит в стек технологий:
 
MEAN - Правильный ответ
 
Какую базу данных стоит предпочесть для онлайн-обработки аналитических запросов?

Правильный ответ - ClickHouse

 

 

Категория: Cloud Services Engineer
Просмотров: 856

YBD. Реляционные базы данных

Кратко:

  • В 2020 году каждый день генерировалось около 2,5 эксабайта данных.
  • БД позволяет сохранять данные, извлекать из них те, которые нужны, и передавать пользователю.
  • БД разделяют на реляционные и нереляционные.
  • Реляционная БД - это набор таблиц и связей между ними.
  • Для работы с реляционными БД используется SQL.
  • В сервисах Yandex Cloud представлены популярные реляционные СУБД MySQL и PostgreSQL.
  • Реляционные БД не всегда являются лучшим инструментом.

Реляционные базы данных

По оценкам аналитической компании Domo, в 2020 году в интернете каждый день генерировалось около 2,5 эксабайта (миллиарда гигабайт) данных. Но пока эти данные не собраны и не структурированы, они для нас бесполезны. БД позволяет сохранять данные, извлекать из них те, которые нужны, и передавать пользователю.
Поскольку и данные, и задачи пользователей различны, разработано довольно много систем управления базами данных (примерно 850). На этом и следующем уроках мы коротко расскажем, какие СУБД доступны в Yandex Cloud.
Обычно БД разделяют на реляционные и нереляционные. На этом уроке обсудим реляционные.
 
Реляционная БД — это набор таблиц и связей между ними. Если мы разрабатываем мессенджер, то нам понадобится хранить в БД сведения обо всех пользователях, чатах и сообщениях. Данные нужно чётко структурировать и свести в связанные между собой таблицы. В одной таблице будут данные о пользователях (ID, ник, ссылка на аватарку, номер телефона и город проживания), в другой — о сообщениях (номер, текст, кто, кому и когда написал сообщение, в каком чате, прочитано ли оно). Наша БД будет выглядеть так:
image
Для работы с реляционными БД используется SQL (Structured Query Language — структурированный язык запросов).
В сервисах Yandex Cloud представлены популярные реляционные СУБД MySQL и PostgreSQL. Эти СУБД организуют данные одинаково, но у каждой есть сильные и слабые стороны, которые могут проявляться в прикладных задачах.

MySQL

MySQL — самая популярная в мире СУБД с открытым исходным кодом.
MySQL проста. Ее синтаксис SQL не полностью соответствует последним версиям стандарта и соглашений этого языка, поскольку они усложняют написание запросов. Такой подход позволяет ускорить разработку, но ограничивает возможности тонко настраивать БД и оптимизировать запросы.
Эта СУБД входит в классический набор серверного программного обеспечения LAMP (Linux, Apache, MySQL, PHP). У LAMP есть вариации, в которых одни компоненты заменяются другими. Например, в LEMP вместо Apache используется веб-сервер NGINX.
MySQL популярна среди стартап-команд и PHP-разработчиков, широко используется в проектах разработки программного обеспечения с открытым исходным кодом.

PostgreSQL

PostgreSQL — еще одна СУБД с открытым исходным кодом, вторая по популярности после MySQL.
В отличие от MySQL, простота — точно не девиз PostgreSQL. Синтаксис её языка запросов наиболее полно соответствует последним стандартам SQL и где-то даже обгоняет их. От других СУБД PostgreSQL отличает множество настроек, продвинутая система репликации и поддержка большого числа типов данных.
Еще одно отличие от MySQL — механизм курсоров. Если MySQL отдаёт сразу все запрошенные данные, то PostgreSQL сохраняет ответы на запросы в памяти, а пользователь получает указатель (курсор) для перемещения по данным.
Всё это становится преимуществом при решении сложных задач, когда приходится оптимизировать запросы или тонко настраивать БД. Вместе с тем разнообразные настройки и сложный синтаксис языка запросов требуют более глубоких знаний и опыта.
PostgreSQL используют компании, которые работают над проектами со сложными операциями над множеством данных, избегают vendor lock-in и могут держать в штате специалиста по БД.

Реляционные БД не всегда являются лучшим инструментом, потому что:
  • нестабильно работают при смешанной нагрузке, когда операции чтения и записи соотносятся примерно 1 : 1;
  • плохо масштабируются;
  • данные не всегда укладываются в жёсткую структуру таблицы (пример: медицинские карты пациентов поликлиники).
Из-за этого для решения многих задач используют нереляционные БД. О них мы расскажем на следующем уроке.
 
Проверьте себя
Какие компоненты не входят в набор серверного программного обеспечения LEMP?
 
Apache -
Python -

 

 

 

Категория: Cloud Services Engineer
Просмотров: 635
  1. YBD. Кластеры, масштабируемость, доступность и отказоустойчивость
  2. YBD. Введение
  3. Хранение и анализ данных
  4. Cloud Services Engineer

Страница 15 из 19

  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
© Gantry Framework 2016 - 2026
Developed by RocketTheme exclusively
for Gantry 5.
  • Главная
  • Начало
  • Карта
Back to top