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 Tutorials 5263 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 5263
익숙하지 않은 자료형 - oid (Object identifer type)
작성자
정재익(advance)
작성일
2004-03-31 08:59ⓒ
2004-04-03 13:46ⓜ
조회수
9,844

Object identifer (OIDs) 는 PostgreSQL 에서 내부적으로 다양한 시스템 테이블에서 primary key 로서 사용된다. 이 OID 컬럼은 사용자가 정의한 테이블에도 역시 추가된다. (사용자가 테이블 생성시에 WITHOUT OIDS 라는 구문을 명시하기 전에는 그러하다).

Type oid 는 object identifer 를 줄인 말이다. oid 에는 몇개의 alias type 이 있다.: regproc, regprocedure, regoper, regoperator, regclass, 그리고 regtype이 그들이다. Table 8-19 에 대략적인 설명을 해 두었다.

oid type 은 현재 unsigned four-byte integer로 구현되어 있다. 그러므로, 이들은 큰 데이터베이스 뿐만 아니라, 큰 파일 내에서도 유일성을 보장해주지 못한다. 그러므로, 사용자 정의 테이블 내의 OID 컬럼을 primary key 로 사용하는 것은 권장하지 않는다. OID  는 시스템 테이블에 의해서 참조로서 사용되어 지는 것이 좋다.

oid type 그 자체는 비교를 제외하고는 몇가지 연산을 지원하지 않는다. 그러나 이것은 integer 로 casting 되어 질수 있으며, 그 후에 다양한 정수 연산자를 이용하면 된다.  (이렇게 할 경우 signed-대-unsigned 사이에 혼돈할 수 있으니 주의하기 바란다)

OID alias types 은 그 자신을 위한 특화된 입출력 루틴을 제외하고는 어떠한 연산도 지원하지 않는다. 이들 루틴은 type oid 가 사용하는 원래의 수치값 보다는 시스템 object 의 symbolic name 을 출력하고 받아 들일수 있다. Alias types 은 객체를 위한 OID values 을 조회할수 있다: 예를 들면, 사용자들은 mytable 의 OID 를 얻기 위해서 SELECT oid FROM pg_class WHERE relname = 'mytable'. 와 같은 긴 질의를 이용하기 보다는  'mytable'::regclass 와 같이 명시할수 있다. (실제로, 다른 schema 내에서 여러개의 mytable 이라는 동일한 이름을 가지는 테이블이 있을 경우 훨씬 더 복잡한 SELECT 질의를 이용해야 제대로 된 OID 를 얻을수 있다.)

 

Table 8-19. Object Identifier Types

 

Name References Description Value Example
oid any numeric object identifier 564182
regproc pg_proc function name sum
regprocedure pg_proc function with argument types sum(int4)
regoper pg_operator operator name +
regoperator pg_operator operator with argument types *(integer,integer) or -(NONE,integer)
regclass pg_class relation name pg_type
regtype pg_type data type name integer

 

모든 OID alias types 은 schema-qualified names을 받아 들일수 있다. 그리고, 만약 객체가 qualify 되지 않고, 현재의 검색 경로상에서 찾을수 없을 경우, 출력상에 schema-qualified names 을 출력할 수 있다. regprocregoper alias types 은 유일한 입력 명을 받아 들일수 있다.(not overloaded), 그래서 그들은 사용에 제한이 있다.; 대부분의 경우 regprocedure 이나 regoperator 등이 좀더 적절하다. 단항 연산자인 regoperator 는, 사용하지 않는 operand 를 NONE 으로 명시하여 준다.

다른 시스템에서 이용되는 identifier type은 xid, 또는 transaction (약어로 xact를 써준다) identifier 이다. 이것은 system columns인 xminxmax의 자료형이다. Transaction identifiers 는 32-bit quantities이다.

시스템에 의해 사용되는 세번째 identifier type used by the system cid 또는 command identifier 이다. 이것은 system columns 인 cmincmax의 자료형이다. Command identifiers 도 역시 32-bit quantities이다.

시스템에 의해 사용되는 마지막 identifier type 은 tid, 또는 tuple identifier (row identifier)이다. 이것은 system column 인 ctid의 자료형이다. 테이블 내에서 row 의 물리적인 위치를 확인시켜 주는, Tuple ID 는 한쌍으로 되어 있다 (block number, tuple index within block)

(System columns 은 Section 5.2 에 좀더 자세하게 설명되어 있다.)

[Top]
No.
제목
작성자
작성일
조회
5421Slony-1을 이용한 멀티 슬레이브 리플리케이션 [1]
신기배
2004-07-22
6933
5411connectby 함수 사용하기
김상기
2004-07-16
6559
5383DB 인코딩 컨버전 (서버 <-> 클라이언트) [5]
신기배
2004-06-25
10064
5263익숙하지 않은 자료형 - oid (Object identifer type)
정재익
2004-03-31
9844
5245익숙하지 않은 자료형 -bytea (binary data types) [1]
정재익
2004-03-10
9603
5233익숙하지 않은 자료형 - Array [4]
정재익
2004-03-02
10031
5232로또로 배우는 인덱스 :) [2]
김상기
2004-02-27
7160
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.047초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다