[DB] PostreSQL에 대한 소개와 설치 과정

DyungE_100·2022년 4월 12일
0

DB

목록 보기
1/5

0. DBMS(Database Management System)

0.1 DB와 DBMS가 등장한 배경

데이터베이스(Database)란 구조화된 데이터들의 집합이다. 데이터를 통합하고 효율적으로 관리하고 검색하기 위해 이러한 데이터 집합을 만들었는데, 우리는 이 데이터들로부터 우리에게 유의미한 데이터인 '정보(Information)'를 추출할 수 있다.

DBMS가 등장하기 이전에는 파일 시스템으로 데이터를 관리하였는데 데이터의 중복이나 누락, 연관이 없는 데이터들끼리 모여있는 등의 다양한 문제가 있었다.

더 효율적으로 데이터를 관리하기 위해 데이터베이스의 데이터 조작과 관리를 극대화한 시스템 소프트웨어가 나왔는데 그것이 바로 DBMS였다. DBMS는 응용프로그램과 데이터베이스 사이에서 중재하는 역할을 한다. 이로 인해 웹 애플리케이션을 제작할 때, 데이터베이스와 주요 서비스 로직을 분리할 수 있다는 장점이 생겼다.

0.2 데이터 모델의 종류

  • 1) 계층형 데이터 모델 : 트리 구조를 활용하여 데이터 연관성을 계층별로 나누어 부모 자식 관계를 정의하고 데이터를 관리하는 형태의 데이터 모델.

  • 2) 네트워크 데이터 모델 : 그래프 구조 기반 형태의 데이터 모델.

  • 3) 객체 지향형 데이터 모델 : 객체 지향 프로그래밍에서 사용하는 객체 개념을 기반으로 한 데이터 모델. 다만 객체지향 개념을 완벽히 도입하는 게 쉽지 않아 이를 적용한 DBMS는 많이 존재하지 않음.

  • 4) 관계형 데이터 모델 : 가장 많이 알려진 데이터 모델로써, 데이터 간의 관계(Relationship)에 초점을 둔다. 관계형 데이터 모델의 구성 요소는 다음과 같다.

    • 개체(Entity) : 데이터베이스에서 데이터화하려는 사물, 개념의 정보 단위. 관계형 데이터베이스의 테이블(Table)의 개념과 대응된다.

    • 속성(Attribute) : 개체를 구성하는 데이터의 가장 작은 논리적 단위. 관계형 데이터베이스의 열(Column)의 개념과 대응된다.

    • 관계(Relationship) : 개체와 개체 또는 속성 간의 연관성을 나타내기 위해 사용한다. 관계형 데이터베이스에서는 테이블 간의 관계를 왜래키(Foreign Key) 등으로 구현하여 사용한다.

0.3 SQL(Structured Query Language)이란?

쿼리(Query)라는 단어 자체는 질의, 질문을 뜻하지만 웹 클라이언트가 DB에게 특정한 데이터를 보내달라는 요청을 말하기도 한다. SQL이란 RDBMS에서 데이터를 다루고 관리하는 데 사용하는 데이터베이스 질의 언어라고 생각하면 된다. SQL은 사용 목적에 따라 DQL, DML, DDL, TCL, DCL로 나뉘어 구분된다.


1. PostgreSQL

1.1 PostgreSQL이란?

PostgreSQL은 오픈 소스 객체-관계형 데이터베이스 시스템(ORDBMS, Object-Relationship DataBase Management System)으로, Enterprise급 DBMS기능과 차세대 DBMS에서나 볼 수 있을 법한 기능들을 제공한다. 실제 기능적인 면에서는 Oracle과 유사하여, Oracle 사용자들이 가장 쉽게 적응할 수 있는 오픈소스 DBMS라는 평이 많다.


***

1.2 PostgreSQL의 구조

PostgreSQL의 구조는 클라이언트-서버 구조이다. 서버는 데이터베이스 파일들을 관리하며, 클라이언트 대신 들어오는 요청에 대해 데이터베이스 액션을 수행한다. 서버는 다중 클라이언트 연결을 처리할 수 있는데, 서버는 클라이언트의 연결 요청이 오면 각 커넥션에 대해 새로운 프로세스를 생성하고 fork한다.(연결 요청을 마치 포크로 찍어 가져가는 걸 연상시킨다.) 그리고 Postmaster가 fork된 모든 프로세스를 제어한다.


***

1.3 기능 및 제한

PostgreSQL은 기본적인 트랜잭션과 ACID(Atomicity, Consistency, Isolation, Durability)를 지원한다. 또한 ANSI SQL:2008 규격을 상당 부분 만족시키고 있으며, 전부를 지원하는 것을 목표로 현재도 기능적으로 업데이트가 꾸준히 되고 있다.

또한 PostgreSQL은 오래된만큼 상당히 많은 기능을 제공하고 있다.

Vaccum은 PostgreSQL에만 존재하는 고유한 명령어로, 오래된 영역을 재사용하거나 정리해주는 명령어이다. PostgreSQL은 MVCC(Multi-Version Concurrency Control, 다중 버전 동시성 제어) 기법을 활용하기 때문에 특정 Row를 추가 또는 업데이트 할 경우, 디스크 상의 해당 Row를 물리적으로 업데이트 하여 사용하지 않고, 새로운 영역을 할당하여 사용한다.

