Озеро данных Snowflake для доступа к неструктурированному контенту и управления им

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

Что ж… ваше желание только что исполнилось, потому что Snowflake представляет доступ к неструктурированным данным с помощью своих возможностей озера данных.

Теперь вы можете наслаждаться той же самой современной масштабируемостью, безопасностью и почти нулевым сервисом управления всеми неструктурированными данными (видео, изображения, файлы документов, 3D-чертежи и многое другое) к которым ваши приложения должны получить доступ или обработать.

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

Для работы с файлами требуется другой набор API-интерфейсов, безопасность файлов и папок совершенно другая, и требуется настройка и поддержка AMI и других собственных правил, которые сильно отличаются от доступа на основе ролей (RBAC), который к которым вы привыкли при работе с базами данных SQL. Это представляет другой набор библиотек, интеграций, людей для управления доступом и многое другое. Вам нужен сложный набор инструментов, API и наборов навыков для управления неструктурированными данными для ваших приложений.

Возможности озера данных Snowflake с неструктурированным доступом к данным меняют все это, и все становится намного проще, проще, масштабируемее и безопаснее. Вы получаете:

  1. Простой доступ к SQL Query для запросов к вашим файлам и структурам каталогов, чтобы вы могли выполнять сложные запросы к именам файлов и папок и присоединять их к другим реляционным таблицам в вашей базе данных.
  2. Драйверы Snowflake SQL (JDBC, ODBC и т. д.) со встроенными возможностями для автоматического сжатия, шифрования и прямой загрузки любого файла в озеро данных Snowflake с помощью команды SQL PUT. Это автоматически обеспечивает шифрование end-2-end без каких-либо других инструментов.
  3. Любой загружаемый файл всегда шифруется в состоянии покоя с помощью Snowflake.
  4. Защитите загружаемый контент с помощью правил безопасности RBAC, которые могут быть предоставлены существующим идентификаторам пользователей Snowflake, что идентично защите любой реляционной базы данных. Один набор пользователей и один набор средств безопасности для защиты как реляционных таблиц, так и ваших неструктурированных данных.
  5. Возможность использовать драйверы Snowflake или работать без драйверов с API SQL в ваших приложениях для доступа как к реляционным таблицам, так и к вашим неструктурированным данным.
  6. Возможность безопасного доступа к содержимому этих файлов с ограниченными по времени URL-адресами доступа поверх полного шифрования end-2end.

Давайте посмотрим, как это работает и какие функции доступны:

  • Во-первых, вам нужно создать внутреннюю или внешнюю стадию для хранения файлов в вашем озере данных. Internal Stage — это хранилище BLOB-объектов, полностью управляемое и защищенное с помощью Snowflake, а External Stage — это то, чем вам придется управлять.

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

  • После загрузки вы можете просмотреть список всех файлов в озере данных (или вложенных папках) с помощью простой команды LS.

  • Простой список файлов — это круто, но нам нужно больше… Snowflake позволяет вам просматривать структуру файлов/папок озера в виде таблицы базы данных и выполнять запросы к ней, чтобы получить гораздо более детализированную информацию. Вы можете запустить простой SELECT и использовать функцию DIRECTORY(), чтобы получить гораздо более гибкий способ доступа и запроса содержимого. Вы можете выполнить SELECT из DIRECTORY(), чтобы увидеть все файлы, как мы сделали с командой LS.

  • или многое другое, например, добавив предложение WHERE для файлов с определенными именами и размерами данных. Обратите внимание на столбец FILE_URL. Это позволяет вам быстро получить доступ/загрузить файл непосредственно из пользовательского интерфейса Snowflake.

Очевидно, вы не заинтересованы в доступе к файлам из пользовательского интерфейса Snowflake. Вам нужен доступ из ваших приложений.

Давайте рассмотрим доступные вам функции для доступа к содержимому озера данных вне пользовательского интерфейса Snowflake. Это функции SQL, которые вы можете запускать из своих приложений, чтобы получить доступ к любому неструктурированному содержимому в озере данных Snowflake.

  1. BUILD_SCOPED_FILE_URL(): возвращает URL-адрес, к которому доступ может получить только пользователь, выполнивший эту функцию с помощью метода SQL API, и URL-адрес будет быть действительными только в течение 24 часов.

2. BUILD_STAGE_FILE_URL(StageName, FilePath): возвращает URL-адрес, к которому может получить доступ любой пользователь, прошедший проверку подлинности (у которого есть доступ RBAC к этому ресурсу) с помощью SQL API, а URL-адрес не имеет НЕТ ОГРАНИЧЕНИЙ ПО ВРЕМЕНИ.

3. GET_PRESIGNED_URL(StageName, FilePath, DurationSeconds): возвращает временный URL-адрес, к которому можно получить доступ из любого источника без необходимости аутентификации в Snowflake. URL-адрес имеет встроенный токен временного доступа, и срок действия доступа истечет в зависимости от количества секунд, указанного в параметрах. В этом случае мы создаем URL-адрес доступа к файлу для нашего приложения, который будет активен только в течение 30 секунд. Таким образом, мы можем быстро предоставить доступ к любому приложению, чтобы быстро загрузить контент и лишить доступа. Отличный способ получить прямой доступ и загрузить содержимое из блокнотов по науке о данных, клиентских приложений и т. д. без необходимости использовать Rest API.

Вот и все!!! Это все, что вам нужно, чтобы получить доступ к любому файлу, хранящемуся в озере данных Snowflake.

Конечно, это было бы не так здорово, если бы вы не могли использовать ту же безопасность базы данных RBAC для управления доступом к содержимому озера данных. Вы можете предоставить доступ ЧТЕНИЕ/ЗАПИСЬ к этим этапам озера данных так же, как вы предоставляете права любой таблице SQL.

Вы можете либо использовать новый пользовательский интерфейс Snowsight

или используйте SQL напрямую.

После применения защиты он будет контролировать, кто может просматривать файлы, если вы пытаетесь выполнить или использовать выходные данные функций BUILD_SCOPED_FILE_URLилиBUILD_STAGE_FILE_URL. Это также будет контролировать, кто может использовать команду PUT для загрузки файлов на определенные внутренние этапы.

Вот дополнительная информация и дополнительные функции, которые охватывают поддержку неструктурированных данных в Snowflake.

https://docs.snowflake.com/en/user-guide/unstructured-intro.html

Что ж, это краткое 10-минутное введение ко всем интересным материалам, которые вы можете делать с озером данных Snowflake и поддержкой неструктурированных файлов. Подумайте обо всех дополнительных слоях кода и сложности, которые вы можете удалить из своих приложений и рабочих нагрузок обработки данных, когда речь идет о доступе к изображениям, видео, документам и многому другому.