익명 사용자
로그인하지 않음
토론
기여
계정 만들기
로그인
IT 위키
검색
PostgreSQL
편집하기 (부분)
IT 위키
이름공간
문서
토론
더 보기
더 보기
문서 행위
읽기
편집
원본 편집
역사
경고:
로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다.
로그인
하거나
계정을 생성하면
편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.
스팸 방지 검사입니다. 이것을 입력하지
마세요
!
== 특징 == ; 장점 제품의 장점은 아래와 같다. * '''휴대가 쉽다''' : 포스트그레스큐엘은 안시 시(ANSI C)로 개발되었으며, 지원하는 플랫폼의 종류로는 [[윈도우]], [[리눅스]], 맥 OS/X, [[유닉스]] 등 다양한 플랫폼을 지원한다. * '''신뢰할 수 있다''' : 트랜잭션 속성인 ACID(Atomic Consistent Isolated Durable)에 대한 구현 및 다중 버전 동시성 제어(multi version concurrency control)가 가능하며, 로우 레벨 라킹 등을 구현할 수 있다. * '''확장 가능성이 넓다''' : 포스트그레스큐엘의 멀티 버전에 대해 사용이 가능하고 대용량 데이터 처리를 위한 테이블 파티셔닝과 테이블 스페이스 기능 구현이 가능하다. * '''보안성이 높다''' : 데이터베이스 보안은 데이터 암호화, 접근 제어 및 감시의 3가지로 구성된다. 호스트-기반의 접근 제어, 오브젝트-레벨 권한, [[SSL]](Secure Sockets Layer) 통신을 통한 클라이언트와 네트워크 구간의 전송 데이터 암호화를 지원한다. * '''복구성과 가용성이 높다''' : 스트리밍 레플리케이션을 기본으로, 동기식/비동기식 상시 대기 방식(Hot Standby) 서버를 구축할 수 있다. 왈 로그(WAL Log) 아카이빙 및 핫 백업(Hot Back up) 장치를 통해 시점복구(Point in time recovery)가 가능하다. * '''상용제품보다 앞선 기술지원이다''' : pg_upgrade를 통해 업그레이드를 할 수 있으며, 웹 또는 C/S 기반의 [[그래픽 사용자 인터페이스]](GUI) 관리 도구를 제공하여 모니터링 및 관리는 물론 튜닝까지 가능하고, 사용자 정의 프로시듀얼(Procedural)로 [[펄]], [[자바]], [[PHP]] 등의 스크립트 언어 지원이 가능하다.<ref name="망"></ref> * '''라이선스 부담을 해소했다''' : 라이선스 침해 등의 컴플라이언스 이슈로 비용 부담을 해소했다. * '''데이터베이스 운용에 따른 비용 최소화이다''' : 운영 및 튜닝 활동을 최소화 하도록 제품을 설계했고, 비용 효과적인 교육 프로그램을 제공한다. 이 외에도 사용자 관점의 장점으로는 우수한 제품 신뢰도, ACID 및 트랜잭션 지원, 다양한 인덱싱 기법 지원, 유연한 전 텍스트 검색 기능, 동시성 성능을 높여주는 다중 버전 동시성 제어 기능, 다양하고 유연한 복제 방식 지원, 다양한 프로시져 지원, 다양한 인터페이스 언어 지원, 질 좋은 커뮤니티 지원 및 엔터프라이즈 급 지원, 잘 만든 문서 및 충분한 메뉴얼 제공, 다양한 확장 기능과 확장 기능 개발 용이성 등이 있다.<ref>다우기술 OSS사업팀, 〈[http://event.rockplace.co.kr/wp-content/themes/renownedmint/pdf/PostgreSQL_Postgres%20Plus.pdf PostgreSQL / Postgres Plus]〉, 《다우기술》</ref> ; 구조 클라이언트/서버 모델을 사용한다. 서버는 데이터베이스 파일들을 관리하며, 클라이언트 애플리케이션으로부터 들어오는 연결을 수용하고, 클라이언트를 대신하여 데이터베이스 액션을 수행한다. 서버는 다중 클라이언트 연결을 처리할 수 있는데, 서버는 클라이언트의 연결 요청이 오면 각 커넥션에 대해 새로운 프로세스를 포크한다. 그리고 클라이언트는 기존 서버와의 간섭 없이 새로 생성된 서버 프로세스와 통신하게 된다.<ref name="망"></ref> 포스트그레스큐엘 데이터베이스는 특정한 구조를 가지고 있다. 포스트 > 서버 > 데이터베이스 > 테이블 > 사용자이다. * '''포트''' : 포트의 정의는 네트워크 서비스나 특정 프로세스를 식별하는 논리 단위이다. 각 포트는 번호로 구별되며 이 번호를 포트 번호라고 한다. 포트 번호는 IP 주소와 함께 쓰여 해당하는 프로토콜에 의해 사용된다. Logical connection place(논리적인 접속장소를 나타내는 이정표)이다. 컴퓨터에서 무언가를 찾을 때 접근할 수 있도록 연결해주는 역할을 한다. 포스트그레스큐엘 앱에서 서버 세팅을 누르면 내 데이터의 포트를 확인할 수 있다. 디폴트 값은 5432이고 바꿀 수도 있다. 연결이라고 표현했지만 사실 컴퓨터 입장에서는 위의 정의처럼 식별자에 가깝다. * '''서버''' 데이터가 저장되는 장소이다. 포스트그레스큐엘 앱에서 화면을 좌측으로 확장하고, + 버튼을 누르면 새로운 서버를 생성할 수 있게 되고 포트 번호가 부여된다. 통상적으로 서버의 자원들에 접근할 수 있도록 하는 작업이 호스팅이다. * '''데이터베이스''' 앱에서 확인할 경우 서버 내에 생성한 데이터베이스들이 그래픽 사용자 인터페이스로 표시된다. 터미널에서 커맨드로 접속 시 \c를 통해 원하는 데이터베이스에 접속할 수 있다. * '''테이블''' 데이터베이스 내에는 여러 개의 테이블이 있으며, 테이블은 행렬로 구성된다. 각각의 테이블이 관계성을 갖고 저장, 조작, 검색 되는것이 관계형 데이터베이스이다. * '''사용자''' 처음 psql path 설정 시 저장된 것에 따라 아래와 같이 확인된다.<ref name="c">chloe, 〈[https://blog.naver.com/yeeun_0401/221735141871 Postgresql 포스트그레: 데이터의 구조]〉, 《네이버 블로그》, 2019-12-12</ref> name=# \c You are now connected to database "name" as user "name". name=# \c test you are now connected to database "test" as user "name".<ref name="c"></ref> 다음은 포스트그레스큐엘의 [[고가용성]](High Availability) 구성 종류이다. * '''공유 디스크 페일오버''' : 하드웨어 기능을 이용하는 방식으로 하나의 디스크 영역을 여러 서버가 공유하는 방식이고, 데이터베이스 사본을 1개만 유지함으로써 동기화 오버헤드를 방지한다. 디스크 영역에 장애가 발생할 경우 운영 서버와 대기 서버를 모두 사용할 수 없고, 운영 서버 실행 중에는 대기 서버가 공유 디스크 영역 사용 불가, 대기 서버는 어떠한 형태로도 활용 불가능하다. 네트워크를 이용해 데이터를 주고받는 저장장치이다. * ''' 파일 시스템(블록 장치) 레플리케이션''' : 하드웨어 기능(디스크 복제)을 이용한 복제 방식이고, 데이터베이스 운영으로 데이터 파일에 변경상황이 발생할 경우 다른 서버에 동기화한다. 운영 서버의 변경과 동일한 순서로 대기 서버를 복제하며 액티브-멀티 스탠바이로 많이 활용하고, 9.0 미만의 버전에서 많이 사용하던 방식이다. 대표적인 리눅스 [[솔루션]]으로 분산 복제 블록 장치(DRBD)가 있다. * '''트랜잭션 로그 전달''' : 운영서버의 미리 쓰기 로그를 대기서버로 전달하여 복제하는 방식으로 파일 기반 복사(Log Shipping) 방식과 스트리밍 복제 방식 그리고 두 가지를 혼용하는 방식을 사용할 수 있다. 9.0 이후 버전부터 공식 지원하고, 웜 예비 시스템/상시 대기 방식 서버가 운영 가능, 대기 서버를 리드 온리 데이터베이스로 활용이 가능하다. 또, 다중화 구조가 가능하다. # '''파일 기반 복사''' : WAL 파일 하나의 용량은 16MB이고, 트랜잭션에 의해 용량이 가득 채워지면 로그-스위치가 일어난 후 이전 파일을 슬레이브로 전송한다. 비동기 방식을 사용하며 슬레이브에서는 WAL 파일에 기록된 트랜잭션을 적용하여 마스터와 동기화한다. 마스터 서버가 깨졌을 경우, 슬레이브로 전송하지 못한 WAL 파일의 트랜잭션은 복구할 수 없다. 즉, 로그-스위치 시점부터 깨짐 현상이 일어난 시점까지의 데이터를 손실할 수 있다. # '''스트리밍 복제''' : 9.0 버전부터 공식 지원하고, 마스터 서버의 WAL 파일에 트랜잭션이 기록되면 해당 내용을 WAL 센더라는 프로세스가 슬레이브로 스트림하고, 슬레이브의 WAL 리시버 프로세스가 이를 받아 슬레이브에 트랜잭션을 적용하여 동기화하는 비동기 방식이며, 마스터의 트랜잭션 커밋과 슬레이브의 변경 표시 간에 약간의 지연이 발생할 수 있지만 파일 전송 기반 방식보다 미미한 수준이며 네트워크 상태에 따라 지연시간이 거의 없을 수 있다. * '''트리거-베이스 마스터-스탠바이 복제''' : 트리거 방식으로 마스터 서버의 데이터 변경에 관련된 모든 사항을 스탠바이 서버로 비동기 전송한다. 데이터 정의어(DDL) 복제는 지원하지 않고, 스탠바이 서버를 리드 온리 데이터베이스로 활용한다. Slony-I가 대표적인 솔루션이며 테이블 단위 복제 및 마스터-멀티 스탠바이가 가능하다. * '''스테이트먼트-베이스드 복제 미들웨어''' : 모든 질문 액션을 중간 미들웨어에서 데이터베이스 서버로 전달하는 방식이고, 모든 서버에서 쓸 수 있지만 한 서버에서만 읽기가 가능하다. 라이트 오버헤드(보통 30% 정도)가 발생할 수 있다. random(), CURRENT_TIMESTAMP, sequences를 사용할 때 서버에 따라서 다른 값이 될 수 있어, 이런 기능을 사용할 때는 특정한 한 서버만 지정하여 사용하는 식의 방법이 필요하다. 이와 같은 방법이 힘들 경우에는 그냥 마스터-스탠바이 구조로 사용하면 문제없다. * '''비동기 멀티-마스터 복제''' : 상시 연결을 유지하지 않는 서로 다른 시스템에서의 복제 방법이다. 각각의 서버는 독립적으로 운영되어야 하며, 주기적으로 비동기 방식으로 서버 동기화한다. 멀티 마스터 구축이 가능하고, bucardo가 대표적인 솔루션이다. * '''동기식 멀티-마스터 복제''' : 자료 변경에 대한 트랜잭션을 모든 서버로 전송하고, 자료 변경이 빈번한 환경에서는 잠금 유발로 인한 성능 저하가 발생한다. 싱글 서버를 사용할 때보다 쓰기 성능이 저하될 수 있다. 포스트그레스큐엘에서는 제공되지 않는 방식이다.<ref>Jiny, 〈[https://cafe.naver.com/psqlmaster/137 (HA) 1. PostgreSQL HA종류]〉, 《네이버 카페》, 2018-07-05</ref> ; 기능 관계형 데이터베이스 관리 시스템의 기본적인 기능인 트랜잭션과 ACID(Atomicity, Consistency, Isolation, Durability)를 지원한다. 안시:2008 구격을 상당 부분 만족시키고 있으며, 전부 지원하는 것을 목표로 계속 기능을 추가하고 있다. 포스트그레스큐엘은 기본적인 신뢰도와 안정성을 위한 기능뿐만 아니라 진보적인 기능이나 학술적 연구를 위한 확장 기능도 많이 가지고 있는데, 포스트그레스큐엘의 주요 기능은 네스트화 트랜잭션(세이브 포인트), 시점 복구, 온라인/핫 백업, 병렬 복원, 룰 시스템(질 재구성 시스템), 비-트리, 알-트리, 해시, 기스트 메소드 인덱시즈(GiST method indexes), 다중 버전 병행 수행 제어, 테이블 스페이스, 프로시듀얼 언어, 스키마 정보, I18N, L10N, 데이터베이스 & 열 수준 데이터 정렬, [[배열]], [[XML]], 범용 고유 식별자(UUID) 타입, 자동 증가(수열), 비동기식 복제, 리밋/오프셋, 전문 검색(Full text search), SSL, [[IPv6]](Internet Protocol Version 6), 키/값 스토리지, 테이블 인헤리턴스(Table inheritance) 등이 있다.<ref name="망"></ref> :{|class=wikitable width=800 |+<big>'''항목별 제한사항'''</big> !align=center|항목 !align=center|제한사항 |- |align=center|최대 데이터베이스 크기<br>(Database Size) |align=center|무제한 |- |align=center|최대 테이블 크기<br>(Table Size) |align=center|32TB |- |align=center|최대 레코드 크기<br>(Row Size) |align=center|1.6TB |- |align=center|최대 컬럼 크기<br>(Field Size) |align=center|1GB |- |align=center|테이블당 최대 레코드 개수<br>(Rows per Table) |align=center|무제한 |- |align=center|테이블당 최대 컬럼 개수<br>(Columns per Table) |align=center|250~1600개 |- |align=center|테이블당 최대 인덱스 개수<br>(Indexes per Table) |align=center|무제한 |}<ref name="망"></ref> ; 개발 프로세스 포스트그레스큐엘의 개발 프로세스 모델은 소수 주도의 커뮤니티 기반 오픈 소스 프로젝트이다. 이는 리눅스, [[아파치]], [[이클립스]] 프로젝트와 같이 소수의 관리자와 다양한 개발자 그리고 다수의 사용자가 프로젝트 구성원을 이루고 있으며, 소수의 관리자 그룹(Core Team)은 다수의 사용자로부터의 요청과 피드백을 수집(우선순위를 정하기 위해 투표 방식을 활용하기도 한다)하여 제품의 방향을 결정하고 코드의 최종 승인 및 릴리스 권한을 행사한다([[마이에스큐엘]] 또는 [[제이보스]]와 같은 기업 관리형 개발프로세스와는 다른 모델로 분류된다). 개발자 그룹은 코드 커미터, 코드 개발자/기여자로 구성되어 있으며 이들은 미국, 일본, 유럽 등의 여러 나라에 분포되어 있다. 다양한 개발자들에 의해 개발된 코드는 다양한 리뷰 과정과 코어 팀의 승인을 거처 제품에 반영이 된다. 커뮤니티에서는 오래전부터 사용해오던 메일링 리스트가 주로 사용되고 있으며, 매뉴얼을 포함한 다양한 문서들이 공식 홈페이지에서 잘 관리되고 있다.<ref name="역"></ref>
요약:
IT 위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는
IT 위키:저작권
문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다.
저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소
편집 도움말
(새 창에서 열림)
둘러보기
둘러보기
대문
최근 바뀜
광고
위키 도구
위키 도구
특수 문서 목록
문서 도구
문서 도구
사용자 문서 도구
더 보기
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보
문서 기록