ProgramingTip

카탈로그, 스키마, 사용자 및 데이터베이스 인스턴스 관계 관계

bestdevel 2020. 12. 29. 07:44
반응형

카탈로그, 스키마, 사용자 및 데이터베이스 인스턴스 관계 관계


여러 공급 업체 (Oracle, SQL Server, DB2, MySQL 및 PostgreSQL)의 데이터베이스를 비교 대상 개체를 고유하게 이미지하는 방법과 카탈로그가 필요합니까? 예를 들어, Java의 DatabaseMetadata에서 최소한 카탈로그와 스키마 fooPattern을 지정해야합니다.

카탈로그가 데이터 스토리지의 추상화에 결함이 있다는 사실입니까?


Oracle에서 :

  • 서버 인스턴스 == 데이터베이스 == 카탈로그 == 동일한 실행 엔진에 의해 관리되는 모든 데이터
  • 스키마 == 데이터베이스 내의 네임 스페이스, 사용자 계정과 동일
  • 사용자 == 스키마 소유자 == 명명 된 계정, 스키마와 동일, 데이터베이스에있는 수있는 사용자, 스키마를 소유하고 가능한 다른 스키마에서 개체를 사용하는
  • 실행중인 서버에서 개체를 구매하기 위해 (스키마 이름 + 개체 이름)이 필요합니다.

PostgreSQL에서 :

  • 서버 인스턴스 == db 클러스터 == 동일한 실행 엔진에 의해 관리되는 모든 데이터
  • == 카탈로그 == 동일한 db 클러스터의 다른 데이터베이스와 격리 된 db 클러스터 내의 단일 데이터베이스
  • 스키마 == 데이터베이스 내의 네임 스페이스
  • 사용자 == 데이터베이스에 허용되는 수있는 명명 된 계정, 된 각 데이터베이스의 개체를 식별 적으로 소유 및 사용
  • 실행중인 서버에서 개체를 구매해야합니다 (데이터베이스 이름 + 스키마 이름 + 개체 이름).

MySQL에서 :

  • 서버 인스턴스 == 카탈로그로 아직없는 데이터베이스 세트 만
  • 데이터베이스 == 스키마 == 카탈로그 == 서버 내의 네임 스페이스.
  • 사용자 == 명명 된 계정, 서버에 연결하고 하나 이상의 데이터베이스에서 개체를 사용할 수 있습니다. 소유 할 수 없음 -소유권 개념 없음
  • 실행중인 서버에서 개체를 구매하기 위해 (데이터베이스 이름 + 개체 이름)이 필요합니다.

Microsoft SQL Server에서 :

  • 서버 인스턴스 == 관리되는 데이터베이스 집합
  • 스페이스 == 서버 내의 네임 스페이스 한정자, 거의라고 한정 데이터베이스
  • 스키마 == 소유자 == 데이터베이스 내 네임 스페이스, 데이터베이스 역할에 연결됨, 기본적으로 만 dbo사용됨
  • 사용자 == 명명 된 계정, 서버에 연결하고 하나 이상의 데이터베이스에서 개체를 사용할 수 있습니다 소유 할 수 -스키마가 소유자로 작동 함

  • 실행중인 서버에서 개체를 보유하고 있습니다 (데이터베이스 이름 + 소유자 + 이름).

따라서 귀하의 질문에 대한 답변은 다음과 있습니다.

  1. 개체를 발견하는 데 카탈로그 이름이 필요한지 여부는 구현에 따라 달라집니다. "카탈로그", "스키마"및 "데이터베이스"의 의미는 구현마다.

  2. 예, 카탈로그는 데이터 저장소의 추상화입니다. 자체 포함 된 격리 된 네임 스페이스로도 정의 될 생각하지만 모든 SQL 엔진이 수행하는 것이 아닙니다.

  3. 데이터베이스스키마 는 모든 공급 업체에서 매우 잘 정의됩니다. 카탈로그 는 "데이터베이스"(적어도 Oracle 및 Postgres에서)와 동의어, "스키마"와 동의어 둘 다에입니다. 카탈로그 라는 용어 는 종종 메타 데이터 수집 (일명 시스템 테이블)을 의미합니다.


DB2의 경우 스키마가 네임 스페이스로 사용됩니다. 따라서 데이터베이스에서 데이터베이스에서 개체를 고유하게 떠오르는 구매 대상 * schema.object_name *이라고 말하면됩니다. 이것은 멀티 테넌시를 달성하는 매우 편리한 방법입니다. 데이터베이스의 각 테넌트에 스키마를 스키마를 도입합니다. 이를 통해 보안 및 관리 부서에서 우려 사항을 잘 분리 할 수 ​​있습니다. 단일 DB2 데이터베이스에 32K 스키마를 사용할 수 있습니다.

DB2의 카탈로그는 데이터베이스에 대한 메타 데이터를 포함하는 시스템 테이블 모음입니다. 일반적으로 카탈로그 개체에 직접 액세스하는 것은 나쁜 습관으로 처리됩니다. API (예 : JDBC)에서 제공하는 기능을 사용하여 카탈로그 및 포함 된 메타 데이터를 탐색하는 것이 가장 좋습니다.

DB2에는 다른 추상화 계층이 있습니다. 머신 머신에서 여러 DB2 인스턴스를 사용할 수 있습니다. 각 인스턴스는 256 개의 별도 데이터베이스 (각각 32K 스키마 포함)를 관리 할 수 ​​있습니다. 서버의 DB2 인스턴스 수는 사용 가능한 메모리 양에 최대 만 제한됩니다. 한 시점에 Amazon EC2 m1.large에서 실행되는 120 개의 DB2 인스턴스 (각각 하나의 데이터베이스와 10 개의 연결 포함)가 있습니다. 단일 서버에 DB2를 사용하고 있습니다. 마이그레이션하려는 새 버전을 테스트 할 때 유용합니다. 올바른 설치로 전환하는 것을 종종 잊지 버림에도 불구하고 혼란 스럽습니다.


filiprem의 게시물에서 mysql에 대해 여기에 언급 된 내용이 있습니다. 다음 링크에 따라 mysql에서 jdbc 카탈로그는 데이터베이스에 해당합니다. jdbc 스키마는 지원되지 않습니다.

참조 URL : https://stackoverflow.com/questions/7942520/relationship-between-catalog-schema-user-and-database-instance

반응형