목록CS/DB (6)
GiYeong

Redis(Remote Dictionary Storage) NoSQL로서 Key-Value 타입의 저장소이다. 또한 인메모리 DB로써 모든 데이터를 메모리에 저장하고 조회하는 DB이다. 다른 인메모리 DB와의 차이점은 다양한 자료구조를 가지고 있다는 점이다. Redis의 특징 Snapshots : 특정 시점에 데이터를 디스크에 저장하여 파일 보관/복구 가능 복제 : Master-Slave 구조로, 여러 복제본을 만들 수 있다. (DB 읽기 확장을 통해 높은 가용성, 클러스터 제공) 읽기 성능 증대를 위한 서버 측 복제를 지원 쓰기 성능 증대를 위한 클라이언트 측 샤딩(Sharding) 지원 다양한 서비스에서 사용되며 검증된 기술 문자열, 리스트, 해시, 셋, 정렬된 셋 등의 다양한 자료구조를 지원함으로서..

RDBMS RDBMS는 DBMS 앞에 Relational(관계적)이라는 단어가 붙은 것으로 관계형 데이터베이스 관리 시스템이라는 뜻이다. DBMS(DataBase Management System) 사용자와 DB 사이에서 사용자의 요청을 해석하여 DB에 저장된 데이터를 관리해주는 SW 즉, 테이블이 다른 테이블들과 관계를 가지며 모여있는 집합체로 이해할 수 있으며, 이러한 관계를 나타내기 위해 FK(Foreign Key, 외래키)를 사용한다. 테이블 간의 관계에서 FK 또는 PK를 이용해 JOIN이 가능한 것이 RDBMS의 가장 큰 특징이다. 장점 데이터의 분류, 정렬, 탐색 속도가 비교적 빠르다. SQL을 통해 데이터를 다룰 수 있다. 작업의 완전성을 보장한다. 데이터의 UPDATE가 빠르다. 단점 반드..

JOIN이란 2개 이상의 테이블을 결합하여 데이터를 검색(SELECT)하는 방법이다. 검색하고 싶은 데이터가 1개의 테이블이 아니라 여러 테이블에 나누어져 있으면, 각 테이블의 컬럼을 1개씩 가져와서 해당 컬럼을 접점으로 이용하여 여러 테이블에 나누어져 있는 데이터를 검색한다. 접점으로 이용하는 컬럼은 PK(Primary Key) 또는 FK(Foreign Key)를 주로 사용한다. 기본적으로 어떤 JOIN인지 명시하지 않으면 INNER JOIN이 사용된다. JOIN 문법 SELECT column_name(s) FROM table1 JOIN table2 ON table1.column_name = table2.column_name; 1. FROM, JOIN JOIN은 2개의 테이블을 대상으로 합치는 기능이기..

정규화(Normalization)의 목표는 테이블 간의 중복된 데이터를 허용하지 않는 것이다. 이를 통해 데이터의 무결성(Integrity)를 유지할 수 있으며, DB의 저장 용량을 줄일 수 있다. 테이블을 어떻게 분해하는지에 따라 정규화의 단계가 달라진다. 데이터의 무결성 데이터의 정확성, 일관성, 유효성이 유지되는 것 정확성이란 중복이나 누락이 없는 상태를 뜻하고, 일관성은 원인과 결과의 의미가 연속적으로 보장되어 변하지 않는 상태 제1 정규화 테이블의 컬럼이 원자값(Atomic Value, 하나의 값)을 가지도록 테이블을 분해하는 것이다. 학생 이름 나이 수강 과목 A 13 수학, 국어 B 14 수학 C 12 과학 위 테이블에서 경기도는 여러 개의 시를 가지고 있기 때문에 제1 정규형을 만족하지 못..

트랜잭션(Transaction)은 DB의 상태를 변환시키기 위해 수행하는 작업 단위이다. 상태를 변환시킨다는 것은 SQL 질의어를 통해 DB에 접근하는 것이다. 특징(ACID) 1. 원자성(Atomicity) 트랜잭션이 DB에 모두 반영되거나, 혹은 전혀 반영되지 않아야 한다. 즉, 트랜잭션 내의 모든 명령을 반드시 완벽하게 수행되어야 하며, 어느 하나라도 오류가 발생되면 트랜잭션 전부가 취소되어야 한다. 2. 일관성(Consistency) 트랜잭션의 작업 처리 결과는 항상 일관성이 있어야 한다. 즉, 시스템이 가지고 있는 고정요소는 트랜잭션 수행 전과 후의 상태가 같아야 한다. 3. 독립성(Isolation) 둘 이상의 트랜잭션이 동시에 병행 실행되고 있을 때, 어떤 트랜잭션도 다른 트랜잭션의 연산에 ..

인덱스(Index) 데이터베이스 테이블에 대한 검색 속도를 높여주는 자료구조이다. 특정 컬럼에 인덱스를 생성하면, 해당 컬럼의 데이터들을 정렬하여 별도의 메모리 공간에 데이터의 물리적 주소와 함께 (key, value)의 한 쌍으로 저장된다. 인덱스는 색인이라고 생각하면 된다. 테이블에서 원하는 데이터를 찾기 위해 인덱스를 이용하면 빠르게 찾을 수 있다. 기존엔 WHERE문으로 특정 조건의 데이터를 찾기 위해서는 테이블 전체를 조건과 비교해야 하는 'Full Table Scan' 작업이 필요했지만, 인덱스를 이용하면 데이터가 정렬되어 있기 때문에 조건에 맞는 데이터를 빠르게 찾을 수 있다. 또, ORDER BY나 MIN/MAX의 경우에도 이미 정렬이 되어있기 때문에 빠르게 수행할 수 있다. 장점 테이블을..