본문 바로가기

computer science/데이터베이스17

[데이터베이스] 인덱스(index) 사실 많은 데이터를 다룰일이 없어서 인덱스에 대해 크게 신경쓰지 않았는데, 이번에 공부를 하고 나서 인덱스가 굉장히 강력한 기능을 한다는 것을 알았습니다. 거의 필수적인 개념이죠. 이번시간에는 인덱스가 무엇인지 또 어떻게 사용하는지에 대해 공부해 보겠습니다. 인덱스 인덱스라는 개념을 우리에게 친숙합니다. 우리가 책에서 원하는 내용을 찾을 때 처음부터 찾지않고 책의 목차를 보고 내가 원하는 내용이 몇페이지에 있는지 확인하고 그 페이지로 바로가죠 ? 이런 개념이 인덱스 입니다. 책 속의 내용 중에서 중요한 단어나 항목 등을 쉽게 찾아볼 수 있도록 일정한 순서에 따라 별도로 배열하여 놓은 목록. 데이터베이스에 수많은 데이터가 저장되어 있고 "x"라는 데이터를 찾기 위해 처음부터 하나씩 검사해야 한다면 아주 많.. 2020. 8. 28.
[데이터베이스] SQL과 NoSQL 사실 SQL과 NoSQL를 처음들었을 때, SQL이 RDBMS를 의미하는 것 같은데 왜 SQL이라고하지..? RDBMS와 NoSQL이 더 어울리지 않나 ? 라는 생각을 했습니다. 그래서 곰곰히 생각해봤는데 SQL(Structured Query Language)은 RDBMS의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어이기 때문에 그 자체적으로 관계DB의 의미를 내포하고 있다고 생각했습니다. 그리고 SQL과 NoSQL이 서로 개념적으로 상이한 부분이 있기 때문에 SQL와 NoSQL이라고 많이들 말하지 않아 생각합니다. 이번 게시글에서는 SQL와 NoSQL에 대해 간략하게 알아보고 이 둘의 차이점, 각각 언제 사용해야 하는지에 대한 부분 위주로 다루겠습니다. SQL SQL(관계DB)는 스키마가.. 2020. 8. 27.
[데이터베이스] SQL Injection  이번시간에는 SQL Injection에 대해 공부해 보겠습니다. SQL Injection은 데이터베이스와 연동된 웹 어플리케이션에서 SQL 질의문에 대한 필터링이 제대로 이루어지지 않을 경우 공격자가 입력이 가능한 폼(웹 브라우저 주소 입력창 또는 로그인 폼 등..)에 조작된 질의문을 삽입하여 웹 서버의 데이터베이스를 조작할 수 있는 취약점을 의미합니다. SQL Injection은 다음의 2가지 항목을 충족해야만 공격이 가능합니다. 1. 웹 어플리케이션이 DB를 사용하고 있다. 2. 클라이언트의 입력값이 DB 쿼리문에서 사용된다. 최근 대부분의 웹 어플리케이션은 client - 서버 - DB의 구조를 가지기 때문에 위 두가지 조건을 대부분 충족합니다. 때문에 이러한 SQL Injection의 대상이 .. 2020. 8. 26.
[데이터베이스] 조인(join) 이번 시간에는 join에 대해 공부해 보겠습니다. 데이터베이스에는 여러개의 테이블이 존재합니다. 많은 테이블에서 내가 원하는 정보를 검색할 수 있는 방법이 join인데요, 예를 들어서 사원번호가 100인 사원에 대해 [사원] 테이블에서 이름, 나이, 주소가 필요하고 [봉급] 테이블에서 봉급에 대한 정보가 필요한 경우 [사원], [봉급] 테이블에서 사원번호가 100인 튜플에서 정보를 가져와야 할 것입니다. 이렇게 join을 사용하면 여러 테이블에 걸쳐 존재하는 데이터를 가져올 수 있습니다. 사실 아래의 사진을 모두 이해할 수 있으면 이 긁을 읽을 필요는 없습니다. 설명을 쉽게하기 위해 a속성을 가지는 A테이블, b속성을 가지는 B테이블을 만들었습니다. 두 테이블의 공통된 데이터는 [3,4,5]이며, A테이.. 2020. 8. 24.