Etc

[DataBase] SQL ? NoSQL? 그리고 ORM

천우산__ ㅣ 2023. 5. 11. 20:55

SQL과 NoSQL은 무엇이고, 무슨 차이가 있을까?

 

데이터 베이스의 종류에는 SLQ과 NoSQL이 있다. 일반적으로는 '데이터 베이스'라고 하면 엑셀과 같이

 

격자형으로 구성된 데이터 테이블을 연상하는데, 이것이 바로 SQL다.

 

SQL은 Structured Query Language의 약자로, 관계형 데이터 베이스에서 사용하는 주요 언어이다.

 

반면, NoSQL이라고 하면 SQL이 아니다의 No, SQL 로 이해할 수도 있겠지만 Not only SQLd의 약자이다. 

 

이 단어는 SQL과 달리, 비관계형 데이터베이스를 지칭하는 용어이다.

 

그렇다면, SQL(관계형 데이터 베이스)과 NoSQL(비관계형 데이터 베이스)의 차이는 무엇일까?

 

가장 큰 차이는, 같은 테이블 (컬렉션) 에서 정의되지 않은 필드 (행)을 추가할 수 있는지의 여부가 있다.

 

예를 들어, A라는 테이블에 이름, 나이, 성별을 수집하는 테이블(컬렉션)을 정의했다고 가정하자. 이후 '주소' 라는 신규 행을 추가하기 위해서

 

관계형 데이터 베이스에서는 모델에 대한 작업을 추가해야하지만, 비관계형 데이터베이스에서는 큰 제약 없이 데이터 추가가 가능하다.

 

기존에 수집하지 않고 있던 정보를 신규 추가할수 있다는 면에서, 비관계형 데이터 베이스는 확장성이 뛰어나다는 장점을 가지고 있다.

 

반면, 관계형 데이터 베이스에서는 비관계형 데이터 베이스 대비 데이터의 일관성과 무결성을 유지할 수 있으며,

 

테이블 간의 결합이 뛰어나다는 장점을 가지고 있다. 특히, 계좌 이체 등 데이터의 높은 신뢰성이 요구되는 경우, 일반적으로

 

관계형 데이터 베이스를 사용하여 서비스를 구축한다,

 

ORM 이란?

 

서버와 클라이언트는 프로그래밍 언어로 작성되었기 때문에 데이터를 주로 객체 형태로 주고 받는다.

 

하지만 SQL은 데이터는 테이블로 저장하기 때문에, 서버와 데이터 베이스 간 통신 이뤄질 때, 서로 다른 성격을 가지고 있어 조작이 어려울 수 있는데

 

데이터 베이스의 테이블을 객체와 같이 조작할 수 있도록 해주는 것이 바로 ORM이다.

 

ORM을 사용하면 개발자는 데이터 베이스를 객체 처럼 다룰 수 있기 때문에 코드 작성이 용이해지고, 생산성이 향상된다는 장점이 있다.

 

또한 ORM 자체의 장점 (대부분의 관계형 데이터 베이스 제품과 호환) 때문에 개발 도중 데이터 베이스를 교체한다는 이슈가 발생해도

 

비교적 쉽게 대처할 수 있다는 장점을 가지고 있다.

 

예시로는 python의 Django ORM, Nodejs의 Sequelize ORM, Java의 Hibernate ORM 등이 있다.

 

 

'Etc' 카테고리의 다른 글

[WebRTC] 웹 RTC 구현해보기 - N : N 연결  (1) 2023.08.07
[WebRTC] 웹 RTC 구현해보기 - 1 : 1 연결  (3) 2023.07.15
[ETC] vscode 환경에서 ssh 이용하기  (0) 2023.05.20
[Nodejs] package.json 이란?  (0) 2023.05.02
REST? RESTful?  (0) 2023.04.20