김상기, 2016. PostgreSQL ! ! !
좋은 !
BSD 라이선스 FreeBSD vs Linux PostgreSQL vs MySQL Redis vs MongoDB Fork & Merge vs Branch & Merge
좋은 ! 어후...촌스러워...;; 아니, 클래식하다고 해두지 뭐....^^
20년 전통의 역사 PostgreSQL 이름이 등장한 지 20년 1986년 POSTGRES 프로젝트가 시작점 배포절차가 전형적인 BSD SW임 - 커미터, 컨 트리뷰터, 커밋페스트 9.0 스트리밍 리플리케이션의 구현 과정, 9.1 fdw 랩퍼 정착 과정, 9.3 백그라운드 워커
좋은 ! Hahaha Money! Money! Money!
오픈소스SW 도입, 비용절감 벤더 기반 상용 데이터베이스의 SW 구매비용 과 유지 비용 vs 커뮤니티 기반 공짜 데이터베 이스 도입 또는 전환과 유지 비용 문제 개발자, 운영자 수급 문제 (머니. 머니? 머니!) 하드웨어 스케일업 비용 - 백업 저장소, 메모 리, 트랜잭션 로그 보관을 위한 빠른 저장소
좋은 !
확장성 CREATE EXTENSION
 http://pgxn.org CREATE FUNCTION CREATE AGGREGATE CREATE TYPE CREATE OPERATOR CREATE FOREIGN DATA WRAPPER
좋은 !
어벤저스 세상에 있는 오픈 소스 데이터베이스 가운데 가장 진보한 데이터베이스 EnterpriseDB FUJITSU Enterprise Postgres Greenplum 그 외 수 많은 postgres fork database
나쁜 !
오류문 postgres=# select '케잌';
 ERROR: invalid byte sequence for encoding "EUC_KR": 0x9f 0xe5 postgres=# select cast('2016-06-31' as date);
 ERROR: date/time field value out of range: "2016-06-31" postgres=# select 1/0;
 ERROR: division by zero postgres=# select * from t limit 0,10;
 ERROR: LIMIT #,# syntax is not supported
나쁜 !
장애분석 보고서를 위해 구글, 스택오버플로워, 메일링 아카이브, 공식 문서 (구글 번역기) vi src/backend/postmaster/autovacuum.c gdb
 (gdb) attach 15640
 (gdb) bt
나쁜 !
학습 비용 A4 용지 3천 쪽 분량의 공식 문서
 (성경책이 2천 페이지 정도) PostGIS 확장 모듈의 공식 문서도 6백 쪽
 
 
 
 
 
 
 
 

나쁜 !
TLDP를 넘어서는 독해력 글자 뿐인 문서 - docbook sgml 우주 평행 이론을 바탕으로 하는 타임라인 복구 유전자 알고리즘을 바탕으로 하는 쿼리 최적화 소설 쓰는 explain 결과 릴레이션, 튜플, 애트리뷰트
나쁜 !
진보를 표방한 비주류
이상한 ! 오 프레들드 그런트버글리 오 아윌 랜디 인디 가블로드
그들만의 글자들 연산자: ~, ~*, #, @-@, <->, |&>,?-|, @>, @@, #>>, -|-, ... 자료형: 도형, 네트워크, 간격, XML, JSON 반경 1km 내에 있는 주차장 찾기
 where p <@ earth_box(ll_to_earth(?, ?) , 1000)
이상한 !
헷갈리는 해석 "너무 크면 성능이 떨어지고, 너무 적어도 성능이 떨어진다" - redo log size "너무 잦으면 낭비고, 너무 드물면 비용이 커진다" - autovacuum 설정값들 "똑똑하다던 최적화기는 통계 정보가 없어 바보가 되고" - auto analyzer의 지능적인 수행 "공짠데 개발자는 낯선 DB니 돈 많이 달라 하고"
이상한 !
부모가 여럿 create table 아빠1 ();
 create table 아빠2 ();
 create table 아빠3 ();
 create table 엄마 (); create table 자녀 () inherits (아빠1, 아빠2, 아빠3, 엄마);
이상한 ! 피고 성소단은 감히 내게 복종할 것을 거부하였고, 
 무죄를 입증할 근거가 하나도 없음으로
 유죄를 선고한다.
그들만의 규칙 CREATE RULE Read Committed 기본 격리 수준 select 'a' <> 'a '
이상한 !
우버는 왜 MySQL을 PostgreSQL의 다중키 인덱스 사용시 Heap Only Tuple 업데이트 문제 제기
 - key-value 모델링으로 갈거면, HOT 쓸 수 있는데다, value가 json이면, jsonb gist 인덱 스도 쓸 수 있었을 텐데 쿼리 기반 복제 - 논리 디코딩 기능 메이져 버전 업그레이드 문제 - 진보의 숙명
관련 국내 홈페이지 http://database.sarang.net http://postgresql.kr/ https://facebook.com/groups/postgres.kr http://pgday.postgresql.kr/
PostgreSQL 이야기

PostgreSQL 이야기