Database

[WIL] ORM, noSQL vs SQL

반응형

ORM(Object-Relation Mapping)이란?

객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 것을 말합니다.

기존에는 DB의 값을 뽑아오기 위해서는 쿼리라는 명령문으로 값을 가져와야 했습니다. 물론 값을 추출하는 것 뿐만 아니라 삽입, 삭제, 수정 등의 구문도 있습니다. 서버 개발자가 DB에 접근하기 위해서 쿼리문을 써야했지만 ORM을 사용함으로서 어플리케이션에서 기존의 언어로도 DB에 접근이 가능해졌습니다.

 

ORM은 Object modeling과 Relational modeling을 이해해야합니다.

객체를 만드는 클래스와 관계형 DB사이의 차이가 존재하기 때문에 ORM을 사용하여 연결합니다.

 

 

장점

1. 쿼리문을 직접 사용하지 않고 entity를 객체로 표현할 수 있습니다.

2. 객체간의 관계를 바탕으로 sql을 자동으로 생성하여 간극을 줄여줍니다.

 

단점

1. sql문을 사용하는 것보다 성능이 떨어집니다.

2. 규모가 큰 프로젝트의 경우 유지보수가 힘들 수 있습니다.

 

 

SQL vs NoSQL

SQL이란 관계형 데이터베이스에서 사용하는 명령문입니다. 데이터를 추출, 삽입, 삭제, 수정할 수 있습니다. 데이터들끼리 관계를 맺고있기 때문에 관계형 데이터베이스라고 부릅니다.

데이터의 형식이 명확하게 정의되어있는 상태로 작업하기 때문에 데이터의 무결성을 보장할 수 있습니다. 또한 한번 테이블 구조를 잡고 개발을 시작하면 구조를 바꾸기가 힘듭니다.

 

 

NoSQL은 SQL이 아니라는 의미로 'No'가 붙습니다. 대표적으로 MongoDB가 있으며 관계형DB는 table이라고 부르는 반면 NoSQL에서는 document라고 부릅니다. 또한 join을 많이 하지 않는 구조일수록 NoSQL을 사용하면 좋습니다.

스키마의 제한을 두지않아서 나중에 데이터의 형식을 수정할 때 유연합니다.

 

 

 

 

 

 

 

 

 

반응형