ORM / no SQL vs SQL

Tacocat·2022년 2월 6일
0

Javascript

목록 보기
3/4

ORM

ORM(Object relatinal mapping)이란 객체 지향 프로그래밍 코드를 사용하여 객체 및 관계형 데이터베이스 간에 데이터를 변환하는 프로그래밍 기술이다. 객체 모델은 클래스를, 관계형 데이터베이스 모델은 테이블을 사용하는데에서 이 둘의 데이터를 서로 호환될 수 있게끔 만들어주는 과정이 필요하고, 이를 ORM이라고 한다.

ORM은 객체 지향적인 코드를 사용하기 때문에 객체 지향이 갖는 장점들을 그대로 가져온다. 생산성 증가, DB에 대한 낮은 의존도로부터의 DB 종속성 감소, 코드의 재사용성 증가 등이다.

하지만 단점도 존재한다. 우선 사용하기가 편리한 만큼 코드의 설계 난이도가 높다. 또한 프로시저가 많을 수록 객체 지향이 가지는 장점이 희미해지기 때문에, 이런 경우 일반적인 SQL이 더 낫다.

SQL vs no SQL

SQL
SQL은 Structured Query Language의 줄임말로, 관계형 데이터베이스 관리 시스템에서 데이터를 저장, 수정 등의 조작과 검색을 하기 위해서 설계된 언어이다.

no SQL
no SQL은 이름에서 알 수 있듯 SQL 형식이 아닌, 즉 비 관계형 데이터베이스 관리 시스템에서 데이터를 관리하기 위해 설계된 언어이다.

관계형 데이터베이스는 사전에 정해진 스키마가 존재하며, 데이터는 그 스키마를 따라 테이블 안에 저장된다. 또한 데이터의 중복을 피하기 위해 관계를 이용하고, 테이블 간에 중복된 데이터가 없으므로 중복된 데이터를 참조하는 위험을 사전에 방지할 수 있다. 단점으로는 이후 스키마를 변경해야 할 때가 생긴다면 과정이 어렵고 복잡하며, 시스템이 커질 수록 관계라는 특징에서 오는 JOIN문이 많은 복잡한 쿼리가 만들어질 수 있다. 또한 확장 시 수직 확장을 해야 하기 때문에 서버에서 하드웨어 용량을 늘리는 방식으로 확장이 이루어지고, 따라서 드는 비용이 비싸다.

비관계형 데이터는 스키마가 동적이기 때문에, 정의된 구조를 따라서 데이터가 저장되는 것이 아닌 유연성을 지닌다. 따라서 스키마의 구조변경이 자유롭고 데이터의 분산이 용이하다. 확장도 서버를 추가하는 수평 확장이 가능하기 때문에 드는 비용의 기댓값도 SQL에 비해 낮다. 단점으로는 SQL에는 자유로운 데이터 중복의 위험성을 가지고 있으며 이렇게 중복된 데이터를 수정할 시 이곳저곳 흩어져 있는 모든 컬렉션에서 동일한 작업을 수행해 줘야 한다. 또한 스키마의 유연성에서 오는 데이터 구조의 모호함이 있다.

참조
http://www.incodom.kr/ORM#h_702209f3f35878a32ee91352ddc6bbe7 (orm)
https://ko.myservername.com/sql-vs-nosql-exact-differences
(SQL과 NoSQL의 정확한 차이점 및 NoSQL 및 SQL 사용시기 파악)
https://pythontoomuchinformation.tistory.com/528#:~:text=out%20%EB%98%90%ED%95%9C%20%EA%B0%80%EB%8A%A5.-,%EB%8B%A8%EC%A0%90,%ED%95%98%EA%B8%B0%EA%B0%80%20%EC%96%B4%EB%A0%A4%EC%9A%B8%20%EC%88%98%20%EC%9E%88%EB%8B%A4.
(RDBMS와 NOSQL의 차이점 및 장단점)

profile
개발자 꿈나무

0개의 댓글