일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 공변성
- SSR
- 투포인터
- 호이스팅
- 결정 알고리즘
- tailwind
- dfs
- webpack
- ESlint
- TS
- Promise
- async/await
- 반공변성
- RTK Query
- 인터섹션
- React
- map
- 무한 스크롤
- CORS
- 타입 좁히기
- 리터럴 타입
- 태그된 유니온
- recoil
- Jest
- 이분 검색
- Cypress
- autosize
- CI/CD
- useAppDispatch
- app router
- Today
- Total
목록CS/데이터베이스 (7)
짧은코딩
조인(join) 조인은 2개 이상의 테이블을 묶어 하나의 테이블로 만드는 것을 의미한다. MySQL에서는 JOIN, MongoDB에서는 lookup으로 처리한다. 조인은 내부, 왼쪽, 오른쪽, 합집합 조인이 있다. 1. 내부 조인(inner join) 왼쪽 테이블과 오른쪽 테이블의 두 행이 모두 일치하는 행이 있는 부분만 표시한다. 즉, 내부 조인은 두 테이블 간 교집합을 나타낸다. 2. 왼쪽 조인(left outer join) 왼쪽 테이블의 모든 행이 결과 테이블에 표시된다. 즉, 왼쪽 테이블을 기준으로 오른쪽 테이블과 일치하는 레코드와 함께 집합을 생성한다. 만약 일치하는 항목이 없으면 null이 된다. 3. 오른쪽 조인(right outer join) 오른쪽 테이블의 모든 행이 결과 테이블에 표시된..
인덱스 인덱스의 필요성 인덱스는 데이터를 빠르게 찾을 수 있는 장치이다. ex) 인덱스를 활용해 책 안에 찾고자 하는 항목을 빠르게 찾을 수 있다. B-트리 인덱스는 보통 B-트리 자료구조로 이루어져 있다. 트리 탐색은 노드 -> 브랜치 노드 -> 리프 노드를 거쳐서 내려온다. 찾는 값인 57보다 같어나 클 때까지를 기반으로 탐색하다가 리프 노드에 도착해서 57이 가리키는 데이터 포인트를 통해 값을 반환한다. 인덱스가 효율적인 이유와 대수확장성 인덱스가 효율적인 이유는 균형 잡힌 트리 구조와 트리 깊이의 대수확장성 때문이다. -대수 확장성 대수확장성은 트리 깊이가 리프 노드 수에 비해 매우 느리게 성장하는 것을 의미한다. 트리의 깊이가 1개씩 증가하면 최대 인덱스 항목의 수는 4배씩 증가한다. 이 말은 ..
데이터베이스의 종류 관계형 데이터베이스(RDBMS) 관계형 DB는 행과 열을 가지는 표 형식 데이터를 저장하는 형태의 DB를 말하고 SQL로 조작한다. 관계형 DB는 표준 SQL은 지키지만 각 제품을 특화시킨 SQL을 사용한다. 종류: MySQL, PostgreSQL, 오라클, Server, MSSQL 등이 있다. -MySQL MySQL은 대부분의 OS와 호환되고 현재 가장 많이 사용되는 DB이다. 메타, 트위터 등이 MySQL을 사용하고 있다. C, C++로 만들어졌고 MyISAM 인덱스 압축 기술, B-트리 기반의 인덱스, 스레드 기반의 메로리 할당 시스템, 빠른 조인, 최대 64개의 인덱스를 제공한다. 그리고 대용량 DB를 위해 설계되었고 롤백, 커밋, 이중 암호 지원 보안 등의 기능을 제공한다. ..
트랜잭션 트랜잭션은 DB에서 하나의 논리적 기능을 수행하기 위한 작업 단위이다. 즉 DB에 접근하는 방법은 쿼리라서 이 여러 개의 쿼리를 하나로 묶는 단위이다. ACID 특징이 있고 원자성, 일관성, 독립성, 지속성을 의미한다. 원자성(atomicity) 원자성은 "all or nothing"이다. 즉 모두 수행되었거나 되지 않았거나이다. 따라서 트랜잭션을 커밋했는데 문제가 발생하면 롤백을 해 아무것도 수행되지 않는다. -예시 강아지 잔고: 500만원, 고양이 잔고 0원, 이 때 강아지가 고양이에게 300만원을 보낸다. 강아지 잔고 조회 -> 강아지 잔고 -300만원 -> 고양이 잔고 +300만원 이 경우에 작업을 취소하면 다시 강아지는 500만원, 고양이는 0원을 가져야 한다. 그렇기에 모든 작업을 실..
ERD(Entity Relationship Diagram)는 DB 구축의 뼈대이며 릴레이션 간의 관계를 정의한 것이다. 서비스를 구축할 때 ERD를 고려하지 않으면 큰일날 것이다. ERD의 중요성 ERD는 시스템 요구 사항을 기반으로 작성된다. 그리고 이를 기반으로 DB 구축한다. DB 구축 후에도 디버깅, 리팩토링 등에 유용하다. 하지만 이런 ERD도 정형 데이터는 구성할 수 있지만 비정형 데이터는 표현할 수 없다. 예시 -승원 영업부서의 ERD 요구 사항 1. 영업 사원은 0~n명의 고객 관리 2. 고객은 0~n개의 주문 넣을 수 있다. 3. 주문에는 1~n개의 상품이 들어간다. 정규화 과정 정규화 과정은 릴레이션 간의 잘못된 종속 관계로 인해서 DB에 이상 현상이 일어나는 것을 막아준다. 그 뿐만 ..
관계 DB에는 여러 테이블이 있고 테이블끼리 서로 관계가 정의되어 있고 관계화살표로 나타낼 수 있다. -1 : 1 관계 예를 들면 유저당 이메일은 한 개씩 있다. 이런 경우 1 : 1 관계이다. 1 : 1 관계는 테이블을 2개로 나눠서 테이블 구조 이해가 쉽다. -1 : N 관계 예를 들면 쇼핑몰에서 유저가 여러 개의 상품을 장바구니에 넣을 수 있다. 이런 경우 1 : N 관계가 된다. 하나도 넣지 않는 0개의 경우도 있으니 이런 경우에는 화살표를 통해 표현해야 한다. 한 개체가 다른 여러 개체를 포함하는 관계이다. -N : M 관계 예를 들면 학생과 강의의 관계를 보면 학생은 여러 강의를 들을 수 있고 강의도 여러 명의 학생이 포함될 수 있다. 이런 경우 N : M이 된다. N : M 관계는 테이블을 ..
데이터베이스(DataBase)는 일정한 규칙, 규약을 통해 구조화되어 저장된 데이터 모음이다. DBMS(DataBase Management System)는 DB를 제어, 관리하는 통합 시스템이다. DB 안에 있는 데이터들은 특정 DBMS마다 정의된 쿼리 언어(query language)를 통해 삽입, 삭제, 수정, 조회 등이 가능하고 DB는 실시간 접근, 동시 공유가 가능하다. 예를 들어 MySQL이라는 DBMS가 있고 Node.js, php 같은 응용 프로그램에서 DB안에 있는 데이터를 꺼내 데이터 관련 로직을 구축할 수 있다. 엔티티(entity) 엔티티는 사람, 장소, 물건, 사건, 개념 등 여러 개의 속성을 지닌 명사를 의미한다. 엔티티는 서비스 요구 사항에 맞춰 속성이 정해진다. 만약 주소라는 ..