database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 8532 게시물 읽기
No. 8532
public 스키마를 사용 안해야 하나요?
작성자
이정원
작성일
2009-10-27 11:46
조회수
8,739

다른DB를 사용하다가 처음 사용하게되었습니다.

기본적으로 다른DB의 경우 사용자가 user1이라고 하면 기본스키마가 user1 이 됩니다.

하지만 제가 알기로는 postgresql은 기본스키마 없이 public 스키마를 사용합니다.

 

 

여기서 지금 미국쪽 컨설팅업체랑 작업을 함께하는데

(참고로 데이터베이스를 2 application에서 접근합니다. 같은 db user를 사용하고)

저희는 다른DB처럼 사용하기 위해서 public스키마만 사용하자고 했고

컨설팅업체는 public 스키마를 사용하는 것은 안좋다고 하면서

아주잘게 7개정도로 스키마는 나누어 났습니다.

 

제가보기엔 시노님도 안되고 뷰를 사용하라는데 그건 성능상 문제가 생길듯 하고

먼가 컨설팅업체에서 이야기하는 것이 틀린듯 한데 postgres관련 지식이 약하다 보니

무엇이든 조그마한 정보라도 알려주세요~~

 

이 글에 대한 댓글이 총 4건 있습니다.

매뉴얼에서 schema 로 찾아보면, schema에 대한 설명이 있습니다. schema를 쓰는 몇가지 이유를 들어놓기도 했네요. 해석해드리면 좋겠지만 직접 보시면, 더 이해가 잘되시리라 생각됩니다.

김대청(dcmru)님이 2009-10-28 10:31에 작성한 댓글입니다.

감사합니다.

 

문서 1레벨 목차에는 information schema 만 있어서 못찾앗는데

ddl부분에 설명이 있네요.

There are several reasons why one might want to use schemas:

•To allow many users to use one database without interfering with each other.

•To organize database objects into logical groups to make them more manageable.

•Third-party applications can be put into separate schemas so they do not collide with the names of other objects.

오라클하고는 권한주는 체계가 조금 틀린듯해서 테스트를 더 해봐야겟지만

예전 방식으로 public 만 사용하는것이 혼자쓸때는 가장 깔끔하네요.

 

위질문의 배경에는 고객은 유지보수를 위해 같은 사용자를 원했고

컨설팅업체는 어플리케이션별로 권한을 주고 싶은듯 한데

업무레벨까지 권한관리를 하려는 듯 약간 오버를 한듯합니다.

(실 데이터 담당자는 논리적으로 나누어도 3개정도면 충분하다고 하네요)

아무튼 잘 이야기로 풀어 봐야 할듯 합니다.

이정원님이 2009-10-28 14:56에 작성한 댓글입니다. Edit

synonym 사용을 단지 코딩을 편하게 하기 위한 table alias 로만 사용한다면,

단지 view로 충분히 대체 가능할 것입니다.

접근 권한 문제도 충분히 view로 가능할 것 같고,

이런 문제들로 성능상에 문제가 발생하지는 않을 것 같습니다.


제가 그외 synonym의 다른 용도를 잘 몰라서,

그 외부업체의 컨설팅이 제가 보기에는 더 타당성이 있어보입니다.


자료관리측면과 서버효율성 문제를 보아도 필요하다면 네임스페이스 분리하는 것이 더 타당하겠죠.


한 예로, public 안에 10만개의 다른 테이블이 존재하고,

그 가운데 하나의 테이블을 select 하려고 할 때의 비용과,

그 10만개 테이블을 10개의 스키마안에 분리해서 보관하고,

그 하나의 테이블을 select 하려고 할 때의 비용은 당연히 후자가 나을 것 같습니다.


서버는 분명  pg_class 카타로그 자료를 모두 메모리에 올려놓고 운영되지 않을 것이고,

그렇다면, 쿼리분석기는 일단 그 테이블의 고유ID를 찾기 위해서 pg_class 테이블을 참조할 것이고,

그 참조할 때의 비용은 당연히 후자가 적게 들 것 같네요.

(안해봐서 모릅니다 - 글 쓰면서 열심히 머리를 굴려보니, 제 생각이 틀릴지도 모르겠다는 생각도 들기도 합니다.)

김상기(ioseph)님이 2009-10-28 15:07에 작성한 댓글입니다.

영문

http://www.postgresql.org/docs/8.4/static/ddl-schemas.html

한글

http://www.postgresplus.co.kr/man/ddl-schemas.html

 

여기는 테이블이 전체적으로 4~50개도 안돼고

관리는 최대한 한곳에서 하도록 고객은 요구하고 권한도 필요없고 하니

이곳에서는 전체를 public으로 가거나 (권장하지 않으니)

이식성을 위해서 유저와 동일한 스키마 하나에서 모든것을 하는게 가장 올바른 답이겠네요.

 

이정원님이 2009-10-28 18:26에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
8536간단한 Postgresql용 쿼리 툴을 소개 부탁드립니다. [3]
박춘삼
2009-11-05
10883
8535Fixed length substring 처리 [2]
박춘삼
2009-11-05
7666
8534엉뚱질문: Oracle 로 사용하던 기업어플에 PostgreSQL 써도? [3]
지나는이
2009-11-04
8615
8532public 스키마를 사용 안해야 하나요? [4]
이정원
2009-10-27
8739
8531PostgreSQL UNIX/Linux 설치 옵션 참고
김대청
2009-10-27
8104
8530한글 데이터를 copy로 내리는데 fixed length로 보이지 않군요. [4]
박춘삼
2009-10-26
7603
8529pgsql의 Data 저장의 관하여 query 속도 문의 [8]
성진
2009-10-23
8822
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.025초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다