IntroDBeaver는 데이터베이스 관리할 때 정말 유용한 도구다. 특히, ERD(Entity-Relationship Diagram) 추출 기능은 데이터베이스 구조를 시각적으로 확인하거나 팀원들과 공유할 때 아주 유용하다. 평소 개발하고 DB 접속할때는 인텔리제이를 사용하더라도 ERD 추출할때만큼은 DBeaver를 사용하고 있는 이유다.이 글에서는 DBeaver를 사용해 ERD 이미지를 추출하는 방법을 단계별로 알아본다.ERD 추출Step 1: ER Diagram 생성먼저 DBeaver에서 데이터베이스에 접속한다. 그리고 하단의 Project 윈도우에 있는 ER Diagrams 를 우클릭 하고 Create New ER Diagram을 클릭한다.Step 2: 데이터베이스 범위 선택이제 ERD 창이 열렸으..
Data 44
Intro기존에는 주로 자동 증가 숫자 타입을 PK로 쓰곤 했는데, 최근에는 분산시스템에서도 사용 가능한 UUID를 데이터베이스의 기본 키(Primary Key)로 사용하는 경우가 많아지고 있다. 이번 글에서는 UUID및 숫자 타입을 PK로 사용했을때의 장단점을 비교해보고 추가로 대안도 찾아보자각 타입의 특징Numeric ID성능: 숫자 기반이므로 저장 공간이 적고, 데이터베이스 인덱싱 성능도 우수하다. 조회 성능에서 유리하다.단순함: 자동 증가 숫자 방식은 직관적이고, 값을 예측할 수 있어서 관리하기 쉽다.가벼움: Long 타입은 8바이트(64비트)로 UUID보다 작아, 대규모 데이터베이스에서 저장 공간을 절약할 수 있다.UUID고유성과 확장성: UUID는 분산 시스템에서 중앙 서버 없이도 고유 식별자..
Intro 이제 1년 좀 넘은 토이프로젝트가 하나 있다. 와이프만 쓰라고 대충 만들었던건데 한명씩 한명씩 사용자가 늘어서 그래도 지금은 몇명이 쓰고 있고, 요구사항도 꾸준히 반영해서 처음에 비해 기능도 제법 들어갔다. 토이프로젝트라서 처음 시작할 때, 디비 비밀번호를 사용하면 안되는 아주 뻔한 암호로 만들었었는데.. 아침에 일어나 컴퓨터를 켜니 새벽 4시쯤에 Slack 알림이 와있었다. [SpringBoot] 에러 발생시 Slack으로 알림 보내기 를 적용해서 에러가 발생하면 슬랙 알림이 오게끔 적용을 해뒀었는데, 그덕에 문제가 있다는건 발견했다. 그런데 오류를 잘 보면 select 쿼리를 실패한건데. 디비 접속이 잘 안되나? 해서 로그를 살펴보니 테이블이 없단다. 위에 적힌 Request IP를 추적해..
Intro 날렸다 테이블. 없어졌다 데이터. 다행히도 업무에 쓰던 DB는 아니다. 현재는 가까운 가족들만을 고객으로 우리들 끼리만 쓰고 있는 사이드 프로젝트인데, 개발서버랑 운영서버를 헷갈려서 데이터를 유실했다. 다행인건 매일 밤 12시에 자동으로 백업을 해왔다는 것. [MYSQL Docker] 데이터베이스 매일 자동 백업하기 사건이 발생한건 오후 8시쯤이지만, 로그를 보니 오늘 오후 7시쯤 마지막 로그가 찍혀있었다. 00시 ~ 19시 사이의 데이터를 백업해보자. 데이터 복구 바이너리 로그 파일 찾기 요즘엔 많이들 그렇겠지만, mysql을 도커로 돌고 있다. 그래서 도커 컨테이너에 관련된 내용도 조금 포함되는데, 도커를 사용하지 않다고 해도 아래 내용을 따라 진행하는데는 무리가 없을 것이다. 도커 컨테이..
Intro liquibase를 사용하여 데이터베이스 스키마를 관리하고 있습니다. 주로 PostgreSQL을 사용하고 있는데, 테스트를 수행할 때 별도의 외부 DB를 사용하지 않고 인메모리 DB를 이용하고자 했습니다. 그런데 gen_random_uuid와 같은 일부 PostgreSQL 문법과 시퀀스 생성 등이 발목을 잡았습니다. 그래서 인메모리 DB로 테스트를 할 때는 liquibase를 사용하지 않고, data.sql 파일을 불러와서 DB스키마를 생성하려고 합니다. 이를 위해 먼저 liquibase를 사용하여 PostgreSQL 데이터베이스에 초기 데이터를 입력한 다음, 이를 SQL로 추출하여 H2에서 사용 가능하게 편집하려고 합니다. liquibase로 변경 로그를 불러와 SQL로 추출할 수도 있지만,..