데이터베이스는 데이터를 “효율적으로 성능 좋게” 다루기 위해 존재합니다.
즉 더 많이 저장하기 위해서가 아니라, 저장 조회 수정 삭제등을 더 빠르고 효율적으로 처리하기 위해서, “성능상의 이점”을 얻기 위해서 사용한다고 생각하면 좋을 것 같습니다.
DBMS (Database Management System) : 데이터베이스를 관리하는 소프트웨어
RDBMS (Relational DBMS) : 데이터를 테이블 형태로 표현, 데이터의 중복을 최소화, SQL 언어를 사용하여 데이터를 쉽게 조작가능
ex. MySQL, Oracle, MariaDB
- RDBMS는 ‘Relational DBMS’의 약자로 관계형 데이터베이스라고 불립니다.
- RDBMS는 테이블(table)이라는 최소 단위로 구성되며, 이 테이블은 열(column)과 행(row)으로 이루어져 있습니다.
- RDBMS의 종류 : MySQL, PostgreSQL, Oracle Database, H2(In-memory DB, 서버가 작동하는 동안에만 내용을 저장하고, 서버가 작동을 멈추면 데이터가 모두 삭제되는 데이터베이스)
SQL(Structured Query Language) : 관계형 데이터베이스에서 데이터를 정의하고 조작하고 제어할 수 있는 표준 언어
** SQL의 분류
- DDL (Data Definition Language) : 이 카테고리의 SQL 명령어는 데이터베이스의 구조를 생성, 변경, 제거하는데 사용됩니다. 주요 DDL 명령어에는 CREATE (테이블, 인덱스 등 생성), ALTER (테이블 구조 변경), DROP (테이블, 인덱스 삭제), TRUNCATE (테이블 내 데이터 삭제)가 포함됩니다.
- DCL (Data Control Language) : DCL은 데이터베이스에 대한 액세스를 제어하는 데 사용되는 SQL 명령어입니다. 이 명령어에는 주로 GRANT (권한 부여) 및 REVOKE (권한 회수)가 포함됩니다.
- DML (Data Manipulation Language) : DML 명령어는 데이터를 추가, 검색, 수정, 삭제하는데 사용됩니다. 주요 DML 명령어에는 INSERT (데이터 삽입), SELECT (데이터 검색), UPDATE (데이터 수정), DELETE (데이터 삭제)가 포함됩니다.
** 데이터의 무결성을 보장 (제약조건)
- PRIMARY KEY : 기본 키는 테이블에서 각 레코드를 고유하게 식별하는 역할을 합니다. 이것은 테이블의 각 레코드가 고유해야 함을 보장하며, 따라서 NOT NULL (값이 NULL일 수 없음)과 UNIQUE (값이 중복될 수 없음) 제약조건을 모두 만족합니다. 이 기능은 데이터의 중복을 방지하고, 특정 데이터를 빠르게 찾는 데 도움이 됩니다.
- FOREIGN KEY : 외래 키는 다른 테이블에 있는 데이터를 참조하는 데 사용됩니다. 외래 키를 가지는 테이블의 해당 필드는 참조되는 테이블의 기본 키 값을 가지게 됩니다. 이 기능은 데이터 무결성을 보장하며, 관련 데이터가 한 테이블에서 다른 테이블로 일관성있게 이동하도록 합니다. 외래 키가 참조하는 기본 키 값이 변경되거나 삭제될 경우, CASCADE 옵션은 그 변경을 외래 키를 가진 모든 레코드에 자동으로 반영하게 해 줍니다.
** JOIN :
- ON이라는 키워드를 통 해 기준이 되는 컬럼을 선택하여 2개의 테이블을 합쳐 줍니다.
- JOIN을 할 때에는 적어도 하나의 컬럼을 서로 공유하고 있어야 하기 때문에 테이블에 외래키가 설정 되어 있다면 해당 컬럼을 통해 JOIN을 하면 해당 조건을 충족할 수 있습니다.
- JOIN은 대개 공유되는 열(일반적으로 하나의 테이블의 PRIMARY KEY와 다른 테이블의 FOREIGN KEY)에 기반하여 이루어집니다. JOIN을 사용하면 여러 테이블에 분산된 정보를 한 번에 가져올 수 있으므로 데이터 분석이나 보고서 작성 등에 편리합니다.
외래 키(FK)를 설정하여 JOIN을 하는 것이 항상 최선의 선택은 아닙니다. 외래 키는 데이터 무결성을 보장하기 위해 추가적인 연산을 필요로 하며, 이는 시스템의 성능을 저하시키거나, 데이터를 삽입, 수정, 삭제하는 등의 작업을 제약하는 등의 부작용을 가져올 수 있습니다.
- RDBMS vs NoSql
- RDBMS
- 엑셀과 같은 표의 형태로 데이터가 저장됩니다. 테이블을 만들때 컬럼이 고정되어 있기때문에 데이터가 실제로 저장되면 컬럼을 수정하기가 쉽지 않습니다.
- 테이블을 여러개 만들어서 테이블끼리 연결됩니다. 그래서 네이밍에 R(Relation)이 붙습니다.
- 제품에는 Oracle, MySql, postgreSQL, Mssql 이 있습니다.
- NoSql(Not Only sql)
- JSON 형태로 데이터가 저장됩니다. 도큐먼트라는 RDBMS의 테이블과 비슷한 곳에 저장됩니다.
- 도큐먼트는 생성될때 컬럼이 고정되지 않기 때문에 변경이 용이합니다. 그렇기 때문에 정형화된 데이터 보다는 비정형화된 데이터를 저장하는 용도로 사용합니다.
- RDBMS
'Spring' 카테고리의 다른 글
영속성 컨텍스트(Persistence Context), 1차 캐시 (0) | 2023.05.23 |
---|---|
JPA(Java Persistence API), ORM(Object-Relational Mapping) pt.1 (0) | 2023.05.23 |
API(application programming interface), RestAPI (0) | 2023.05.22 |
웹 동작방식, HTTP, WAS, Web Server (0) | 2023.05.21 |
SOLID 원칙 (0) | 2023.04.07 |