Oracle을 사용하다보니 테이블 대신 Synonym을 쓰는 경우가 종종있던데 왜그런걸까?
Synonym을 사용하는 이유
- 접근 편의성: 사용자가 객체의 소유자와 위치를 명시할 필요 없이 간단한 이름으로 객체에 접근할 수 있다.
- 보안 및 권한 관리: Synonym을 통해 원본 객체의 세부 정보를 숨기고, Synonym에 대한 권한을 제어함으로써 보안을 강화할 수 있다.
- 어플리케이션 독립성: 테이블이나 다른 객체의 위치가 변경되더라도 Synonym을 사용하면 어플리케이션 코드를 변경하지 않고도 동작할 수 있다.
- 다중 스키마 간의 호환성: 여러 스키마 간의 객체 접근을 간단하게 만들어 준다.
예시
예제 시나리오
- 스키마 구성: sales, hr, finance
- 테이블: sales 스키마에 orders 테이블이 있고, hr 스키마에 employees 테이블이 있으며, finance 스키마에 transactions 테이블이 있습니다.
Synonym 생성
1. 공통 데이터 접근을 위한 Synonym 생성:
- sales.orders 테이블에 대한 Synonym:
CREATE SYNONYM common_orders FOR sales.orders;
- hr.employees 테이블에 대한 Synonym:
CREATE SYNONYM common_employees FOR hr.employees;
- finance.transactions 테이블에 대한 Synonym:
CREATE SYNONYM common_transactions FOR finance.transactions;
2. Synonym 사용:
- 부서 직원이 common_orders Synonym을 사용하여 sales 데이터 접근 :
SELECT * FROM common_orders;
- hr 데이터 접근:
SELECT employee_id, first_name, last_name FROM common_employees WHERE department_id = 10;
- finance 데이터 접근:
SELECT transaction_id, amount FROM common_transactions WHERE status = 'completed';
3. 권한 관리:
- Synonym을 통해 특정 사용자가 데이터에 접근할 수 있도록 권한을 부여 :
GRANT SELECT ON common_orders TO user_a;
GRANT SELECT ON common_employees TO user_b;
GRANT SELECT ON common_transactions TO user_c;
Oracle을 사용하다보니 테이블 대신 Synonym을 쓰는 경우가 종종있던데 왜그런걸까?
Synonym을 사용하는 이유
- 접근 편의성: 사용자가 객체의 소유자와 위치를 명시할 필요 없이 간단한 이름으로 객체에 접근할 수 있다.
- 보안 및 권한 관리: Synonym을 통해 원본 객체의 세부 정보를 숨기고, Synonym에 대한 권한을 제어함으로써 보안을 강화할 수 있다.
- 어플리케이션 독립성: 테이블이나 다른 객체의 위치가 변경되더라도 Synonym을 사용하면 어플리케이션 코드를 변경하지 않고도 동작할 수 있다.
- 다중 스키마 간의 호환성: 여러 스키마 간의 객체 접근을 간단하게 만들어 준다.
예시
예제 시나리오
- 스키마 구성: sales, hr, finance
- 테이블: sales 스키마에 orders 테이블이 있고, hr 스키마에 employees 테이블이 있으며, finance 스키마에 transactions 테이블이 있습니다.
Synonym 생성
1. 공통 데이터 접근을 위한 Synonym 생성:
- sales.orders 테이블에 대한 Synonym:
CREATE SYNONYM common_orders FOR sales.orders;
- hr.employees 테이블에 대한 Synonym:
CREATE SYNONYM common_employees FOR hr.employees;
- finance.transactions 테이블에 대한 Synonym:
CREATE SYNONYM common_transactions FOR finance.transactions;
2. Synonym 사용:
- 부서 직원이 common_orders Synonym을 사용하여 sales 데이터 접근 :
SELECT * FROM common_orders;
- hr 데이터 접근:
SELECT employee_id, first_name, last_name FROM common_employees WHERE department_id = 10;
- finance 데이터 접근:
SELECT transaction_id, amount FROM common_transactions WHERE status = 'completed';
3. 권한 관리:
- Synonym을 통해 특정 사용자가 데이터에 접근할 수 있도록 권한을 부여 :
GRANT SELECT ON common_orders TO user_a;
GRANT SELECT ON common_employees TO user_b;
GRANT SELECT ON common_transactions TO user_c;