데이터베이스(Database) 이해하기 와 ORM(Object Relational Mapping)

kimjaewon·2023년 4월 18일
0

간단 요약

데이터베이스(Database, DB)란?: 데이터의 저장소(데이터의 집합)
다수가 공유하고 사용할 목적으로, 지속적으로 유지 관리해야할 데이터의 집합으로 데이터를 관리하는 SQLNOSQL 이 있다

DBMS(Database Management System, 데이터베이스 관리 시스템): 데이터베이스를 운영하고 관리하는 소프트웨어
계층형, 망형, 관계형 DBMS 중 대부분의 DBMS가 테이블로 구성된 관계형 DBMS(RDMBS) 형태로 사용된다

사진 처럼 계좌주인, 은행원, 인터넷 뱅킹, ATM 등에서 모두가 접근이 가능한 이유는 DBMS가 있기 때문이다

대표적인 DBMS

SQL이란? (간단 요약)

데이터들의 정보를 저장하고 처리하기 위한 프로그래밍 언어

대표적인 SQL
MySQL Oracle, PostgreSQL등이 있다

대표적인 NoSQL
몽고DB, Redis 등이 있다


장점과 단점

SQL 장점

유연성
데이터베이스 시스템이 다양한 종류의 데이터 모델을 지원하기 때문에 데이터를 저장하고 검색하는데 매우 유연하다

ACID준수
SQL은 ACID(원자성, 일관성, 고립성, 지속성)를 준수하는 관계형 데이터베이스 시스템의 특성을 가지고 있어 데이터 일관성과 무결성을 보장한다

보안
SQL은 권한 기반 액세스 제어 및 데이터 암호화 기술 등을 다양한 보안 기능을 제공해서 데이터를 안전하게 저장하고 보호할 수 있다

SQL 단점

확장성
SQL은 수직 확장(하드웨어 업그레이드)에 적합해서 수평 확장(데이터베이스 서버추가)을 지원하지 않아 대규모 애플리케이션에는 한계가 있다

스키마 변경
스키마를 변경하려면 데이터베이스에 있는 모든 데이터 구성을 다시 해야한다 이는 불필요한 복잡성에러 가능성을 야기할 수 있다

NoSQL 장점

확장성
NoSQL은 수평 확장(데이터베이스 서버 추가)을 지원하므로 대규모 어플리케이션에서 더 적합하고 이는 클라우드 기술의 발전과 더불어 NoSQL의 인기를 높인 요인 중 하나이다

유연성
NoSQL은 스키마를 지원하지 않아 데이터를 보다 유연하게 저장할 수 있고 이는 데이터 모델이 변경될 가능성이 높은 경우에 적합하다

성능
NoSQL은 일반적으로 적은 자원으로 많은 양의 데이터를 처리할 수있어 빠른 속도와 높은 확장성을 제공한다

NoSQL 단점

일관성
NoSQL 데이터베이스는 분산 시스템을 기반으로 하기 때문에 일관성을 보장하기 어렵다

제한된 도구 지원
NoSQL 데이터베이스는 RDBMS에 비해 상대 적으로 지원하는 도구가 적다

스키마의 부재
스키마가 미리 정의되어 있지 않기 때문에 데이터의 무결성을 보장하기 어렵다

여기서 스키마란?

데이터의 타입, 필드 이름, 제약 조건 등을 정의하며, 이를 통해 데이터의 일관성무결성을 보장하는 것

MySQL에서는 tableschema가 동의어이지만

schematables의 집합이고 databaseschemas의 집합이다


SQL의 문법

DML(Data Manipulation Language)

데이터를 조회 하거나 검색하기 위한 명령어: select
데이터 삽입: insert
데이터 수정: update
데이터 삭제: delete 가 있다

DDL(Data Definition Language)

데이터 구조를 정의하는데 사용하는 멸령어들로
create, alter, drop, rename, truncate 등이 있다

DCL(Data Control Language)

데이터 베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령어로
grant(승인), revoke(취소) 가 있다

TCL(Transaction Control Language)

논리적인 작업의 단위를 묶어서 DML(insert, update, delete)문이 실행되어 이 실행되어
DBMS저장 되거나 되돌리기 위해서 실행하는 명령어로
commit, rollback, savepoint 가 있다

https://velog.io/@zlfmaodtod77/MySQL-%EC%82%AC%EC%9A%A9
(MySQL 정리)


ORM(Object Relational Mapping)

ORM(객체 - 관계 - 매핑) 의 약자

  1. 객체와 데이터베이스의 관계를 매핑해주는 도구
  2. 프로그래밍 언어의 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결) 해주는 도구
  3. ORM은 객체와 모델 사이의 관계를 기술하는 도구

사용이유

  1. 객체 지향 프로그래밍은 클래스를 이용하고 관계형 데이터베이스는 테이블을 이용하는데
    객체 모델과 관계형 모델 간의 불일치가 존재한다
  2. ORM을 이용해서 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결한다
  3. 데이터베이스 접근을 프로그래밍 언어의 관점에서 맞출 수 있다
  4. SQL문을 직접 작성하지 않아도 엔티티를 객체로 표현할 수 있다
  5. 객체를 통해 간접적으로 데이터베이스를 다룬다

장점

  1. 각종 객체에 대한 코드를 별도로 작성하기 때문에(직관적) 코드 가독성 을 높여준다
  2. ORM은 기존 객체와 독립적으로 작성되어있고 객체로 작성되었기 때문에 재활용할 수 있다 또한 매핑하는 정보가 명확하기 때문에 ERD를 보는 의존도를 낮출 수 있다
  3. 객체 간의 관계를 바탕으로 SQL문을 자동으로 생성하고 객체의 자료형 타입까지 사용할 수 있기 때문에 RDBMS의 데이터 구조와 객체지향 모델 사이의 간격을 좁힐 수 있고 객체에만 집중할 수 있기 때문에 DBMS를 교체하는 큰 작업에도 리스크가 적고 드는 시간도 줄어든다

단점

  1. DB에 직접 명령을 내리지 않고 한 단계 더 거치기 때문에 SQL문에 비해 성능이 저하된다 (속도가 느림)
  2. 조건이 많아지는 경우 ORM 만으로는 구현이 어려울 수 있다
  3. 프로젝트 복잡성이 커질 경우 난이도가 올라가 잘못 구현하면 코드 일관성이 무너질 수 있다
profile
올라가자

0개의 댓글