ํ…Œ์ด๋ธ” ์Šค๋ƒ…์ƒท ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ณด๊ธฐ

์ด ๋ฌธ์„œ์—์„œ๋Š” INFORMATION_SCHEMA ํ…Œ์ด๋ธ”์˜ TABLE_SNAPSHOTS ๋ทฐ๋ฅผ ์ฟผ๋ฆฌํ•˜๊ฑฐ๋‚˜, bq show ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, tables.get API๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ Google Cloud ์ฝ˜์†”์—์„œ BigQuery ํ…Œ์ด๋ธ” ์Šค๋ƒ…์ƒท์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์„œ๋Š” BigQuery ํ…Œ์ด๋ธ” ๋ฐ ํ…Œ์ด๋ธ” ์Šค๋ƒ…์ƒท์— ์ต์ˆ™ํ•œ ์‚ฌ์šฉ์ž๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

๊ถŒํ•œ ๋ฐ ์—ญํ• 

์ด ์„น์…˜์—์„œ๋Š” ํ…Œ์ด๋ธ” ์Šค๋ƒ…์ƒท์— ๋Œ€ํ•ด ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ Identity and Access Management(IAM) ๊ถŒํ•œ ๋ฐ ์ด๋Ÿฌํ•œ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ์‚ฌ์ „ ์ •์˜๋œ IAM ์—ญํ• ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๊ถŒํ•œ

ํ…Œ์ด๋ธ” ์Šค๋ƒ…์ƒท์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๊ถŒํ•œ ๋ฆฌ์†Œ์Šค
bigquery.tables.get ํ…Œ์ด๋ธ” ์Šค๋ƒ…์ƒท

์—ญํ• 

ํ•„์š”ํ•œ ๊ถŒํ•œ์„ ์ œ๊ณตํ•˜๋Š” ์‚ฌ์ „ ์ •์˜๋œ BigQuery ์—ญํ• ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์—ญํ•  ๋ฆฌ์†Œ์Šค
๋‹ค์Œ ์ค‘ ํ•˜๋‚˜์ธ ๊ฒฝ์šฐ:

bigquery.metadataViewer
bigquery.dataViewer
bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
ํ…Œ์ด๋ธ” ์Šค๋ƒ…์ƒท

ํ…Œ์ด๋ธ” ์Šค๋ƒ…์ƒท์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ

ํ…Œ์ด๋ธ” ์Šค๋ƒ…์ƒท์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” ํ‘œ์ค€ ํ…Œ์ด๋ธ”์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์™€ ๋น„์Šทํ•˜์ง€๋งŒ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ถ”๊ฐ€ baseTableReference ํ•„๋“œ๋Š” ์Šค๋ƒ…์ƒท์ด ์ƒ์„ฑ๋œ ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์„ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.
  • type ํ•„๋“œ์—๋Š” SNAPSHOT ๊ฐ’์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ด๋ธ” ์Šค๋ƒ…์ƒท์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ BigQuery ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    BigQuery๋กœ ์ด๋™

  2. ํƒ์ƒ‰๊ธฐ ์ฐฝ์—์„œ ๋ณด๋ ค๋Š” ํ…Œ์ด๋ธ” ์Šค๋ƒ…์ƒท์˜ ํ”„๋กœ์ ํŠธ์™€ ๋ฐ์ดํ„ฐ ์„ธํŠธ ๋…ธ๋“œ๋ฅผ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค.

  3. ํ…Œ์ด๋ธ” ์Šค๋ƒ…์ƒท ์ด๋ฆ„์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  4. ํ‘œ์‹œ๋˜๋Š” ์Šค๋ƒ…์ƒท ์ฐฝ์—์„œ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ์Šคํ‚ค๋งˆ ํƒญ์„ ํด๋ฆญํ•˜์—ฌ ํ…Œ์ด๋ธ” ์Šค๋ƒ…์ƒท์˜ ์Šคํ‚ค๋งˆ์™€ ์ •์ฑ… ํƒœ๊ทธ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    • ์„ธ๋ถ€์ •๋ณด ํ…Œ์ด๋ธ”์„ ํด๋ฆญํ•˜์—ฌ ํ…Œ์ด๋ธ” ์Šค๋ƒ…์ƒท์˜ ํฌ๊ธฐ, ๋งŒ๋ฃŒ, ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”, ์Šค๋ƒ…์ƒท ์‹œ๊ฐ„, ๊ธฐํƒ€ ์ •๋ณด๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

