본문 바로가기
  • 개발 로그를 기록하며,
    복습하고 깊이를 더해갑니다.
728x90

Postgres7

[PostgreSQL] 서버 리소스 최적화와 경량화된 Connection Pooling: pgBouncer 도입 PostgreSQL에 직접적으로 연결하지 말고, pgBouncer 커넥션 풀을 통해 관리하자 서버 리소스 최적화회사 내부 개발서버를 장기적으로 운영하다 보면 시간이 흐를수록 캐시, 데이터 등이 계속 쌓이며 Disk, Memory를 차지하게 되고.. 여러 개발자들이 사용하며 다양한 애플리케이션을 구동시키기 때문에 Cpu 사용량도 계속해서 증가 할 것이므로 주기적으로 정리가 필요하다. 1. DB(Elasticsearch) 오래된 데이터 정리 💾서비스에 따라 다양한 Database를 사용하겠지만 Elasticsearch(nosql)와 Postgres(rdb) 기준으로 본다면 Postgres는 RDB로 보통 설정 값이나 사용자 정보 등 일정한 데이터를 저장하는 용도로 사용하기 때문에 시간이 지나도 용량이 매우.. 2025. 9. 20.
[PostgreSQL] 삽입..이미 있다면? 업데이트 (with. upsert) 데이터를 삽입하는데 충돌이 발생하면 충돌한 기존 데이터를 업데이트 하자 💡 UPSERT 란?UPSERT 는 [Insert + Update]의 합성어로, 고유 키나 제약 조건을 기준으로 기존 레코드의 존재 여부를 판단하여 존재하면 UPDATE, 존재하지 않으면 INSERT를 수행하는 복합 연산이다. 주로 사용되는 대부분의 DBMS(MySQL, Oracle, PostgreSQL, Mongo..)에서 고유 문법에 따라 UPSERT를 지원하고 있으며, 실제로도 많이 사용되고 있다. 하지만 SQL 표준 문법은 아니고, 비슷한 기능의 표준 문법으로 Orcle, SQL Server 등에서 MERGE를 지원하고 있다.MERGE는 상대적으로 복잡한 조건의 병합 처리에 유리하고, UPSERT는 충돌 시 단순 삽입/수정 .. 2025. 3. 14.
[PostgreSQL] 데이터베이스 서버 보안 취약점 방지 실제 운영중인 서비스에서 데이터베이스의 보안은 매우 중요한 문제이므로 보안 관련 설정을 적용하여 취약점을 미리 방지하는 것이 좋다.  PostgreSQL은 데이터베이스 보안을 강화하기 위해 다양한 설정과 기능을 제공한다. 특히 서버 설정 파일을 통해 암호화를 적용하고 안전한 인증 방식을 사용할 수 있다. 이 글에서는 PostgreSQL의 pg_hba.conf 파일을 중심으로 hostssl 및 scram-sha-256 설정 방법과 관련 정보를 다룬다. pg_hba.conf 파일 개요경로: /var/lib/postgresql//main/pg_hba.conf역할: PostgreSQL의 호스트 기반 인증(HBA, Host-Based Authentication) 방식을 정의하며, 클라이언트 접속을 제어한다. 1... 2024. 10. 22.
[PostgreSQL] File로 간단하게 DB Table 백업하기 개발하다 데이터를 잠깐 백업해야 하는데 pg_dump..등 사용하기 귀찮을 때 간단하게 백업하는 방법  1. 테이블 데이터 백업하기 (Backup)PostgreSQL에서 COPY + TO 명령어를 사용하여 테이블 데이터를 파일로 백업할 수 있다.#COPY {schema.table} TO '{backup_path}' DELIMITER ',' CSV HEADERCOPY test.user TO '/path/to/backup/user.csv' DELIMITER ',' CSV HEADER;  2. 백업 데이터 복구 (Restore)백업된 CSV 파일을 다시 테이블로 복구하려면 COPY + FROM 명령어를 사용하여 데이터를 복구할 수 있다.# COPY {schema.table} FROM '{file_path}' .. 2024. 10. 22.
[Linux & Postgres] TestServer DB 자동으로 Patch하기 TestServer DB에 DevServer DB 변경사항을 자동으로 반영하여 데이터베이스 구조 동기화  개발을 하면 보통 개발 환경, 운영 환경, 테스트 환경, 데모 환경 등 각각의 이유로 다양한 환경에서 개발하고 테스트하게 된다.이 때 서로 다른 서버의 Database에 각각의 데이터는 유지하되 DDL과 같이 Database(table)의 구조를 변경하는 작업에 대해서는 다른 서버의 Database에 똑같이 변경해줘야 한다. 이러한 작업을 위해서는 Liquibase, Flyway 등 다양한 방법이 있지만 나 같은 경우 개발 환경, 보안, 인증, 리소스 등 다양한 조건을 생각해본 결과 서버에서 직접 Script를 작성하여 동작시키는 것이 가장 좋은 방법이라고 생각하여 Script로 개발하였다. 개발 환.. 2024. 5. 25.
[PostgreSQL] Trigger / Procedure / Function trigger, procedure, function은 각각 무엇을 의미하며 어떻게 사용하는가  trigger와 procedure 그리고 function은 다양한 데이터베이스 관리 시스템(DBMS)에서 사용되는 개념이다. 각 DBMS마다 구현 방식이나 지원 여부에는 조금씩 차이가 있으며, 이 글에서는 postgresql에 대한 개념을 정리했다.   Trigger트리거(trigger)는 특정 이벤트 (INSERT, UPDATE, DELETE)가 테이블에서 발생할 때 자동으로 실행되는 일련의 명령문으로 총이 방아쇠를 당겨 총알을 발사 하듯이 이벤트가 발생했을 때 특정한 기능을 실행시키는 것이다.  트리거는 테이블이나 뷰에 대해 설정된다.BEFORE, AFTER, INSTEAD OF 시점에 설정할 수 있다.행(.. 2024. 5. 25.
[PostgreSQL] postgres 특징? 차이? (Vacuum) PostgreSQL은 높은 확장성, 표준 준수, 유연성, 다양한 데이터 타입 지원 등의 이유와 또 무료라는 장점 때문에 많이 활용되고 있다.  우선 PostgreSQL은 아래와 같은 특징들을 가지고 있다. 1. 오픈 소스: 완전한 오픈 소스 데이터베이스로, 커뮤니티에 의해 활발하게 개발 및 유지보수 되고 있다. 오픈 소스이기 때문에 무료로 사용할 수 있으며, 소스 코드를 수정하여 자신만의 버전을 만들 수 있다. 2. 표준 준수: SQL 표준을 엄격하게 준수하기 때문에 다른 SQL 데이터베이스와의 호환성과 이식성이 높다. 3. 확장성 및 유연성:  사용자 정의 데이터 타입, 함수, 연산자, 도메인 등을 쉽게 추가할 수 있다.  JSON 데이터 타입을 지원하여 NoSQL 기능도 제공한다. 4. ACID 준수.. 2024. 3. 17.
728x90