본문 바로가기
TIL&WIL

241122 TIL - ORM과 ODM 비교, ERD, STREAM과 BUFFER

by 나노다 2024. 11. 22.

ORM과 ODM 

ORM (Object Relational Mapping)

- 기본적으로, 데이터베이스에 데이터를 요청하거나 CRUD 작업을 수행하는 기술

- 주로 객체 지향 패러다임을 사용하는 RDBMS(Relational DataBase Management System)에서 활용

- ORM의 도움으로, SQL을 전혀 몰라도 직접 데이터베이스와 상호작용할 수 있고, 백엔드에서 사용하는 언어 그대로를 활용해 데이터를 요청할 수 있다!

- 데이터베이스의 테이블을 객체 모델로 만들고, 코드 상에서 이 모델을 활용해 데이터를 만들고 바꾸고 지우고, 이를 다시 데이터베이스에 적용시켜주는 방식

 

ODM (Object Document Mapping)

- 기본적으로 ORM과 기술적 개념과 기능은 같지만, 주로 활용하는 대상이 다름.

- 비관계형 데이터베이스나 분산 데이터베이스 등에서 활용함.

 

상황에 맞게 ORM과 ODM 선택하기

1. 내가 활용할 데이터의 유형을 고려해보자

 데이터가 행과 열 같은 규격에 딱 맞게 정렬되는 유형의 것이라면 관계형 데이터베이스와 ORM을 선택하고, 데이터가 좀 더 유연하게 배치될 필요가 있을 경우엔 비관계형 데이터베이스와 ODM을 선택하는 편이 좋다!

2. 데이터 세트의 크기를 고려해보자

세트가 클수록 비관계형 데이터베이스와 ODM을 선택하는 편이 좋다. 비관계형은 어느 타입의 데이터 세트든 제한 없이 저장할 수 있고, 타입을 수정하는 것 역시 유연하기 때문이다. 반면 관계형 데이터베이스는 읽기와 쓰기 작업에 특화된 작거나 중간 정도 크기의 데이터 세트를 다룰 때 가장 효율이 좋다!

 

 

ERD (Entity-Relation Diagram)

- 개체 관계도. 데이터베이스 내 존재 개체들을 정의하고, 각 개체들 간의 관계를 보여준다.

- 쉽게 생각하면 데이터베이스를 설계할 때, 데이터베이스를 모델링한 다이어그램 그림을 그려서 구조를 한눈에 파악할 수 있게 함!

참조 : https://mslilsunshine.tistory.com/164

 

핵심 개념은 개체(Entity)-속성(Attribute)-관계(Relationship) 세 가지로, 투박하게 예를 들자면 성춘향과 이몽룡이란 두 개체가 있다 해보자. 춘향은 인간, 여성 등의 속성을 갖고, 몽룡은 인간, 남성 등의 속성을 갖는다. 그리고 둘은 서로 사랑하는 사이라는 관계를 갖는다.

  • 개체 : 관리하고자 하는 정보의 실체(쉽게 생각하면 테이블 하나). 하나 이상의 식별자(UID)를 가져야함. (쉽게 생각하면 기본키가 설정된 컬럼)
  • 속성 : 개체의 구성 요소. 데이터 타입을 반드시 명시해줘야함. (쉽게 생각하면 자료형, default값, unique 등등)
  • 관계 : 말 그대로 관계. 1:1 관계 / 1:N 관계 / N:M 관계 등이 있음

 

 

STREAM과 BUFFER

데이터를 처리하는 두 방식. 스트림은 연속적인 데이터 처리에 유리하고, 버퍼는 비연속적인 데이터 처리에 유리함.

 

STREAM

  • 스트림은 데이터가 출발지에서 목적지로 이동하는 동안, 중간 저장 없이 직접 전송됨.
  • 실시간 데이터 처리에 유리하지만, 데이터 크기나 전송 속도에 따라 처리의 복잡성이 심화될 수 있음
  • 파일 읽기/쓰기나 네트워크 통신 등의 다양한 입출력 작업에 활용!

 

BUFFER

  • 버퍼는 데이터를 임시 저장 영역에 일정량 모아두었다가 한 번에 전송함.
  • 네트워크 지연이나 네트워크 간 속도 차이를 완화시키는데 효과적임.
  • 데이터베이스 접근이나 네트워크 통신 최적화 등에 활용!