Computer Science/DB

SQL이란? Structed Query Language 관계 데이터베이스에서 사용되는 대표적인 언어 SQL의 종류에는 정의어, 조작어, 제어어가 있다. 1. SQL 정의어(DDL) Data Definition Language 정의 : 관계 데이터베이스에서 사용될 테이블, 스키마, 도메인, 인덱스, 뷰 등을 정의(생성)하거나 수정, 제거하기 위해 사용되는 언어 종류 CREATE ALTER DROP - CREATE 1) 테이블 정의 CREATE TABLE 테이블_이름( 속성_이름 데이터_타입 [NOT NULL], PRIMARY KEY(속성_이름), UNIQUE(속성_이름), FOREIGN KEY(속성_이름) REFFERENCES 참조테이블_이름(속성_이름) ON DELETE CASCADE | SET NULL..
1. DB Connection Pool이란? - DB Connection이란? DB를 사용하기 위해 DB와 애플리케이션 간 통신을 할 수 있는 수단 DB Connection은 Database Driver와 Database 연결 정보를 담은 URL이 필요함 Java의 DB Connection은 JDBC를 주로 이용하는데, URL 타입을 사용함 - Driver type별로 지정하는 URL 예 Driver URL 설명 oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:@ipaddress:1521:ORA7 oracle-DB/thin-Driver oracle.jdbc.driver.OracleDriver jdbc:oracle:oci7:@ipaddress:1521:ORA7 ora..
1. 정의 RDB에서 기본키-외래키로 연관된 두 테이블을 묶어 하나의 테이블로 만드는 방법 2. 필요성 정규화 때문 정규화란? 불필요한 데이터의 정합성을 확보하고 이상 현상의 발생을 피하기 위해 테이블을 분할하여 생성하는 것 👉 분할한 테이블을 조합해서 사용하기 위해 조인을 사용함 3. Join의 종류 예제에 사용할 테이블은 아래와 같다. lesosn 테이블 lesosn 테이블 정보 - ID(PK): NUMBER - name: VARCHAR prices 테이블 prices 테이블 정보 - ID(FK): NUMBER - PRICE: NUMBER - INNER JOIN 내부 조인 = JOIN, 조인 교집합: 두 테이블에 공통된 부분만 추출 👉 두 테이블에 모두 데이터가 있어야만 결과가 나옴 두 테이블을 연결..
1. B-tree - 정의 데이터가 정렬된 상태로 유지되어 있는 트리로 일반적인 이진 트리와 비슷하지만 노드 당 자식 노드가 2개 이상 가능한 트리 더보기 트리 관련 용어 노드: 사각형으로 표시된 한 개의 데이터 루트 노드: 가장 상단의 노드 브랜치 노드: 중간 노드 리프 노드: 가장 아래 노드 - 특징 : 균일성, 균형트리, 정렬된 상태 균일성 어떤 값에 대해서도 같은 시간에 결과를 얻을 수 있음 트리 높이가 다를 경우, 약간의 차이는 있지만 O(logN) 균형트리 루트로부터 리프까지의 거리가 일정한 트리 구조 성능이 안정화되어 있음 처음 생성 당시는 균형 트리이지만 갱신이 반복되면 서서히 균형이 깨지고, 성능도 약화됨 정렬된 상태 항상 정렬된 상태로, 특정 값보다 크고 작은 부등호 연산에 문제가 없음..
1. 인덱스란? 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조 👉 index는 데이터의 주소값을 저장하는 자료 구조. index를 활용해서 빠르게 원하는 데이터를 찾을 수 있음 WHERE절에 사용할 컬럼에 대한 효율화라고 볼 수 있음 2. 인덱스의 필요성 - table에 index가 걸려 있지 않다면? SELECT * FROM customer WHERE first_name = "Jeongyoon"; 👉 원하는 데이터를 찾고 싶을 때 table 전체를 full scan 해야 함 full scan이란? row를 하나씩 모두 확인하는 것을 의미함 시간복잡도는 O(N) 시간이 오래 걸리기 때문에 서비스에 좋지 않은 영향을 끼침 -table에 index가 걸..
1. 트리거란? 특정 테이블에서 INSERT, DELETE, UPDATE와 같은 DML문이 수행되었을 때, 데이터베이스에서 자동으로 동작하도록 작성된 프로그램 👉 사용자가 직접 호출하는 것이 아니라, DB에서 자동적으로 호출 예: 상품을 주문했을 때 자동으로 배송 내역으로 들어가는 것, 회원가입 했을 때 웰컴 쿠폰이 자동으로 발급되는 것 테이블에 부착되는 프로그램 코드 IN, OUT 매개 변수 사용 가능 2. 트리거의 유형 행 트리거: 테이블 안의 영향을 받는 행 각각에 대해 실행됨 변경 전 또는 변경 후의 행은 OLD, NEW라는 가상 줄 변수를 사용하여 읽을 수 있음 트리거 이벤트 OLD NEW INSERT X O UPDATE O O DELETE O X 문장 트리거: INSERT, UPDATE, DE..
1. 저장 프로시저란? = 영구저장모듈 DB 내부에 저장된 일련의 SQL 명령문들을 하나의 함수처럼 실행하기 위한 쿼리의 집합 더보기 저장 프로시저와 함수의 차이점 저장 프로시저: 일련의 작업을 처리한 절차. 리턴값이 없거나 많을 수도 있음. 서버에서 실행되기 때문에 속도가 빠름 함수: 여러 작업을 위한 기능. 리턴값이 필수. 클라이언트에서 실행되기 때문에 프로시저보다 느림 (데이터베이스 내의 함수. 예 - COUNT) 2. 일반 쿼리문 vs 저장프로시저 일반 쿼리문 작동 방식 일반적으로 쿼리문 한 줄을 실행하더라도 파싱 -> 최적화 -> 컴파일 및 실행계획 등록(실행계획 결과를 메모리에 등록) -> 실행하는 과정의 많은 절차를 거침 최적화 단계에서 해당 쿼리문이 가장 좋은 성능을 낼 수 있는 경로를 결..
스키마의 정의 : 데이터베이스의 구조와 제약 조건에 관한 전반적인 명세를 기술한 메타데이터의 집합 더보기 메타 데이터(meta data): 데이터에 대한 데이터. 어떤 목적을 가지고 만든 데이터 데이터베이스를 구성하는 Entity 개체, Attribute 속성, Relationship 관계 및 데이터 조작 시 데이터 값들이 갖는 제약 조건 등에 관해 전반적으로 정의함 더보기 스키마와 ERD의 차이점 ERD는 설계도. 스키마는 구현 데이터베이스를 생성하기 전에, 설계를 미리 생각을 해야 하는데 그때 작성하는 것이 ERD 그것을 통해서 데이터베이스를 생성하면 DBMS에서 생성하는 게 스키마임 스키마의 특징 데이터 사전(=메타데이터)에 저장됨 시간에 따라 불변인 특성을 가짐 데이터의 구조적 특성을 의미하며, ..
RDBMS를 설명하기에 앞서, 데이터 모델의 종류에는 계층형, 네트워크형, 관계형(RDB)이 있다. 계층형, 네트워크형은 잘 사용하지 않고, 관계형 데이터 모델을 주로 사용한다. 우리가 사용하는 대표적인 데이터베이스 관리 시스템도 대부분이 관계형이라고 보면 된다. 계층형, 네트워크형은 잘 사용하지 않고 관계형 데이터 모델만을 사용하는 이유가 뭘까? 계층형, 네트워크형은 데이터가 저장되어 있는 구성을 변경하면 그에 맞춰 프로그램도 보완해야 하기 때문에 불편하다. 반면, 관계형은 그러한 영향이 적고 프로그램과 데이터를 독립적으로 관리하기 쉽다. 따라서 이번 게시물에서는 RDBMS에 대해서 다뤄보도록 하겠다. RDB란? 정의: 키와 값들의 간단한 관계를 테이블화 시킨 데이터베이스 장점 여러 가지 표를 조합하여..
트랜잭션의 Isolation이 제대로 유지되려면 복수의 트랜잭션을 동시에 실행할 경우, 이상 현상이 일어나지 않도록 한다. 이것을 보장하기 위한 중요한 속성이 Serializability와 Recoverable이다. 즉, 이 두 가지 속성이 보장될 수 있도록 해야 한다. 하지만 이때 동시에 처리할 수 있는 트랜잭션의 수가 줄어들어서 DBMS의 성능이 하락한다는 단점이 있다. 이를 해결하기 위해 DBMS의 concurrency control은 여러 종류의 Isolation level을 제공해서 개발자가 데이터 정합성과 성능 사이에서 어느 정도 트레이드 할 수 있도록 한다. Serializabiliy 👉 여러 트랜잭션을 병렬로 동시에 처리하면서도 순차적으로 수행한 것과 같은 결과를 내는 것 Recoverab..
깨구르르
'Computer Science/DB' 카테고리의 글 목록