트랜잭션이란?데이터베이스에서 하나의 논리적 기능을 수행하기 위해 필요한 연산들을 묶는 단위-> 필요한 연산들을 모두 완벽하게 처리(commit)하거나,처리하지 못한 경우에는 원 상태로 복구(rollback)하여 작업의 일부만 적용되는 현상이 발생하지 않게 만들어주는 기능 커밋(Commit)이란?모든 작업들을 성공적으로 처리되었다고 확정하는 명령어=> 트랜잭션 내에 변경된 내용을 DB에 영구 저장하겠다는 의미이며, commit을 수행하면 하나의 트랜잭션이 성공적으로 종료된다.Auto Commit: 사용자가 Commit 명령을 따로 하지 않아도, 모든 단건의 쿼리마다 자동으로 COMMIT이 실행되어 데이터베이스에 영구적으로 반영되도록 하는 명령예를 들어 A가 B에게 송금하려면 아래와 같은 작업이 발생하는데..
데이터베이스 환경에서 커넥션(Connection)과 세션(Session)은 서로 밀접하게 연관된 개념이지만, 엄밀하게는 다른 의미를 가지고 있다.이에 각각의 개념은 무엇이고 어떤 관계를 가지고 있는지 알아보도록 하겠다.Connection이란?클라이언트와 데이터베이스 서버 간의 물리적인 경로를 의미한다.즉, 클라이언트와 데이터베이스 서버 간의 통신할 채널(e.g. port 등)이 열리면서 네트워크 레벨 통신이 성립되는 것을 말한다. DB Session 이란?커넥션이 성공적으로 만들어진 이후의 클라이언트와 데이터베이스 서버 간의 상호작용을 의미한다.이로인해 세션 내에서 사용자의 모든 트랜잭션, 쿼리 등의 작업이 이루어지며, 세션은 DB 쿼리 실행 상태나 트랜잭션 맥락을 유지하는 논리적 컨텍스트이다. 커넥션..
데이터베이스 정규화(normalization)란?데이터를 연관성이 있는 속성들로만 구성되도록 분해해서, 삽입, 삭제, 갱신 이상 현상이 발생하지 않는 올바른 릴레이션(table)으로 만들어 나가는 과정 => 데이터 중복을 줄이고 데이터 무결성 개선 가능 정규화 종류각 정규형마다 만족시켜야 하는 제약조건이 존재하며, 정규형의 차수가 높아질수록 제약조건이 엄격해진다.그렇지만 대부분은 BCNF정규형까지 만족시키면 이상 현상이 없어지기 때문에 그 이상 분리하지는 않는다고 한다. 제1 정규형 (1NF)릴레이션에 속한 모든 속성의 도메인이 더는 분해되지 않는 원자 값(atomic value)으로만 구성되어 있음=> 속성이 다중값을 가지면 안됨제2 정규형 (2NF)릴레이션이 제1정규형에 속하고, 기본키가 아닌 모든 ..
인덱스란?인덱스란 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조이다.책으로 비유하자면, 책의 맨 앞 또는 맨 뒤에 있는 색인을 데이터베이스의 index라 볼 수 있다. 목적데이터베이스에서 원하는 값을 찾고자 할 때 테이블의 모든 데이터를 검색하면 시간이 오래 걸리기 때문에, 데이터와 데이터의 위치(주소)를 포함한 자료구조(=인덱스)를 생성하여원하는 데이터를 빠르게 조회하기 위함이다. 그렇다면 인덱스 항상 많이? ㄴNO!인덱스를 관리하기 위해서는 DB에 약 10%의 저장공간이 필요하며인덱스를 관리하기 위해 INSERT, UPDATE, DELETE시 추가 쓰기 작업이 필요하다(자세한 내용은 인덱스 동작 방식에 서술) 또한 인덱스를 잘못 사용하면 오히려 ..
JOIN두 개 이상의 테이블을 연결하여 하나의 결과 집합으로 만드는 연산조인의 처리에서 어느 테이블을 먼저 읽을지를 결정하는 것은 상당히 중요하며, 그에 따라 처리할 작업량이 상당히 달라진다INNER JOIN: 교집합 => 두 테이블이 모두 가지고 있는 데이터만 검색됨OUTER JOIN: FULL OUTER JOIN의 경우 빼고는 특정 테이블을 기준으로 데이터를 보여준다LEFT OUTER JOIN: 왼쪽 테이블을 기준으로, 왼쪽 테이블의 모든 데이터와 왼쪽*오른쪽 테이블의 중복데이터들을 보여줌RIGHT OUTER JOIN: 오른쪽 테이블을 기준으로, 오른쪽 테이블의 모든 데이터와 왼쪽*오른쪽 테이블의 중복데이터들을 보여줌FULL OUTER JOIN: 왼쪽 테이블과 오른쪽 테이블의 합집합을 얻음=> 만약..
SQL이란?Structured Query Language의 약자로서,구조화된 데이터베이스에 질의(데이터 삽입, 조회, 수정, 삭제)를 할 때 사용하는 언어를 칭함=> 주로 관계형 데이터베이스라는 카테고리에 속하는 제품들이 공통적으로 데이터베이스 서버를 제어할 때 사용하는 언어 e.g. SQL(SELECT * FROM Categories;)를 입력하면 데이터베이스에서 사진에 있는 데이터들을 얻을 수 있다. SQL과 프로그래밍 언어와의 차이점 SQL프로그래밍 언어목적 DB에서 데이터를 추출/조작을 위해 만든 언어일반적인 문제 해결과 프로그램 개발을 위한 언어동작 방식선언형 언어=> '무엇을'할지 기술하면,DB 엔진이 어떻게 작업할지 결정함절차적 또는 객체지향 언어=> '어떻게'할지 명시사용자가 세부 로직과 ..
데이터베이스란?특정 조직의 여러 사용자들이 공유해서 사용할 수 있도록 통합해서 저장한 운영 데이터의 집합을 의미=> 조직을 운영하기 위해 필요한 데이터를 수집하여 저장해두었다가, 필요할 때 제공특징:1. 실시간 접근(real-time accessibility) 가능사용자의 데이터 요구에 실시간으로 응답하여 제한된 시간 내에 데이터를 제공 2. 지속적인 변화(continuous evolution) 발생_동적임현실 세계의 상태를 반영해야 하므로,데이터를 계속 삽입*삭제*수정하여 정확한 데이터를 유지 3. 동시 공유(concurrent sharing) 가능여러 사용자가 동시에 데이터베이스를 이용할 수 있는 동시 공유 특성 제공이때 사용자가 서로 다른 데이터를 동시에 사용하는 것뿐만 아니라, 같은 데이터를 동시..