본문 바로가기

분류 전체보기

(305)
DB) Index란? 사용 이유? ☑️ Index란?→ 인덱싱은 데이터베이스 내에서 데이터 검색 속도를 향상시키기 위한 구조 → 인덱싱은 책의 색인처럼 동작하며, 빠른 데이터 검색을 가능하게 해줌 ☑️ RDBMS에서 age가 20인 행을 찾으려면, where age = 20 이렇게 찾을 수 있지만, 행이 1억개라면 1억번 찾아야 됨 ✔️ 대안 → 인덱싱을 통하여, 데이터를 더 빠르게 조회 가능✔️ 정렬해둔 사본을 인덱스라고 부름 ⛳️ 인덱싱 방법1) Binary search tree 만약 5가 어디에 저장되어 있는지 찾으려면, Binary search tree 구조를 통하여 아래 예시에서는 2번의 질문으로 찾을 수 있었음 2) B-tree Binary search tree보다 개선된 방법으로 B-tree라는 구조가 있음(아래 사진) 3..
(SQL > SELECT) : 21일차 나이 정보가 없는 회원 수 구하기 ☑️ 문제(난이도 쉬움) ✔️ 학습 필요➡️ 집계함수(count,sum...)은 group by가 필수라고 생각했었는데, 전체 데이터를 대상으로 합계,개수 등 계산할 때에는 group by없이도 사용 가능 ☑️ 정답SELECT COUNT(USER_ID) AS USERSFROM USER_INFOWHERE AGE IS NULL
(SQL > SELECT) : 21일차 경기도에 위치한 식품창고 목록 출력하기 ☑️ 문제 ☑️ 내가 쓴 답(오답)SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, FREEZER_YNFROM FOOD_WAREHOUSEWHERE FREEZER_YN IS NULL = 'N'ORDER BY WAREHOUSE_ID ASC ✔ 학습 필요한 부분 1) 값이 IS NULL인 경우에 'N'으로 반환하는 법 ➡ IFNULL(value, 변환 원하는 값)으로 설정하여, NULL인 경우에 원하는 값으로 변환 ☑️ 정답SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, IFNULL(FREEZER_YN, 'N') AS REEZER_YNFROM FOOD_WAREHOUSEWHERE ADDRESS LIKE '경기%'ORDER BY WAREHO..
partitioning vs sharding vs replication ☑️ Partitioning : 하나의 DB에서 테이블을 row, column으로 세분화하여, 데이터를 유지보수 및 불필요한 데이터를 조회하지 않음으로써 성능 향상 기대☑️ 파티셔닝을 왜 사용해야 되는지? → 아래 예시에서 content라는 용량이 큰 데이터는, 게시판을 조회할 때 필요하지 않은 정보 → 불필요한 정보 조회를 줄임으로써, 데이터 성능 향상 기대☑️ 사용 예시1. 자주 사용되는 데이터만 묶거나2. 민감한 정보만 따로 묶어서 관리(user_id, user_name과 민감한 정보 password, token)☑️ 전체 데이터 필요 시: 테이블을 Join하여 사용 ✔ 실제 게시판 List에서는 id~comment_cnt까지의 정보만 필요하지만, Article 테이블에는 content..
Github actions, workflow/pipeline 개념 정리 다시해보기 name: Deploy to EC2 # 워크 플로우 이름on: # 트리거(실행)되는 조건 push: branches: - main # main 브랜치가 푸시될 때마다 실행 되도록 설정jobs: # 실행할 작업을 정의 deploy: runs-on: ubuntu-latest # 작업 실행 환경 정의 // linux의 ubuntu환경에서 실행 steps: - name: Checkout the repository # 체크아웃이란 해당 브랜치로 이동하는 걸 의미 uses: actions/checkout@v2 # 깃헙 액션에는 여러버전이 있는데, 그 중 v2를 사용하겠다는 의미 - name: Set up SSH uses: webfactory/ssh-a..
(CodingTest) : 26일차 한 번만 등장한 문자 ☑️ 정답1 (아래에 더 나은 방법으로 풀기)✔ 체크 할 부분 1) cnt = 0이라는 변수를 둬서, 중복되는 값이 있다면 cnt를 +1씩 늘려주기 2) 그리고 cnt가 1인 경우는 값이 딱 1개만 있다는 의미니, 해당 값에 해당하는 값을 answer에 추가하기 3) 정렬을 우선 해주고 시작하는게 좋음// cnt=0을 사용해서, 만약 동일 값이 있다면 +1해주고, 없다면 아무 작업 안 하도록// cnt가 1이라면, 자기 자신만 있다는 의미라서, 해당 값을 answer에 추가해주기import java.util.*;class Solution { public String solution(String s) { String answer = ""; String[] ar..
(CodingTest) : 26일차 인덱스 바꾸기 ☑️ 내가 쓴 답(정답)✔ 체크 할 부분// num1, num2의 위치의 값만 바꿔서 저장// 1) 해당 위치일 때만 바꿔야 되니깐, for문에서 i랑 num1,num2가 같을 때로 조건 걸어보기class Solution { public String solution(String my_string, int num1, int num2) { String answer = ""; String[] str = my_string.split(""); for(int i = 0; i
(SQL > ★ SELF JOIN Lev2) : 20일차 연도별 대장균 크기의 편차 구하기 ☑️ 정답 및 체크✔ 체크 할 부분 1) DATE_FORMAT(value, type)을 사용해도 되지만, 연,월,일만 구할 때에는 YEAR(value), MONTH(value),DAY(value)를 사용해도 됨 2) LEFT JOIN보다 JOIN을 사용하는게 아래에서는 적절 --> JOIN은 일치하는 데이터만 반환하기 때문 3) 아래처럼 하나의 테이블을 변형해서 Join하는걸 Self Join이라고 함 4) JOIN ON에서 ON의 조건은 최대한 디테일하게 가는게 데이터 조회시 성능 좋음 (e.DIFFERENTIATION_DATE 보다는 YEAR(e.DIFFERENTIATION_DATE)이런식으로 하는게 효율적)-- 분화된 연도(YEAR), 분화된 연도별 대장균..