Рейтинг:0

Как синхронизировать метаданные GCP Cloud Storage Bucket с базой данных?

флаг us

У меня есть большое количество объектов, в настоящее время около 1 миллиона, хранящихся в облачном хранилище GCP. Объекты добавляются со скоростью 1-2 тысячи в день. Я хотел бы эффективно выполнять запросы для поиска объектов в корзине на основе метаданных для этих объектов, включая инфикс/суффикс имени файла, дату создания, класс хранения и т. д.

Cloud Storage API позволяет выполнять поиск по префиксу имени файла (документы), но обратный вызов занимает несколько секунд. Я могу выполнять инфиксные запросы с помощью gsutil, нравиться gsutil ls gs://my-bucket/foo-*-bar.txt, но это еще медленнее. Кроме того, эти запросы рассматриваются Операции класса А, которые несут расходы.

Вместо того, чтобы использовать API Cloud Storage для поиска в моей корзине, я подумал, что могу добавить список всех объектов в моей корзине в базу данных, такую ​​как Bigtable или SQL. База данных должна синхронизироваться со всеми изменениями в корзине, по крайней мере, при создании или удалении объектов, а в идеале — при изменении, изменении класса хранения и т. д.

Каков наилучший способ добиться этого?

Рейтинг:2
флаг cn

Первый шаг — спроектировать таблицу и столбцы для базы данных, определить, как будут храниться метаданные, спроектировать операторы запроса и операторы обновления.

Затем внедрите триггеры облачного хранилища, чтобы уведомить службу, которую вы записываете для обработки событий из облачного хранилища. Cloud Functions и Cloud Run часто используются для обработки событий. В рамках обработки события ваш код будет обновлять базу данных.

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

Ваш вопрос не содержит деталей. Лучше использовать числовые операторы вместо У меня есть большое количество объектов, хранящихся в корзине облачного хранилища GCP.. Для меня это означает как минимум десятки миллионов объектов. Ваш вопрос не включает информацию о том, как быстро происходят изменения в облачном хранилище, или фактические запросы, которые вам необходимо выполнить.

Имейте в виду, что Cloud Storage — это плоское пространство имен. Концепция иерархии (папки/каталоги) эмулируется в программном обеспечении. Если вы храните пространство имен в базе данных так же, как и в облачном хранилище, производительность может быть не лучше.

Я несколько раз реализовал ваш тип дизайна для AWS, Google Cloud и Azure. Если вам действительно не нужна сложность системы, управляемой событиями, я рекомендую время от времени просматривать корзину хранилища и создавать простую текстовую электронную таблицу, которую можно обрабатывать с помощью grep, awk и т. д.

флаг us
Спасибо за ответ! Я отредактировал свой вопрос, чтобы добавить больше цифр. Cloud Storage Triggers — жизнеспособное решение; Я просто надеялся, что есть более нестандартное решение.

Ответить или комментировать

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