카테고리 없음

초기 이커머스 아이디어 구현 - 데이터베이스

DevHam94 2023. 10. 2. 23:24

1. 데이터베이스란?

데이터를 저장하는 저장 공간 

필요한 데이터 -> 수집 -> 데이터베이스 

 

# 테이블이란?

 - 수집한 데이터를 특정한 형태로 정리하여 관리하는 목록

 - 보통 2차원 형태로 표현(행, 열)

 

# 스키마랑?

 - 데이터베이스, 테이블에 대한 구조와 정보

 - 자료의 구조, 자료의 표현 방법, 자료 간의 관계를 형식 언어로 정의한 구조 

 

# 데이터베이스 도입

 - 서비스에 기능에 필요한 데이터의 등록, 수정, 삭제, 조회 

 

# 데이터베이스 설치 및 운영

 - 온프레미스: 직접 물리 장비, 시스템, 데이터베이스 설치 및 운영

    - IDC

 - 클라우드: 외부 사업자가 제공하는 데이터베이스와 시스템 사용

    - AWS, Azure, Google Cloud

 

# 데이터베이스 종류

 - 관계형 데이터베이스 (범용적, 기본)

 - NoSQL 데이터베이스 

 

# 데이터베이스 관리자(DBMS)

 - DBMS(DataBase Management System)

 - 데이터베이스를 관리하기 위한 시스템

    - 정렬, 검색

    - 데이터 정합성 검사

    - 백업

    - 복구

    - 보안

 

2. 관계형 데이터베이스

2차원 형태의 행과 열로 데이터를 저장(테이블)

각 테이블 간의 상호 관계의 논리적 구조

 - MySQL

 - MariaDB

 - Oracle

 - PostgreSQL

 - MS SQL Server

 

# 관계형 데이터베이스의 특징

 - 강점

   - 흔하고 많이 사용된 - 범용적

   - 단순한 데이터 저장 구조 - 테이블, 행, 열

   - 데이터의 타입 기반 - 숫자, 문자, 날짜

   - 기본적인 서비스 성능

   - 트랜잭션

 - 약점

   - 대용량

   - 고속 처리 

 

# NoSQL 데이터베이스의 종류

NoSQL = Not Only SQL

관계형 데이터베이스 이외의 특수 목적이나 특성

 

형태 

 - 키:값(Key:Value): Memcached

 - 문서(Document): MongoDB, Couchbase

 - 컬럼(Wide Column): HBase, Cassandra

 - 그래프(Graph): Neo4j, Amazon Neptune

 

# NoSQL 데이터베이스 특징

강점

 - 고속

 - 비정형 데이터

 - 분산 처리

 - 많은 양의 데이터

 

약점

 - 관계형 결합의 미지원

 - 일관성이나 정합성이 약하다

 - 트랜잭션 미지원 또는 어려움 

 

1. 일반적이라면 "관계형 데이터베이스" 시작

2. 관계형으로 풀 수 없는 문제는 NoSQL: 서비스 운영 중에 고속의 캐시가 필요하다던지, 메세징 아키텍처를 도입한다던지, 비정형 데이터를 적재한다던지 

 

 

4. SQL (Structured Query Language)

# SQL의 정의 

데이터베이스 관리 및 조작을 위한 프로그래밍 언어의 한 종류 

 - 구조화 질의어 Structured Query Language

 - 데이터베이스를 관리하고 조작하기 위한 언어

 - 데이터베이스 종류별로 다를 수 있다.

 - SQL 표준은 ANSI에서 제정

 

# SQL 명령어의 종류

 - DML(Data Mainpulation Language) - 데이터 조작어

   - INSERT, UPDATE

 - DQL(Data Query Language) - 데이터 조회어

   - SELECT

 - DDL(Data Definition Language) - 데이터 정의어

   - CREATE

 - DCL(Data Control Language) - 데이터 제어어

   - GRANT

 - TCL(Transaction Control Language) - 트랜잭션 제어어

   - ROLLBACK

 

# SQL 기본 명령어

SQL도 언어이기 때문에 기본 문법이 존재. 문장 끝에는 세미콜론(;) 필수.

 - 데이터베이스 관리 

 - 테이블 관리

 - 레코드 관리 

 - 검색

 - 데이터 등록, 수정, 삭제

 - 데이터 정렬

 - 데이터 합계 및 평균

 - 그룹화

 - 테이블 결합 

 

 

5. 트랜잭션(Transaction) 

여러 건의 SQL 실행을 하나의 덩어리, 꾸러미로 묶어서 처리하는 개념

중간에 문제가 생기면 최초 상태로 돌아간다. 

 

트랜잭션 예시

 - 철수가 영희에게 10만원 송금 실행

 - 영희의 계좌에 10만원이 증가

 - 철수의 계좌에 10만원이 감소

 - 송금 이력을 기록한다. 

 

All-or-Nothing Effect

 

# 트랜잭션 - 커밋(Commit)

처리가 성공했을 때 데이터베이스에 반영한다.

실행 도중에는 데이터베이스에 미반영

 

# 트랜잭션 - 롤백(Rollback)

처리가 중간에 실패했을 때 

트랜잭션 실행 이전으로 되돌아간다.

아무것도 변경된 것이 없음으로

데이터베이스 변경이 없다. 

 

 

6. 인덱스(Index)

책의 뒤편에 있는 색인과 유사하다.

 

데이터베이스는 양이 많아짐

-> 처리에 시간이 걸린다.

 

검색 조건과 정렬에 인덱스 생성

-> 검색과 정렬의 속도 개선 

 

# 인덱스에 적합한 컬럼

 - 컬럼값의 종류가 많을 때

 - 데이터 양이 많을 때 조건의 데이터 한정적

 - 자주 정렬이나 검색 필터에 사용

 

# 인덱스의 약점

 - 삽입, 수정, 삭제시 속도가 떨어진다. (인덱스 관리)

 - 수정이 빈번한 테이블은 조심해야 함.

 - 인덱스 관리 영역만큼 데이터베이스 용량 더 필요

CREATE INDEX [인덱스명] ON [테이블명] ([컬럼], [컬럼]);