항목제한 사항
최대 DB 크기(Database Size)무제한
최대 테이블 크기(Table Size)32TB
최대 레코드 크기(Row Size)1.6TB
최대 컬럼 크기(Field Size)1 GB
테이블당 최대 레코드 개수(Rows per Table)무제한
테이블당 최대 컬럼 개수(Columns per Table)250~1600개
테이블당 최대 인덱스 개수(Indexes per Table)무제한

1.4 PostgreSQL의 특장점

  • Portable : ANSI C로 개발되었으며, 다양한 플랫폼(OS)을 지원한다.

  • BSD 라이선스여서, 정책에 따라 소스를 변경하고 그 소스를 숨긴 채 재배포해도 법적으로 문제가 없다. 또한 무료 오픈소스여서 라이선스에 대한 비용 문제가 전혀 없다.
    즉, 영구적인 무료 DBMS이다.

  • 꾸준히 업데이트되고 있는 DBMS이며, 독창적인 자료형과 문법을 가지고 있다.

2. PostgreSQL설치부터 동작까지

2.1 PostgreSQL 설치부터 테이블 생성까지

1) PostgreSQL 설치

https://www.postgresql.org/ 사이트로 들어가서 PostgreSQL을 설치한다. 비밀번호를 설정하고 기억해야 한다.

2) SQL쉘(psql)을 실행하고 데이터베이스 생성 후 연결

처음에는 이렇게 나오는데 Enter키를 누르다보면

이런 식으로 나오게 되고 Username까지는 Enter를 쳐줘도 된다.
기본적으로 Username은 postgres로 설정되는 것으로 보인다.
암호는 설치할 때 기억해뒀던 비밀번호로 입력하면 된다.
그 후,

CREATE DATABASE 데이터베이스 이름;

을 이용하여 데이터베이스를 생성하면 된다.

데이터베이스가 성공적으로 생성된 것을 확인해보고 싶다면,
\l을 입력하면 위와 같이 확인할 수 있다.

이제 생성한 데이터베이스를 연결하고 싶다면 \c 데이터베이스 이름을 치면 해당 이름을 가진 데이터베이스에 연결된다.

3) 테이블 생성

CREATE TABLE 테이블 이름 (Column명 데이터타입, Column명 데이터타입, ...)

위의 코드를 이용하여 테이블을 생성할 수 있다.
테이블을 확인하고 싶다면 SELECT * FROM 테이블명을 이용하면 생성된 테이블을 확인할 수 있다.

cf) 주로 쓰이는 데이터 타입(Data Type, 자료형)

  • Boolean

    • BOOLEAN : 참과 거짓을 저장하는 자료형
  • Character

    • CHAR : 고정형 길이의 문자열 저장.
    • VARCHAR : 가변형 길이의 문자열 저장. 최대 길이는 지정해줄 수 있음.
    • TEXT : 대용량의 문자데이터 저장.
  • Numeric

    • INT : 정수형 데이터 저장, 크기는 4btye.

    • SMALLINT : 정수형 데이터를 저장하지만 크기가 2byte.

    • FLOAT : 실수형 데이터 저장, 크기는 8byte.

    • NUMERIC : NUMERIC(15,2)와 같이 전체 크기와 소수점 자리 지정 가능.

4). INSERT INTO 테이블명 VALUES('데이터', '데이터', ...)을 사용하여 테이블 안에 데이터를 넣어준다.

2.2 DBeaver

DBeaver는 SQL 클라이언트이자 데이터베이스 관리 툴이다. 자바 애플리케이션이여서 JDBC API를 사용하여 JDBC 드라이버를 통해 데이터베이스와 통신한다.

DBeaver의 주요 특징

  • Community Edition 버전을 사용하면 라이센스(Apache License)가 무료이다.

  • 자바/이클립스 기반으로 개발되어서 윈도우, 리눅스, MAC에서 구동된다.

  • JDBC 기반으로 DB를 연결해서 엄청나게 많은 DBMS를 지원한다. (ORACLE, MySQL, Mariadb, Postgresql, Greenplum ... )

  • 개발소스가 공개되어서 버그픽스가 가능하고 새로운 기능을 개발하여 사용이 가능하다.

PostgreSQL을 편리하게 다루기 위해 이 관리 툴을 선택하여 사용하려고 한다.

  1. 먼저 DBeaver를 다운로드 받고 설치한다.

https://dbeaver.io/download/

  1. DBeaver를 실행하고,
    파일 >> 새로 만들기 >> 데이터베이스 연결 >> PostgreSQL 선택 순으로 진행한다.
  1. 그리고 비밀번호를 입력하면 생성했던 데이터베이스에 연결된다. 연결하고자 하는 Database가 따로 있다면 Database의 이름을 따로 적어줘야 한다.

  1. 데이터베이스가 연결이 되었고 생성했던 테이블이 보인다.

쿼리문을 실행할 경우





https://codecamp.tistory.com/2,
https://d2.naver.com/helloworld/227936,
https://mangkyu.tistory.com/71,
https://mozi.tistory.com/565,
https://ko.wikipedia.org/wiki/PostgreSQL,

https://wylee-developer.tistory.com/39,

0개의 댓글