hasura metadata 조회

Hyunwoo Lee·2023년 8월 8일
0
post-thumbnail

hasura를 이용해 분산시스템을 구성하다보면, metadata DB를 하나로 통합해야할 때가 있다.

그러나 막상 metadata DB로 지정한 데이터베이스에 들어가보면, 어떠한 데이터도 들어있지 않음을 알 수 있다.

본인의 경우 다음과 같이 metadata DB를 설정해두었다.

HASURA_GRAPHQL_METADATA_DATABASE_URL: postgres://hasura_connector@company.cluster-gabqpvs5581.ap-northeast-1.rds.amazonaws.com:5432/hasura_metadata

해당 DB에 접근해보았다.

template1=> \dt
Did not find any relations.

그러나 어떠한 테이블도 존재하지 않았다.

template1=> SELECT datname FROM pg_database;
  datname  
-----------
 template0
 rdsadmin
 postgres
 hasura_metadata
 template1

혹시나 다른 데이터베이스를 생성한 것 아닐까 확인해보았지만, 데이터베이스가 추가로 생성된 것은 없었다.

Hasura는 일반적으로 사용하는 Public 스키마가 아닌 hdb_catalog라는 새로운 스키마에 메타데이터를 저장한다.

hasura_metadata=>  \dn
   List of schemas
    Name     | Owner  
-------------+--------
 hdb_catalog | hasura
 public      | hasura
(2 rows)

해당 스키마에서 테이블을 이용하기 위해서는 다음과 같이 현재 스키마를 Public에서 hdb_catalog로 변경해주어야한다.

SET search_path TO hdb_catalog;

그런 다음 테이블을 조회해보면 Hasura의 metadata가 저장되는 테이블들을 볼 수 있게 되었다.

template1=> \dt
                         List of relations
   Schema    |                Name                 | Type  | Owner  
-------------+-------------------------------------+-------+--------
 hdb_catalog | hdb_action_log                      | table | hasura
 hdb_catalog | hdb_cron_event_invocation_logs      | table | hasura
 hdb_catalog | hdb_cron_events                     | table | hasura
 hdb_catalog | hdb_metadata                        | table | hasura
 hdb_catalog | hdb_scheduled_event_invocation_logs | table | hasura
 hdb_catalog | hdb_scheduled_events                | table | hasura
 hdb_catalog | hdb_schema_notifications            | table | hasura
 hdb_catalog | hdb_version                         | table | hasura
(8 rows)
profile
10분만 쉬어요

1개의 댓글

comment-user-thumbnail
2023년 8월 8일

개발자로서 성장하는 데 큰 도움이 된 글이었습니다. 감사합니다.

답글 달기