티스토리 뷰

반응형

로고에 코끼리를 사용하는 것은 '코끼리는 크고 강하고 믿음직하며 기억력이 좋다'는 의미에서 유래했다고 합니다. 이러한 이미지는 Hadoop이나 Evernote도 관련 로고도 이러한 부분에서 로고에 코끼리가 들어갔다고 하네요~

1. PostgresSQL는~

 

PostgreSQL는 오픈소스로 개발된 관계형 데이터베이스 입니다. PostgreSQL은 1996년을 시작으로(1997년, 첫 번째 오픈 소스가 공개) 왕성하게 활동중인 커뮤니티를 통해  계속적인 업데이트가 있습니다. 현재 PostgreSQL은 다양한 영역에서 활용 되고 있고, 다른 RDBMS와의 비교해서할 때도 상위 순위(전체  4위)로 이용되고 있습니다. 특히 일본의 공공영역에서는 "상용은 오라클, 오픈소스는 PostgreSQL"라고 할 정도로 이용이 활발하다고 합니다. 

 

Rank
DBMS
Database Model
Mar
Feb
Mar
1
Oracle 
Relational, Multi-model 
1251.32
-5.51
-70.42
2
MySQL 
Relational, Multi-model 
1198.23
-16.45
-56.59
3
Microsoft SQL Server 
Relational, Multi-model 
933.78
-15.27
-81.52
4
PostgreSQL  
Relational, Multi-model 
616.93
7.54
67.64
5
MongoDB 
Document, Multi-model 
485.66
-2.98
23.27
6
Redis 
Key-value, Multi-model 
176.76
0.96
22.61
7
IBM Db2
Relational, Multi-model 
162.15
-0.73
6.14
8
Elasticsearch
Search engine, Multi-model 
159.95
-2.35
7.61
9
Microsoft Access
Relational
135.43
4.17
17.29
10
SQLite 
Relational
132.18
3.81
9.54

 

대부분의 교육을 위주로 처음 RDBM를 배울 때 MySQL, MarinaDB 등이 손쉽게 접하게 됩니다. 이는 이용하기가 쉽고, 소규모의 사업장이나, 데이터베이스 교육장에서 충분한 성능을 가지기 때문 입니다. 가장 대중적으로 이용되는 PostgresSQL과 MySQL의 가장 큰 차이는 무엇일까요? 두 RDBMS에서 아래와 같습니다. 

항목
PostgresSQL13
MySQL 8
최대 DB 크기(Database Size)
무제한
무제한
최대 테이블 크기(Table Size / 8KB 기준)
32TB
32TB
최대 레코드 크기(Row Size)
16TB
512GB
최대 컬럼크기(Field Size)
1GB
4GB
테이블 당 최대 레크드 개수(Rows per Table)
무제한
무제한
테이블당 최대 컬럼 개수(Column per Table)
1,600
1,017
테이블당 최대 인덱스 개수(Indexes per Table)
무제한
64

PostgresSQL의 가장 큰 장점이라고 하면, 인텍스에 특화된 Partial Index, Parallel Index Scan을 지원한다는 점입니다. 반면에 MySQL은 이러한 기능을 지원하지 않습니다. 초기 사업을 시작하거나 응용을 개발할 때 데이터베이스의 선택은 매우 중요합니다. 

2. PostgresSQL 장점

자 그럼 PostgresSQL에 특장점에 대해서 살펴보도록 하겠습니다.

 

일단 먼저, 다들 아시겠지만 라이센스 비용이 전혀 들지 않는 다는 점입니다.!

 

PostgreSQL은 BSD(Berkeley Software Distribution) 라이센스를 기반으로 개발되었습니다. 그러므로 기업의 입장에서 데이터 양이나 성능의 증가로 인해 증설이 이뤄지더라도 라이센스 문제가 자유로워 부담이 전혀 없습니다.  PostgreSQL은 Perl, Python, Java, 심지어 Bash와 같은 다른 임베디드 언어로 확장될 수 있습니다.

 

BSD란?

BSD는 1977년 부터 1995년까지 미국 캘리포니아 대학교 버클리의 CSRG(Computer System Research Group)에서 개발한 유닉스 프로그램 운영체제 입니다. 오늘날의 BSD라라는 용어는 유닉스 계열 운영체제 계열에서 분기되어 형성된 BSD 파생판을 두루 가리키는 용어로 자리잡혀 있습니다. 즉 PostgreSQL은 오픈 소스 프로젝트이며 소스가 오픈되어 개발되었습니다. 이는 결과적으로 PostgreSQL은 상용 제품이 아니라는 점을 의미하며 모든 사람의 소유할 수 있습니다. 

 

또한 다양한 플러그인이 개발되어 있어 다양한 기능 개선이 가능합니다. PostgreSQL은 Linux, Unix, Mac OS X 및 Microsoft Windows를 포함한 거의 모든 운영 체제에서 실행되며 Raspberry Pi 보드와 같은 상용 하드웨어에서도 실행할 수 있습니다.

 