SQL

ํ…Œ์ด๋ธ” ์Šค๋ƒ…์ƒท์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋ ค๋ฉด INFORMATION_SCHEMA.TABLE_SNAPSHOTS ๋ณด๊ธฐ๋ฅผ ์ฟผ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  1. Google Cloud ์ฝ˜์†”์—์„œ BigQuery ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    BigQuery๋กœ ์ด๋™

  2. ์ฟผ๋ฆฌ ํŽธ์ง‘๊ธฐ์—์„œ ๋‹ค์Œ ๋ฌธ์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

    SELECT
      *
    FROM
      PROJECT_ID.DATASET_NAME.INFORMATION_SCHEMA.TABLE_SNAPSHOTS
    WHERE
      table_name = 'SNAPSHOT_NAME';

    ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • PROJECT_ID: ์Šค๋ƒ…์ƒท์ด ํฌํ•จ๋œ ํ”„๋กœ์ ํŠธ์˜ ํ”„๋กœ์ ํŠธ ID
    • DATASET_NAME: ์Šค๋ƒ…์ƒท์ด ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ ์„ธํŠธ์˜ ์ด๋ฆ„
    • SNAPSHOT_NAME: ์Šค๋ƒ…์ƒท์˜ ์ด๋ฆ„

  3. ์‹คํ–‰์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋Œ€ํ™”ํ˜• ์ฟผ๋ฆฌ ์‹คํ–‰์„ ์ฐธ์กฐํ•˜์„ธ์š”.

bq

Cloud Shell์— ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

Cloud Shell๋กœ ์ด๋™

bq show \
--format=prettyjson \
PROJECT_ID:DATASET_NAME.SNAPSHOT_NAME

๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • PROJECT_ID: ์Šค๋ƒ…์ƒท์ด ํฌํ•จ๋œ ํ”„๋กœ์ ํŠธ์˜ ํ”„๋กœ์ ํŠธ ID
  • DATASET_NAME: ์Šค๋ƒ…์ƒท์ด ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ ์„ธํŠธ์˜ ์ด๋ฆ„
  • SNAPSHOT_NAME: ์Šค๋ƒ…์ƒท์˜ ์ด๋ฆ„

์ถœ๋ ฅ์€ ๋‹ค์Œ๊ณผ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค.

{
  "creationTime": "1593194331936",
   ...
  "snapshotDefinition": {
    "baseTableReference": {
      "datasetId": "myDataset",
      "projectId": "myProject",
      "tableId": "mytable"
    },
    "snapshotTime": "2020-06-26T17:58:50.815Z"
  },
  "tableReference": {
    "datasetId": "otherDataset",
    "projectId": "myProject",
    "tableId": "mySnapshot"
  },
  "type": "SNAPSHOT"
}

API

๋‹ค์Œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ tables.get ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’
projectId ์Šค๋ƒ…์ƒท์ด ํฌํ•จ๋œ ํ”„๋กœ์ ํŠธ์˜ ํ”„๋กœ์ ํŠธ ID์ž…๋‹ˆ๋‹ค.
datasetId ์Šค๋ƒ…์ƒท์ด ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ ์„ธํŠธ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
tableId ์Šค๋ƒ…์ƒท์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

์‘๋‹ต ๋ณธ๋ฌธ์€ ๋‹ค์Œ๊ณผ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค.

{
  "kind": "bigquery#table",
  "etag": "...",
  "id": "myProject:myDataset.mySnapshot",
  "selfLink": "https://content-bigquery.googleapis.com/bigquery/v2/projects/myProject/datasets/myDataset/tables/mySnapshot",
  "tableReference": {
    "projectId": "myProject",
    "datasetId": "myDataset",
    "tableId": "mySnapshot"
  },
  "description": "...",
  "schema": {
    "fields": [
      ...
    ]
  },
  "numBytes": "637931",
  "numLongTermBytes": "0",
  "numRows": "33266",
  "creationTime": "1593194331936",
  "lastModifiedTime": "1593194331936",
  "type": "SNAPSHOT",
  "location": "US",
  "snapshotDefinition": {
    "baseTableReference": {
      "projectId": "myProject",
      "datasetId": "otherDataset",
      "tableId": "myTable"
    },
    "snapshotTime": "2020-06-26T17:58:50.815Z"
  }
}

๋‹ค์Œ ๋‹จ๊ณ„