일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- LeetCode
- 동적 계획법
- network
- 백준
- DP
- Javascript
- Data Structure
- 알고리즘
- 프로그래머스
- react
- db
- frontend
- Redux
- 그레이들
- 안드로이드
- vscode
- 자바
- VIM
- 리트코드
- java
- CS
- TypeScript
- DFS
- git
- Python
- Database
- Algorithm
- Graph
- BFS
- 다이나믹 프로그래밍
- Today
- Total
목록Database (5)
늘 겸손하게
Index(인덱스) 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조 테이블의 칼럼을 색인화한다. 두꺼운 책의 목차 부분을 만든다고 생각하면 편하다. 데이터베이스 안의 레코드를 처음부터 풀스캔하지 않고, B+ Tree를 구성된 구조에서 Index 파일 검색으로 속도를 향상시키는 기술이다. 파일 구성 테이블 생성 시, 3가지 파일이 생성된다. FRM : 테이블 구조 저장 파일 MYD : 실제 데이터 파일 MYI : Index 정보 파일 (Index 사용 시 생성) 사용자가 쿼리를 통해 Index를 사용하는 칼럼을 검색하게 되면, 이때 MYI 파일의 내용을 활용한다. 단점 Index 생성시, .mdb 파일 크기가 증가한다. 한 페이지를 동시에 수정할 수 있..
데이터베이스를 선택할 때 SQL 혹은 NOSQL을 사용할지 고민하게 된다. 보통 Spring은 MySQL와 같은 SQL, Node.js는 MongoDB와 같은 NOSQL을 주로 사용했을 것이다. 하지만 프레임워크에 따라 결정하기보다는 프로젝트에 적합한 데이터베이스를 선택해야한다. 차이점을 알아보자. SQL (관계형 DB) SQL을 사용하면 RDBMS에서 데이터를 저장, 수정, 삭제 및 검색 할 수 있음 관계형 데이터베이스에는 핵심적인 두 가지 특징이 있다. 데이터는 정해진 데이터 스키마에 따라 테이블에 저장된다. 데이터는 관계를 통해 여러 테이블에 분산된다. 데이터는 테이블에 레코드로 저장되는데, 각 테이블마다 명확하게 정의된 구조가 있다. 해당 구조는 필드의 이름과 데이터 유형으로 정의된다. 따라서 스..
SQL Injection 해커에 의해 조작된 SQL 쿼리문이 데이터베이스에 그대로 전달되어 비정상적 명령을 실행시키는 공격 기법 공격 방법 1) 인증 우회 보통 로그인을 할 때, 아이디와 비밀번호를 Input창에 입력하게 되는데, 비밀번호를 입력함과 동시에 다른 쿼리문을 함께 입력하는 것. 보안이 완벽하지 않은 경우, 같이 입력(주입)된 쿼리문이 데이터베이스에 영향을 줄 수도 있다. 2) 데이터 노출 시스템에서 발생하는 에러 메시지를 이용해 공격하는 방법. 보통 에러는 개발자가 버그를 수정하는 면에서 도움을 받을 수 있는 존재. 해커들은 이를 역이용해 악의적인 구문을 삽입하여 에러를 유발시킨다. 방어 방법 1) input 값을 받을 때, 특수문자 여부 검사하기 로그인 전, 검증 로직을 추가하여 미리 설정..
JOIN 두 개 이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색하는 방법 테이블을 연결하려면, 적어도 하나의 칼럼을 서로 공유하고 있어야 하므로 이를 이용하여 데이터 검색에 활용한다. JOIN 종류 INNER JOIN LEFT OUTER JOIN RIGHT OUTER JOIN FULL OUTER JOIN CROSS JOIN SELF JOIN INNER JOIN : 교집합으로, 기준 테이블과 join 테이블의 중복된 값을 보여준다. LEFT OUTER JOIN : 기준테이블값과 조인테이블과 중복된 값을 보여준다. 왼쪽테이블 기준으로 JOIN을 한다고 생각하면 편하다. RIGHT OUTER JOIN : LEFT OUTER JOIN과는 반대로 오른쪽 테이블 기준으로 JOIN하는 것이다. FULL OUT..