본문 바로가기

CS/Database30

[데이터베이스] NoSQL(Not Only SQL) NoSQL(Not Only SQL) - SNS에 확대로 인해 비정형 데이터가 대량으로 생산됨에 따라 주목 - Not Only SQL(SQL을 부정하는 것이 아닌 개선/보안의 의미) - 대량의 분산된 데이터를 저장하고 조회하는데 특화 - 스키마 없이 사용 가능하거나, 느슨한 스키마 제공 1) CAP 이론 (1) 일관성(Consistency) - 다중 클라이언트에서 같은 시간에 조회하는 데이터는 항상 동일한 데이터임을 보증 (2) 가용성(Availability) - 모든 클라이언트의 읽기와 쓰기 요청에 대해 항상 응답이 가능해야함을 보장 (3) 네트워크 분할 허용성(Partition Tolerance) - 지역적으로 분할된 네트워크 환경에서 동작하는 시스템에서 두 지역 간의 네트워크가 단절되거나 데이터 유실.. 2020. 6. 24.
[데이터베이스] WHERE / HAVING WHERE - 기본적인 조건절 - 검색하는 모든 필드에 조건 HAVING - Group by 또는 집계함수에 대한 검색 조건 WHERE과 HAVING - WHERE 조건절을 통해 그룹화하는 레코드 수를 줄인 다음 HAVING을 사용해야 SQL 처리 성능을 향상시킬 수 있음 2020. 6. 24.
[데이터베이스] DELETE/ TRUNCATE / DROP DELETE - 데이터만 삭제 - Rollback 연산 가능 - Rollback 정보를 기록하므로 TRUNCATE 연산보다 느림 - 전체 또는 일부 삭제 가능 - 삭제된 레코드 수를 반환 - 데이터를 모두 DELETE해도 사용했던 Storage는 Release처리되지 않음 TRUNCATE - 해당 테이블의 모든 레코드 삭제 - 테이블을 최초 생성된 초기상태로 만드는 것 - Rollback 불가능 - 테이블 생성을 위해 할당된 Storage를 제외한 Storage들이 Release 처리 됨 - 인덱스 또한 삭제 - 삭제 행수를 반환하지 않음 DROP - 테이블 구조 삭제(테이블 자체를 제거하는 것) - Rollback 불가능 - 테이블에 사용된 모든 Storage가 Release 됨 테이블 스키마 Stor.. 2020. 6. 24.
[데이터베이스] 트리거(Trigger) 트리거 특정 테이블에 DML 문이 수행되었을 떄, 데이터베이스에서 자동으로 동작하도록 작성된 프로그램 1) 트리거의 종류 (1) 전체 트랜잭션 작업에 대해 발생되는 트리거 (2) 각 행에 대해 발생하는 트리거 2) 트리거 속성 (1) BEFORE / AFTER - 트리거가 실행되는 시기 (2) INSTREAD OF - 트리거를 원래 문장 대신 수행 (3) WHEN - 트리거를 시작하는 조건식 지정 2020. 6. 24.
[데이터베이스] 뷰(View) 뷰(VIEW) 뷰는 사용자에게 접근이 허용된 자료만 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된 가상테이블. 1) 뷰의 특징 - 기본 테이블로부터 유도된 테이블이기 때문에 기본테이블과 같은 구조를 가지며 조작 또한 기본테이블과 거의 같다. - 물리적으로 존재하지않고 논리적으로만 존재한다. - 데이터의 논리적 독립성을 제공한다. - 관리가 용이하다. - 뷰에 나타나지 않는 데이터를 보호할 수 있다. - 기본키를 포함한 속성으로 뷰를 구성해야 삽입, 삭제, 갱신 연산이 가능하다. - 일단 정의된 뷰는 다른 뷰의 기초가 될 수 있다. - 다른 뷰의 기초가 되는 뷰를 삭제 시 연쇄 삭제가 일어난다. 2) 뷰의 장점 - 논리적 데이터 독립성 - 여러 사용자의 상이한 요구 지원 - 간단한 데이터 .. 2020. 6. 24.
[데이터베이스] 조인(Join) 조인 - 한 데이터베이스 내의 여러 테이블의 레코드를 조합하여 하나의 테이블로 표현하는 컷 - 테이블로서 저장되거나, 그 자체로 이용할 수 있는 결과 셋을 만듬 1) 조인의 필요성 - 관계형 데이터베이스는 정규화 과정을 거치며 데이터가 여러 개의 테이블로 나뉘어 저장 - 각 테이블에 저장된 데이터를 효과적으로 검색하기 위해 필요 2) 내부 조인(Inner Join) - 가장 흔히 사용되는 결합방식 - 기본 조인 형식 - 조인 구문에 기반한 2개의 테이블의 컬럼 값을 결합함으로써, 새로운 테이블 생성 - 조인 조건에 동일한 값이 있는 행만을 반환(교집합) - 외부 조인처럼 동일한 컬럼 값이 없는 레코드에 대해 NULL 값을 가지지 않음 (1) 동등 조인(EQUI JOIN) - 비교 연산 기반의 조인 - 조.. 2020. 6. 24.
[데이터베이스] 트랜잭션(Transaction) 트랜잭션 - 데이터베이스 상태를 변화시키는 하나의 논리적인 작업 단위를 구성하는 연산의 집합 - 하나의 트랜잭션은 Commit되거나 Rollback되어야한다. 1) Commit 연산 - 트랜잭션에 대한 작업이 성공적으로 끝났을 때 수행 - 트랜잭션이 행한 갱신 연산이 완료된 것을 트랜잭션 관리자에게 알려주는 연산 2) Rollback 연산 - 트랜잭션 처리가 비정상적으로 종료되었을 때 수행 - 트랜잭션의 원자성을 구현하기 위해 트랜잭션이 행한 모든 연산은 취소하는 연산 3) Lock과 트랜잭션 (1) Lock - 여러 Connection에서 동시에 동일한 자원을 요청할 경우, 한 시점에 하나의 Connection만 변경할 수 있도록 해주는 역할 - 동시성 제어 (2) 트랜잭션 - 하나의 논리적인 작업 셋.. 2020. 6. 22.
[데이터베이스] 정규화(Normalization) 정규화(Normalization) - 데이터의 중복성을 줄이고, 무결성을 향상하는 등의 여러 목정을 달성하기 위해 관계형 데이터베이스를 정규화된 형태로 재설계하는 과정 1) 정규화되지 않은 데이터베이스 구조의 문제점 (1) 데이터의 중복 (2) 이상현상 (3) 특정 정보의 표현 불가 (4) NULL 값 보유 (5) 정보의 부정확 2) 이상현상(Anormaly) (1) 삽입 이상 새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야하는 현상 (2) 갱신 이상 중복된 레코드 중, 일부 레코드만 변경해 데이터가 불일치하게 되는 모순 현상 (3) 삭제 이상 레코드 삭제 시, 필요한 데이터까지 함께 삭제되는 데이터 손실 현상 3) 정규화의 목적 (1) 불필요한 데이터를 제거해 데이터의 중복 최소화 (2) 데.. 2020. 6. 22.
[데이터베이스] 관계형 데이터베이스 관계형 데이터베이스(RDB) 1) 개념 - 테이블로 구성되어 있고, 테이블은 key와 value의 관계를 나타냄 - 데이터의 종속성을 관계로 표현 - 관계형 데이터베이스를 지원하는 응용 프로그램을 관계형 데이터베이스 관리시스템(RDBMS)라고 한다. 2) 용어 (1) 테이블(Table) - 관계형 데이터베이스의 기본적인 저장 구조 - 한 개의 이상의 column과 0개 상의 row로 구성 (2) 행(Row) - Table의 column값의 조합 - 레코드(Record) 또는 튜플(Tuple)이라고 함 - 각 행은 기본키에 의해 구분 (3) 열(Column) - 속성 - 각각의 열은 유일한 이름과 타입을 가짐 (4) 필드(Field) - Row와 Column의 교차점 - 속성 값 (5) 기본키(Pimary.. 2020. 6. 22.
[데이터베이스] 데이터베이스 데이터베이스 1) 정의 - 여러 사용자가 공유하기 위해 통합하여 저장된 운영데이터의 집합체 (1) 공유 데이터 (2) 통합 데이터 (3) 저장 데이터 (4) 운영데이터 2) 특징 (1) 동시 공유 (2) 실시간 접근성 (3) 내용에 의한 참조 (4) 계속적인 변화 데이터베이스 관리 시스템(DBMS, Database Management System) - 기존의 파일 시스템이 갖는 단점인 데이터의 종속성 및 중복성 문제를 해결하기 위한 시스템 1) 기능적 요소 (1) 정의 기능 데이터베이스의 논리적, 물리적 구조 정의 (2) 조작 기능 데이터베이스에 저장된 데이터의 검색, 삽입, 수정, 삭제 기능을 수행 (3) 제어 기능 데이터베이스에 저장된 데이터의 무결성, 일관성, 보안을 유지하도록 제어 2) 장점 (1.. 2020. 6. 22.
[데이터베이스] 데이터베이스 성능 개선 데이터베이스 성능 개선과 관련된 질문을 받았지만 할 수 있었던 대답은 분산 기법(클러스터링, 레플리케이션, 샤딩)밖에 생각나지 않았다. 가장 기본적으로 인덱스나 옵티마이저도 생각했어야했는데 특정 기술에 대한 정의를 알기전에 그 기술에 왜 사용되는지 먼저 알아야하는 자세가 필요하다. 데이터베이스 인덱스(Database Index) 지정한 column을 기준으로 메모리 영역에 일종의 색인을 생성하는 것. 데이터베이스의 레코드가 늘어날수록 table full scan의 속도는 느려진다. 인덱스를 사용하면 빠른 탐색이 가능하다. 하지만 인덱스는 키 값을 기준으로 정렬된 상태를 유지하기 때문에 검색속도는 빨라질 수 있지만, 삽입, 삭제, 갱신을 느려진다. 1) 인덱스 구조 (1) B-Tree 인덱스 - B-Tre.. 2020. 6. 14.
[데이터베이스] 07. SQL 1. SQL 관계 데이터베이스를 위한 표준 질의어로 비절차적 데이터 언어. 1) 데이터 정의어(DDL) : 테이블 생성/변경/제거 2) 데이터 조작어(DML) : 데이터 삽입/수정/삭제/검색 3) 데이터 제어어(DCL) : 데이터 접근 및 사용권한 부여/취소 2. 데이터 정의 테이블 생성/변경/제거 1) 테이블 생성 CREATE TABLE 테이블이름 ( /* 속성 정의 부분. 데이터 타입을 정의하고 널값의 허용여부와 default값을 설정 */ 속성이름 데이터타입 [NOT NULL] [DEFAULT 기본값] /* 기본키 */ PRIMARY KEY (속성리스트) /* 대체키 */ UNIQUE (속성리스트) /* 외래키. 참조무결성제약조건을 위해 참조하는 테이블 이름, 삭제, 변경 시 제약조건을 명세 */ .. 2020. 4. 9.