분류 전체보기

· DBMS
pg_dump로 생성한 snapshot의 복원방법을 알아본다.pg_restore 실행pg_restore -d "USER:PASSWORD@HOST:PORT/DATABASE_NAME" -j 8 -d : url 형식으로 연결 정보를 지정하는 옵션이다. 필자의 경우에는 highway92:highway92password@localhost:5432/restore_test 로 지정했다.-j 8 : 한번에 8개 테이블 씩 병렬로 작업한다. max_connection을 확인하자 사용가능한 connection이 최소 8 + 1개이어야 한다.snapshot_directory_name: snapshot 파일들이 저장되어있는 디렉토리 path를 입력한다필자의 경우에는 /home/highway92/psql_dump필자가 실제 ..
· DBMS
데이터 베이스 스냅샷을 위한 pg_dump 기본 사용법에 대한 정리 참고필자의 환경OS : WSL Ubuntu 20.04Postgres Version : 12Target Database : AWS RDS로 Hosting 중Target Postgres Version : 14버전 맞추기스냅샷을 시작하기전에 psql의 버전을 맞추는 것이 좋다. 필자의 로컬에는 12버전이, 대상 데이터베이스는 14버전의 psql을 사용하고 있기 때문에 pg_dump command가 오류를 일으킨다.로컬 버전 확인pg_dump --versionPostgre 14 저장소를 추가한다.sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgd..
· DBMS
들어가기 앞서아래 글에서는 pgbench를 이용해서 테스트를 진행하는 방법을 다룬다.pgbench들어가기 앞서pgbench는 잘못 사용하면 의미 없는 숫자를 만들기 쉽다. 따라서 신뢰할 수 있는 결과를 내기 위한 몇가지 가이드라인이 필요하다.테스트 시간을 충분히 확보 : 적어도 몇 분 ~ 몇 시간의 테스트를 반복적으로 수행하여 결과가 일관적인지 확인해야 한다.-s, -c 설정을 조심 : -c가 -s보다 크면 업데이트 쿼리시 충돌이 발생하고, 많은 트랜잭션이 block되어 동시성 충돌만 측정하는 꼴이 된다.Vacuum 및 autovacuum이 테스트 결과에 영향을 줄 수 있다. 따라서 테스트를 실행 할때 총 업데이트 횟수와 vacuum이 언제 실행되는지 추적하면 더 정확한 결과를 얻을 수 있다.네트워크 지..
· DBMS
들어가기 앞서postgresql을 optimizing하기 위해선 테스트와 파라미터 튜닝이 필요하다. postgresql.conf의 기본값들은 어떠한 환경에서도 무난하게 실행될 수 있도록 구성되어져 있기 때문이다.참조 블로그1 참조 블로그2파라미터max_connections역할 : postgresql서버에 동시에 접속할 수 있는 최대 클라이언트 연결수, 높게 설정할수록 좋을것 같지만 connection 자체가 메모리와 네트워크 리소스를 점유하기 때문에 메모리, cpu를 기준으로 최적값을 찾는게 필요함설정권장 : 기본적으로는 물리코어 * 2 를 기본값으로 세팅하는것이 좋다고 생각한다. 8코어 cpu라면 최소 max_connection 16을 시작으로 조금씩 늘려가며 테스트를 진행한다.(connection p..
· Web개발
Signed URLs 와 Signed Cookie 활용하기Signed URLs : 주로 개별 컨텐츠 (이미지, 비디오 등)의 접근 권한을 관리하기 위해 사용한다.Signed Cookie : 주로 많은 수의 컨텐츠, Premium 회원 컨텐츠처럼 개별이 아닌 묶음을 관리하기 위해 사용한다. Signed URLsSigned URL은 말그대로 서명된 URL이며 특정 리소스의 관리를 위해서 사용된다. 아마도 Cloud sevice(AWS, Google Cloud 등)를 사용해서 개발해본 개발자라면 한번쯤 접해봤을 법하다. 아래는 AWS SDK로 생성한 URL 예시이다. https://example-bucket-name.s3.amazonaws.com/images/example.jpg?X-Amz-Algorithm=..
· Web개발
DNS란Domain Name System의 약자로 사람들이 쉽게 기억할 수 있도록 문자열(www.naver.com)과 네트워크 상에서 사용하는 각종 정보(ip, txt)등을 변환하는 역할을 수행하는 수직적인 이름체계를 뜻한다.DNS의 기본요소도메인 네임 ex) domain.comDNS 레코드 ex) A레코드, AAAA레코드, NS, MX 등네임 서버 ex) BINDDNS의 특징분산구조형 데이터 베이스트리 구조의 도메인 네임 체계대표적으로는 ip주소이지만 그 이외에 다양한 데이터 설정가능도메인 네임의 구조graph TD A[Root] --> B[최상위 도메인 (TLD)] B --> C[차상위 도메인 (Second-level domain)] C --> D[서브도메인 (Subdomain)] ..
· Web개발
Typescript를 사용하다보면 interface가 거의 같은데 조금 다르거나 부분집합이거나 하는 것들을 반복선언하던 시기가 있었다.그렇지만 누구나 알듯이 반복은 좋지않다. 거두절미하고 반복을 줄이는 테크닉들을 알아보자.Partial TypeMapped TypeOmit TypeMapped Typejavascript API에는 map이라는 method가 있다. iterable(순회가능한) 객체들을 순회하는 메서드 인데 이것의 type version이라고 할 수 있다. 예시를 보며 감을 익혀보자적용 전회원 정보를 수정해야 하는 API를 만든다고 가정해보자.이미 기존 코드에서 사용중인 UserProfile interface가 존재한다고 하면function updateUserProfile의 인자는 어떻게 받아..
· Test
자동화가 불가능한 코드는 자동화 테스트 하지말자test-humility 글에 많은 영향을 받았다.앞선 글에서 테스트 하기 힘든 코드를 어떻게 개선할 수 있는지에 대한 설명했다.테스트에 대해 아무런 지식없이 테스트 코드를 작성하려고 했을 때 처음 느낀 감정이 '거의 모든 Function이 DB에서 데이터를 불러와서 로직을 실행하거나 데이터를 저장하는건데 이걸 어떻게 테스트하지...' 였다.=> 앞선 글처럼 테스트 코드를 작성하기 쉽도록 코드를 수정해야 하는 문제다.그렇다면 앞선 예시의 DB에 레코드를 저장하는 Function(createUser)은 어떻게 테스트 할까? 아래 코드를 보자async function createUser(name:Name, email:Email) { return await ..
highway92
'분류 전체보기' 카테고리의 글 목록