Как синхронизировать схему BigQuery с кодом

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

Я хотел бы понять, как лучше всего согласовать код и схемы для того, что все еще является быстро развивающимися сервисами и схемами.

Мои текущие идеи:

  • используйте что-то вроде Terraform, но я не уверен, как это работает с живыми таблицами, которые необходимо обновить или перенести.
  • добавить в сервис код для проверки/установки схемы, что бы хоть ошибки выдавало, если не автоматизировать процесс

Заранее спасибо!


РЕДАКТИРОВАТЬ:

Чтобы внести больше ясности, просьба в комментариях; мы используем облачные микросервисы для потоковой передачи строк в bigquery, сервисы написаны на python/node. Их основная цель — выполнить небольшое преобразование данных и сохранить их в BQ.

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


comment
Это может помочь: stackoverflow.com/questions/50813574/   -  person T.H.    schedule 24.09.2020
comment
@dendog, на самом деле Bigquery использует различные API и библиотеки, которые могут решить множество задач, даже упростив bq командную строку Инструмент может стать хорошей отправной точкой для выполнения почти всех действий по управлению Bigquery. Можете ли вы подробнее рассказать о первоначальном задании, чтобы получить более подробную информацию об ожидаемой функциональности?   -  person Nick_Kh    schedule 25.09.2020


Ответы (1)


Как и в случае с любой базой данных, вы должны следовать некоторым правилам или рекомендациям, чтобы избежать некоторых ошибок и конфликтов. Например, вам нужно избегать обновления схемы вручную, вы можете сделать это всегда с кодом (что лучше, потому что вы можете следить за изменением схемы благодаря вашей истории git).

Затем у вас может быть побочный процесс, который проверяет схему и обновляет ее новыми изменениями. Или делайте это при запуске (только если вы не работаете без сервера и продолжительность запуска приложения вас не волнует).

Terraform идеально подходит для развертывания инфраструктуры, но гораздо более ограничен для обновления/исправления существующих компонентов. Я не рекомендую это.

person guillaume blaquiere    schedule 24.09.2020
comment
Этот ответ слишком высокого уровня, чтобы хоть как-то помочь. - person dendog; 24.09.2020
comment
Все зависит от того, что вы ищете. Можете ли вы уточнить, что вы хотите знать более или более точно? - person guillaume blaquiere; 24.09.2020
comment
На самом деле то, что я ищу, - это точный ответ :) Я изложил варианты, а вы их повторили, но на самом деле я хотел бы правильного решения с наглядным примером. - person dendog; 24.09.2020
comment
Это слишком сложно. Зависит от вашей рабочей нагрузки, вашего контекста, требований, вашего языка... Будьте точны, я бы тоже мог - person guillaume blaquiere; 24.09.2020
comment
:) :) :) Я не гуглер, я не саппорт, я айтишник с 15+ летним стажем. Вините меня сколько хотите, я пытаюсь вам помочь. Я видел разные случаи, ограничения, которые могут вести вас по-разному. Общее решение бесполезно, важен контекст! У вас есть много библиотек/фреймворков, которые уже пытаются помочь вам в управлении схемой (с MySQL или PostgreSQL); эти библиотеки самоуверенны, и вы можете черпать из них вдохновение, чтобы найти способ, который больше всего подходит для вас. Или добавьте детали! - person guillaume blaquiere; 25.09.2020
comment
Я не виню тебя. Но странно писать ответ, и когда люди заявляют, это не помогает обвинять вопрос. Я также добавил больше деталей, что еще вам нужно увидеть? - person dendog; 25.09.2020