ShimSeongbo / study

0 stars 0 forks source link

Database Link #20

Open ShimSeongbo opened 1 year ago

ShimSeongbo commented 1 year ago

DB 링크(Database Link)에 대한 설명과 사용 시나리오

정의:

DB 링크(Database Link)는 하나의 데이터베이스에서 다른 데이터베이스에 직접 접근할 수 있도록 하는 기능입니다. 주로 Oracle 데이터베이스에서 사용되며, SQL Server에서는 Linked Server라는 유사한 개념이 있습니다. DB 링크를 사용하면 지역 데이터베이스에서 원격 데이터베이스의 테이블, 뷰, 저장 프로시저 등에 쿼리를 수행할 수 있습니다.

사용 상황 예시:

  1. 데이터 통합: 여러 지점 또는 부서가 각각의 데이터베이스를 사용하고 있을 때 중앙에서 통합된 데이터를 조회하거나 분석해야 할 경우.
  2. 실시간 데이터 액세스: 한 데이터베이스의 데이터가 다른 데이터베이스에서 실시간으로 필요한 경우.
  3. 데이터 마이그레이션: 데이터를 한 데이터베이스에서 다른 데이터베이스로 이동시키는 작업을 수행할 때.
  4. 백업 및 복구: 원격 데이터베이스에 백업을 저장하거나 원격 데이터베이스에서 데이터를 복구할 때.
  5. 분산 트랜잭션: 여러 데이터베이스에 걸쳐 트랜잭션을 실행할 경우.

사용 시나리오:

데이터 통합 시나리오:

  1. 회사 A는 서울, 부산, 대전에 지점을 두고 있습니다.
  2. 각 지점은 자체적인 데이터베이스를 운영하고 있습니다.
  3. 본사에서는 모든 지점의 매출 데이터를 통합적으로 보고 싶습니다.
  4. 본사의 데이터베이스에서 각 지점의 데이터베이스에 DB 링크를 생성합니다.
  5. DB 링크를 통해 각 지점의 매출 데이터를 한 번의 쿼리로 조회할 수 있습니다.

실시간 데이터 액세스 시나리오:

  1. 온라인 쇼핑몰은 주문 처리 시스템과 재고 관리 시스템이 분리되어 있고, 각각 다른 데이터베이스를 사용하고 있습니다.
  2. 고객이 주문을 할 때, 실시간으로 재고를 확인해야 합니다.
  3. 주문 처리 시스템의 데이터베이스에서 재고 관리 시스템의 데이터베이스에 DB 링크를 생성합니다.
  4. 고객이 주문을 할 때마다 DB 링크를 통해 실시간으로 재고를 확인하고 주문을 처리합니다.

주의사항:

DB 링크는 편리하지만 보안 측면에서 주의가 필요하며, 네트워크 지연이나 데이터 일관성 등의 문제도 고려해야 합니다.

ShimSeongbo commented 1 year ago

DB 링크를 사용하면 원격 데이터베이스에서 직접 SQL 쿼리를 실행할 수 있어 데이터 전송 작업을 간소화할 수 있습니다. 그러나 DB 링크에는 몇 가지 단점과 고려할 사항이 있습니다.

DB 링크의 장점:

  1. 쉬운 데이터 접근: 원격 데이터베이스에 쉽게 접근할 수 있습니다.
  2. 단순한 로직: 클라이언트 측에서 복잡한 로직을 적용하지 않고도 원격 데이터베이스의 데이터를 필터링할 수 있습니다.

DB 링크의 단점:

  1. 보안 문제: DB 링크를 사용하면 원격 데이터베이스의 접근 정보 (ID, Password)가 노출될 가능성이 있습니다.
  2. 네트워크 지연: 원격 데이터베이스와의 통신이 필요하므로 네트워크 지연이 발생할 수 있습니다.
  3. 트랜잭션 관리: 원격 데이터베이스와 로컬 데이터베이스 간의 트랜잭션을 일관되게 관리하기 어려울 수 있습니다.

대안 방안:

  1. API 사용: 원격 데이터베이스와 통신하기 위한 API가 있다면, 이를 사용하는 것이 더 안전하고 유연할 수 있습니다.
  2. 배치 작업: 필요한 데이터만을 정기적으로 가져와 로컬 데이터베이스에 저장한 후, 이 데이터를 사용하는 방법도 있습니다.

조언:

ERP와의 연계를 고려한다면, DB 링크는 테스트 단계에서 빠르게 구현해 볼 수 있는 좋은 방법일 수 있습니다. 하지만 장기적인 운영을 고려한다면 보안, 트랜잭션 관리, 유지 보수 등을 고려하여 더 안정적인 방법을 선택하는 것이 좋을 수 있습니다.

기술적인 제약과 비즈니스 요구사항을 종합적으로 고려해야 합니다. 부장님과 상의하여 이러한 변수들을 고려한 최적의 해결책을 찾는 것이 좋을 것 같습니다.

ShimSeongbo commented 10 months ago

질문에 담긴 두 가지 데이터베이스 연결 방식(DB Link와 DataSource를 사용하는 방식)은 서로 다른 접근 방식과 목적을 가지고 있습니다.

DB Link

DB Link는 한 데이터베이스에서 다른 데이터베이스로 직접 접근하여 쿼리를 실행할 수 있게 해주는 기능입니다. 이는 데이터베이스 간의 연결을 설정하여 원격 데이터베이스의 테이블에 대한 SQL 쿼리를 로컬 데이터베이스에서 실행할 수 있게 해줍니다.

DataSource를 사용하는 방식 (예: Data Factory 패턴, Singleton Pattern)

이 방식은 애플리케이션 수준에서 데이터베이스 연결을 관리하며, 일반적으로 Connection Pool 을 사용하여 데이터베이스 연결을 재사용합니다. DataSource는 데이터베이스 연결 정보를 캡슐화하고, 필요할 때마다 애플리케이션에 연결을 제공합니다.

비교와 질문에 대한 답변

종합하자면, DB Link는 데이터베이스 간의 직접적인 연결을 제공하는 반면, DataSource를 사용하는 방식은 애플리케이션 수준에서 데이터베이스 연결을 관리합니다. 각 방식은 특정 사용 사례와 요구 사항에 따라 더 적합할 수 있으며, 보안, 성능, 관리 용이성 등을 고려하여 선택해야 합니다.

ShimSeongbo commented 10 months ago

DB Link

데이터소스 커넥션 풀

결론적으로, DB Link는 주로 데이터 통합과 원격 데이터 접근에 유용하며, 각 쿼리는 독립적인 네트워크 연결을 사용합니다. 반면, 데이터소스 커넥션 풀은 연결을 재사용하여 성능을 향상시킬 수 있으며, 특히 높은 동시성과 빠른 응답 시간이 요구되는 환경에서 유리합니다.