study/TIL🐥

ORM/NoSQL

서나쓰 2020. 12. 27. 15:25
728x90

ORM?

Object Relational Mapping, 객체-관계 매핑

  • 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 것을 말한다.
  • 객체 간의 관계를 바탕으로 SQL을 자동 생성해서 sql 쿼리문 없이도 데이터베이스의 데이터들을 다룰 수 있다.

ORM의 장점

  • 객체 지향적인 코드로 인해 더 직관적이고 비즈니스 로직에 더 집중할 수 있게 도와준다.
  • 재사용 및 유지보수의 편리성이 증가한다.
  • 특정 DB에 한정 되지 않기 때문에 나중에 어떤 DB로든 쉽게 migration 가능하다

ORM의 단점

  • 완벽하게 ORM으로만 서비스를 구현하기가 어렵다.
  • 프로시저가 많은 시스템에선 ORM의 객체 지향적인 장점을 활용하기 어렵다

NoSQL?

  • Not Only SQL이라고도 표현되며 SQL 또는 관계형 DB만을 사용하지 않고 여러유형의 DB를 사용하는 확장된 DB를 말한다.
  • 기본적으로 SQL과 반대되는 접근방식을 따르고 비관계형 데이터베이스라고 불리며 스키마가 없다.
  • NoSQL에서는 테이블(table)을 컬렉션(Collection)으로,  레코드(record)를 문서(documents)라고 부른다
  • 데이터의 일관성이 보장되어야 하거나 여러번의 조인 연산이 필요한 데이터라면 NoSQL을 사용하는 것 보다 RDBMS를 사용하는 것이 좋을 것이다. NoSQL은 RDBMS를 대체하기 위한 데이터베이스가 아니라 상호 보완할 수 있는 데이터베이스이며, 따라서 목적에 맞게 사용하는 것이 중요하다.
  • 예를 들어 구매 내역이나 게임의 로그 같은 데이터들은 매 초마다 엄청난 양이 생성되지만 한번 저장되고 난 뒤에는 수정될 일이 거의 없다. 거기다 생성되는 데이터의 양도 많기 때문에 장비의 성능에도 상당한 영향을 미칠 것이다. NoSQL은 이러한 데이터들을 효율적으로 저장할 수 있다. 여러 대의 장비에 빠른 속도로 저장이 가능하며, 데이터의 양이 누적되더라도 얼마든지 수평적 확장이 가능하기 때문이다.
  • 실제로 페이스북이나 트위터 같은 SNS에서는 게시글들을 저장하는 데 NoSQL 데이터베이스를 사용하고 있다.

출처 : https://shoark7.github.io/programming/knowledge/what-is-NoSQL

728x90

'study > TIL🐥' 카테고리의 다른 글

MySQL의 마스코트는 왜 돌고래인가?  (0) 2020.12.28
파일시스템과 데이터베이스  (0) 2020.12.28
DAO란?  (0) 2020.12.27
데이터웨어하우스(DW)란?  (0) 2020.12.27
인텔리제이의 장점  (0) 2020.12.26