가장 큰 넓은 영역의 ANSI SQL를 지원합니다. 

 

PostgreSql은 표준에 좀 더 가깝게 발전하고 있으며, SQL:2011 규정에 필요한 179개의 기능 중 160개를 지원해 다른 DBMS 보다 충실성이 높습니다. 이는 오라클보다 높은 수준으로, 다른 DBMS가 PostgresSQL를 벤치마크 하기도 합니다.  PostgreSQL는 RDBMS가 갖춰야 하는 데이터베이스 트랙션의 성질 ACID 모두지원하며 안정성을 갖춘 DBMS 입니다. 특히 데이터의 무결성과 동시성에 매우 강력한 능력을 가지고 있습니다. 

 

즉 원자성(Atomicity), 일관성(Consistency), 독립성(Isolation), 영구성(Durability)을 보장합니다. 상세 내용은 아래를 참고하세요

 

(원자성 - Atomicity) 트랜잭션의 작업 내용이 데이터베이스에 모두 반영되거나, 아예 반영되지 않아야 합니다. 즉, 작업 단위를 일부분만 실행하지 않는다는 것을 의미합니다.

 

(일관성 - Consistency) 트랜잭션이 성공적으로 완료되면 일관적인 DB상태(Datatype이 변하지 않는것 등의 상태 변화가 일어나지 않는것)를 유지해야 합니다.

 

(격리성 - Isolation) 하나의 트랜잭션 작업이 수행 시 다른 트랜잭션 작업이 중간에 수행될 수 없습니다. 즉, 트랜잭션 작업 사이의 간섭이 있어선 안되고, 서로 간섭할 수 없습니다.

 

(지속성 - Durability) 트랜잭션이 성공적으로 완료되면 수행된 트랜잭션은 영원히 반영이 됩니다. commit을 통하여 트랜잭션 작업 내용을 완료할 수 있습니다.

 

다중버전 동시성 제어를 제공합니다. (MVCC)

 

이 개념을 알기 위해선 우선 동시성 제어에 대한 부분을 알아야 합니다. 

 

동시성 제어란?

다수의 사용자가 동시에 DBMS 트랜잭선을 일으켜 상호간섭이 발생하는 사항에서 Database를 보호하는 통제방법을 말합니다. 동시성의 허용은 DBMS의 일관성에 큰 위해를 가하기 때문에 이에 대한 처리는 매우 중요합니다.

다중버번 동시시성(MVCC) 제어란?

 

동시성 제어에 한 방법으로 데이터에 접근하는 사용자는 갱신/변경된 데이터를 다른 그 이전 데이터와 버전을 달리해 관리하고, 이를 기반으로 일관성을 유지하는 방법입니다. PostgresSQL은 이 방식을 지원합니다. 일반적인 RDBMS 보다 매우 빠르게 작동하는 장점이 있습니다. 단점은 사용하지 않는 데이터가 계속 쌓이므로 주기적으로 데이터를 정리하는 것이 요구된다는 점입니다. 물로 PostgresSQL은 Autovaccume을 통해 이를 해소 할 수 있지만, 이 기능도 완벽하게 이 부분을 처리해 내지는 못합니다. 

 

3. PostgresSQL의 단점

PostgresSQL의 대락적인 장점은 알아보았습니다. 그럼 단점도 분명히 존재할 텐데요 단점에 대해서도 알아보겠습니다. 

 

UPDATE 쿼리에 약하다

 

PostgresSQL은 MarinaDB나 MySQL에 비해 업데이트가 굉장이 불안정한 문제를 가지고 있습니다. 이 문제는 UPDATE를 반복적으로 수행해야하는 응용서비스에는 많은 제약을 가져옮니다.

 

메모리 성능이 떨어진다.  

 

모든 새로운 클라이언트 연결에 대해 PostgresSQL은 새로운 프로세스 형식으로 일으킵니다. 각각의 새로운 프로세스에  메모리(약 10MB)가 할당되므로 많은 연결이 있는 경우 메모리가 빠르게 증가합니다. 따라서 읽기가 많은 간단한 작업의 경우 PostgreSQL은 일반적으로 MySQL과 같은 다른 RDBMS보다 성능이 떨어집니다.
 

4. 맺음말

이번 포스트에서는 PostgresSQL의 개요와 장단점에 대해서 알아보았습니다. 사실 알차게 찾아서 정리한다고 열심히 했는데 생각보다 만족스럽지는 못하네요. 계속해서 PostgresSQL에 대해서 연구할 예정이니 많은 관심 부탁드립니다.

 

오늘도 여러분의 더 나은 삶을 응원하면 이만 포스틀 마치도록 하겠습니다.

 

좋아요 구독은 컨텐츠를 제작하는 이에게 큰 도움이 됩니다.

 

마지막으로 유튜브에 있는 PostgresSQL에 대한 동영상을 남깁니다. 

 

https://www.youtube.com/watch?v=Ek7hskYF-x8 

 

 

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함