2017-12-20 4 views
0

마이크로 서비스 백엔드 용으로 Postgres를 사용하고 있으며 데이터베이스는 작고 (ish) 단순하도록 설계되었습니다. 라이브Postgres 함수에서 명시 적 스키마 접두사를 사용하는 이유는 무엇입니까?

  1. :

    우리는 우리의 데이터베이스에있는 네 개의 스키마가 모든 기능, 테이블 등 응용 프로그램에서 사용을

  2. utest : 단위는
  3. testframe을 테스트 : 단위 테스트 기능/프레임 워크
  4. testdata : 공통 테스트 데이터를 생성하는 함수

데이터베이스를 제품 출하시 '라이브'스키마가 유지되고 모든 테스트 스키마가 삭제됩니다.

내 질문은 : '라이브'스키마의 함수가 명시 적으로 '라이브'를 사용하는 이유가 있습니까? 테이블을 참조하고 다른 함수를 호출 할 때 스키마 접두사?

Google 검색을 많이 한 후 스키마 접두어를 사용하여 명시 적으로 인수를 지정하는 데 어려움을 겪고 있습니다.

감사합니다. 모든 의견을 보내 주시면 감사하겠습니다.

+0

'show search_path; '의 결과는 무엇입니까? – Abelisto

+0

show search_path는 항상 프로덕션 환경에서 "live"를 반환합니다. – MrSuaveh

답변

0

항상 스키마 이름으로 개체를 한정하는 것은 실수로 다른 스키마의 같은 이름을 가진 다른 개체를 사용할 수 없도록하는 좋은 방법입니다. 예를 들어 스키마 pg_catalog은 항상 search_path에 있으므로 시스템 개체를 선택할 수 있습니다.

관련 문제