분류 전체보기(85)
-
[Error] DETAIL: There are 2 other sessions using the database.
PostgreSQL을 사용하고 있는데 DROP DATABASE를 해야하는 상황에서 발생한 에러이다. 전체 에러의 의미는 해당 데이터베이스에 다른 사용자 혹은 세션이 엑세스 하고 있다는 뜻이다. 일반적으로 데이터베이스에는 여러 사용자가 접근할 수 있지만 데이터베이스는 하나의 세션에 의해 동시에 접근되는 것을 허용하지 않는다. 즉 현재 데이터베이스에 이미 두 개의 세션이 존재하고 있다는 의미이다. 데이터베이스를 삭제하기 위해서는 활성화 된 세션을 먼저 강제로 종료시켜주어야 한다. select pg_terminate_backend(pid) from pg_stat_activity where datname = 'DB명'; pg_terminate_backend ---------------------- t t 해당 ..
2023.04.13 -
[Oracle] 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기
문제 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 대여 시작일을 기준으로 2022년 8월부터 2022년 10월까지 총 대여 횟수가 5회 이상인 자동차들에 대해서 해당 기간 동안의 월별 자동차 ID 별 총 대여 횟수(컬럼명: RECORDS) 리스트를 출력하는 SQL문을 작성해주세요. 결과는 월을 기준으로 오름차순 정렬하고, 월이 같다면 자동차 ID를 기준으로 내림차순 정렬해주세요. 특정 월의 총 대여 횟수가 0인 경우에는 결과에서 제외해주세요. Pseudo Code 1. 대여 시작일을 기준으로 2022년 8월부터 2022년 10월까지 총 대여 횟수가 5회 이상인 자동차를 구하는 SELECT문 출력 - 2022년 8월부터 2022년 10월까지 -> START_DATE 날짜변환, b..
2023.04.01 -
[Django] Django에서 fixture 사용
Fixture 일반적으로 데이터베이스의 초기 데이터나 테스트 데이터를 쉽게 생성하고 로드할 수있게 해주는 도구이다. 데이터베이스에서 내보낸 JSON 또는 XML 형식의 데이터를 이용하여, 다른 데이터베이스에 데이터를 이전하거나, 초기 데이터를 적용하는 데 사용할 수 있다. Dump & Load fixture는 dumpdata와 loaddata 관리 명령을 사용하여 작업할 수 있다. dumpdata 명령은 현재 데이터베이스에서 데이터를 추출하고, loaddata 명령은 이러한 데이터를 사용하여 데이터베이스를 채워준다. dumpdata 현재 데이터베이스에 있는 데이터들을 json형식으로 dump 떠 JSON 파일로 추출할 수 있다. $ python manage.py dumpdata APP_NAME.MODEL..
2023.03.31 -
[Django] JSON WebToken - Simple JWT
JSON WebToken 유저를 인증하고 식별하고 JSON 형식의 데이터를 안전하게 전송하기 위한 토큰 기반의 인증 시스템이다. 특징 세션과 다르게 서버가 아닌 클라이언트에 저장되어 메모리, 스토리지 등 세션을 관리했던 서버의 부담이 줄어든다. 토큰 자체에 데이터가 담겨있어 판별가능하다. 상태를 유지하지 않아 Stateless하다. 인증 방식 유저가 로그인 요청을 한다. 서버 단에서 유저(클라이언트)에게 유일한 토큰을 발급한다. 클라이언트는 서버 측에서 전달받은 토큰을 쿠키나 스토리지에 저장해두고, 서버에 요청할 때마다 해당 토큰을 HTTP 헤더에 포함시켜 전달한다. 서버는 전달받은 토큰을 검증하고 요청에 응답한다 토큰에 요청한 사람의 정보가 담겨있으므로 DB조회 없이 유저 식별이 가능하다. JWT 구조..
2023.03.30 -
[PostgreSQL] Row Level Security
Row Level Security (행 수준 보안) 간단하게 PostgreSQL 데이터 베이스 테이블에 추가적으로 적용가능한 필터라고 볼 수 있다. 테이블 데이터에 접근하거나 수정,삭제와 같은 특정 작업들을 수행할 수 있도록 특정 그룹 사용자에게 권한을 부여하고 요청이 오면 쿼리 조건을 수행 하기 전 가장 먼저 적용되어 특정 정책에 따라 데이터가 축소되거나 엑세스 자체가 거부될 수 있다. RLS 장점 1. RLS를 사용하면 개발자가 동일한 데이터베이스에 여러 테넌트에 대한 데이터를 안전하게 저장할 수 있다. 2. RLS 보안 정책은 쿼리를 실행하는 테넌트에 속하지 않는 행을 필터링해준다. 3. 데이터베이스 내부에 필터 논리를 중앙화하면 유지 관리가 단순해지고 보안 오류 위험이 줄어든다. 동작 예시 Dja..
2023.03.30 -
[Oracle] 조건에 부합하는 중고거래 댓글 조회하기
문제 설명 다음은 중고거래 게시판 정보를 담은 USED_GOODS_BOARD 테이블과 중고거래 게시판 첨부파일 정보를 담은 USED_GOODS_REPLY 테이블입니다. USED_GOODS_BOARD 테이블은 다음과 같으며BOARD_ID, WRITER_ID, TITLE, CONTENTS, PRICE, CREATED_DATE, STATUS, VIEWS은 게시글 ID, 작성자 ID, 게시글 제목, 게시글 내용, 가격, 작성일, 거래상태, 조회수를 의미합니다. Column name Type Nullable BOARD_ID VARCHAR(5) FALSE WRITER_ID VARCHAR(50) FALSE TITLE VARCHAR(100) FALSE CONTENTS VARCHAR(1000) FALSE PRICE NU..
2023.03.29 -
[AWS]Route53으로 서브도메인 설정- 와일드카드
와일드 카드 (Wildcard Domain) 도메인명은 www.example.com 처럼 구성될 때 ,이 중 www 를 우리는 서브도메인이라고 한다. 이 자리에 예를들어 blog 처럼 다른 서브도메인을 사용하고 싶을 수도 있다. blog.example.com , 혹은 news.example.com와 같은형태로 말이다. 와일드 카드 도메인은 이와 다르게 와일드 카드 문자 * 를 사용해 모든 서브도메인을 일괄적으로 지정 할 수 있다. 즉,와일드카드 도메인은 서브 도메인의 일종으로, 와일드카드 문자 * 를 사용하여 생성되는 모든 서브 도메인을 의미한다. 일반적으로 웹 사이트 관리자가 많은 수의 서브도메인을 일일이 등록하는 것이 번거로운 경우에 유용하게 사용될 수 있다. 서브 도메인 레코드 등록 레코드 이름 모..
2023.03.29 -
[AWS] Route53로 DNS 관리하기(ELB 연결)
Route53이란? AWS에서 제공하는 DNS이다. 다른 도메인 등록 기관(가비아, 후이즈 등) 에 비해 가격이 비슷하거나 저렴하고, 등록 외에 부가적인 기능 제공 및 안정성, GUI를 제공해 관리가 수월하다. 일반적으로 DNS 네임서버 운영은 도메인 등록시 네임서버를 지정해준다. test.com 도메인을 등록한다면 등록대행기관 네임서버 설정으로 ns1.test.com, ns2.test.com을 등록해주는 방식이다. 반면 Route53 네임서버 운영은 Route53에서 사용할 도메인을 설정해주면 네임서버로 사용될 4개의 NS레코더가 발급되는데 이 레코드를 등록대행기관 네임서버 설정에 들어가 정보를 입력해주는 방식이다. 도메인 설정 1. 호스트 영역 생성 도메인 이름 도메인 이름에는 우리가 사용할 루트 도..
2023.03.29 -
[Free Domain] 무료 도메인 사용해보기
서브 도메인을 구현하기 위한 테스트 작업으로 무료 도메인을 사용하게 되었다. 무료 도메인 검색시 Freenom 사이트가 많이 나오는데 사이트가 너무 느리고 내 IP DNS를 바꿔줬음에도 이게 있을리가? 한 도메인명으로 검색해도 available한 도메인이 없어서 freedomain 사이트를 이용했다. 먼저 도메인부터 차근차근 짚어가며 알아보려고한다. 도메인이란? 인터넷 에 연결된 각각의 장치를 식별할 수 있는 주소를 ip라고 하는데, ip는 사람이 이해하고 기억하기 어렵기 때문에 이를 위해서 각 ip에이름을 부여할 수 있게 했다. 이것을 도메인이라고 한다. 주소창에 220.95.233.172를 입력해보자. 굉장히 낯익은 사이트가 나오는데 이 주소는 네이버의 IP이다. 이 숫자를 기억하려고 해야한다면 어렵..
2023.03.23 -
[SQLD] SQL활용 - 파티션
Partition 파티션은 대용량의 테이블을 여러 개의 데이터 파일에 분리해 저장한다. 테이블의 데이터가 물리적으로 분리된 데이터 파일에 저장되면 입력, 수정, 삭제 조회 성능이 향상된다. 파티션은 각각의 파티션 별로 독립적으로 관리될 수 있다. 즉, 파티션 별로 백업하고 복구가 가능하면 파티션 전용 인덱스 생성도 가능하다. 파티션은 ORACLE 데이터베이스의 논리적 관리 단위인 테이블 스페이스 간에 이동이 가능하고 데이터를 조회할 때 데이터의 범위를 줄여 성능을 향상 시킨다. Range Partiton 가장 일반적인 파티션 형태로 테이블의 컬럼 중에서 값의 범위를 기준으로 여러 개의 파티션으로 데이터를 나누어 저장하는 기능이다. List Partition 순서와 상관없이, 사용자가 미리 정한 그룹핑 특..
2023.03.17