DBMS별 Schema(스키마) 와 Database와 차이점

 

최근에 회의를 하면서 저를 혼동시킨 용어가 있었습니다. 바로 '스키마!!!!'

원천 시스템의 데이터베이스 분석 미팅을 가지는데, 동료는 스키마라고 표현을 하다 보니 응? 이게 맞는 건가? 라는 생각이 들었습니다. 이전에도 다른 분들이 회의에서 스키마를 데이터베이스와 같은 의미로 언급을 하는 경우가 있었습니다.

 

하지만 그때는 대충 어떤 것을 말하는지 아니깐 넘어갔는데, 이번에는 이게 정확한건가 라는 의문이 계속 들더라고요.

가끔 그런날 있잖아요. 먼가에 확 꽂히는 날이... 그래서 이번에 스키마의 의미와 데이터베이스와의 차이를 아예 정리하자 라는 생각을 가지게 되었죠. 

 

결론부터 말하면 DBMS마다 달랐습니다. 저는 이전에 오라클을 주로 다루고, 동료들은 mariaDB를 이전에 다루다 보니 정확한 의미에 차이가 있었습니다. 사전적인 의미는 마지막에 작성하기로 하고, DBMS별 의미가 어떻게 되는지 확인해보겠습니다.

 

오라클

▶ 오라클에서 스키마는 사용자(USER)가 생성한 모든 오브젝트(테이블, 인덱스, 프로시저 등)를 의미합니다. 사용자와 스키마가 같다고 보는 사람도 있는데, 엄밀히 말해서 다르다고 봐야 되겠죠. 그래서 스키마에 각각의 사용자에게 선택적인 권한을 줍니다.  오라클에서 데이터베이스는 실제 물리적인 데이터베이스를 의미합니다.

 

Mysql/MariaDB

▶데이터베이스와 스키마가 같은 의미로 테이블 등의 오브젝트 집합입니다.

 

PostgreSQL

▶Mysql의 데이터베이스가 PostgreSQL의 스키마입니다. 데이터베이스는 스키마의 상위 개념입니다.

그래서 PostgreSQL는 Mysql과 다르게 데이터베이스가 다르면 완전히 물리적인 분리로 보게 됩니다. 그래서 dblink가 아닌 일반적으로는 다른 데이터베이스의 테이블을 조회 및 조인 등을 할 수 없습니다. 다른 스키마끼리는 가능하고요.

 

MSSQL(SQL Server)

▶MSSQL도 스키마가 데이터베이스의 하위에 속합니다. PostgreSQL과 차이는 같은 서버의 데이터베이스를 완전히 분리하지 않는다. 그래서 다른 데이터베이스의 테이블을 조회 및 조인 가능하다.

SELECT * FROM DB명.스키마명.테이블명



출처: https://sidorl.tistory.com/10 [잇킹 시도르]

+ Recent posts