⚠️ 해당 게시글은 모던애자일 팀원이 준비한 테크톡 내용입니다.

출처 : 모던애자일 3기 백승범

https://blog.naver.com/wer06099/222593516977

 

SQL vs NoSQL

다음주에 있을 테크톡 주제로 SQL과 NoSQL을 주제로 ppt를 만들어 발표를 하게 되었습니다. 그래서 ...

blog.naver.com

데이터베이스를 구글링 해보면

- 일반적으로 컴퓨터 시스템에 전자적으로 저장되는 구조화된 정보 또는 데이터의 조직화된 모음입니다.

라고 나오는데 컴공과 학생인 저도 겨우 이해했는데 일반인이 볼때는 무슨소리인가 할 것입니다.

제가 예시를 하나 들어보겠습니다.

이런 문서가 하나 있다고 가정하면, 이 문서를 좀더 쉽게 볼수 없을까 하는 생각이 들것입니다.

저 문서를 구조화된 데이터 즉 DB로 만들면 밑에 사진과 같이 보기 편하게 만들 수 있을 것 입니다.

-DB의 종류와 특징-

1. 관계형 데이터베이스

- 현재 가장 많이 사용되고 있는 데이터베이스의 한 종류이다.

- 테이블로 이루어져 있으며, 키와 값의 관계를 나타낸다.

2. 객체지향 데이터베이스

- 객체개념을 데이터베이스에 도입한것.

- 모든것을 클래스 또는 객체로 표현한다.

- 비정형 복합 정보의 모델링이 가능하다.

비정형 정보란 관계형 DB에서 지원되는 날짜, 문자, 숫자 등의 데이터들을 일컫는 정형정보와는

반대되는 개념으로 멀티미디어, 이메일, 문서등이 이에 해당된다.

- 기본적인 DB 기능에 있어 안전성과 성능이 떨어진다.

ex) 부모의 정보를 DB에 저장하고, 또 그것을 자식테이블이 상속받고, 이런식으로 계속 루프를 돌아 상속을 받는다고 가정하였을 때,

특정 정보를 가져올 때, 어느 정보가 어느 테이블에 있다를 기억하지 않는이상 가져오기 힘들기 때문에 성능이 떨어진다고 할 수 있다.

3. 객체 관계형 데이터베이스

- 관계형 DB에 안정된 성능에 기반하며 객체지향 DB의 장점을 합친것이 객체 관계형 DB이다.

- 정보가 테이블형태 또는 객체형태로 저장되도록 한다.

1.SQL(Structured Query Language)?

SQL은 데이터 베이스와 대화하기 위해 특별히 디자인이 된 언어이다.

SQL을 쓰는 DB의 종류에는 MySQL, PostgreSQL, SQLite 등이 있다.

대다수의 회사, 정부기관, 은행 등등 다수 기관들이 SQL DB를 사용한다.

SQL DB에 students라는 테이블이 있고 그 테이블에 3가지 행이 있다고 생각해 봅시다. 이름 나이 성별

SELECT 이름 FROM stdents;

students 테이블에서 이름에 대한 데이터를 가져오고 싶으면 위 코드와 같이 써주면 된다.

여기서 쓴 SQL 커맨드는 SELECT, FROM 두가지 이다.

보다시피 영어랑 비슷한데 이것은 SQL이 프로그래밍 언어가 아닌 쿼리용 언어라 그렇다.

※ 쿼리언어 -> 질의용 언어(문법체계), DB와 정보시스템에 질의를 할 수 있게 해주는 고급 컴퓨터 언어이다.

예제하나를 더 들어보면 나이가 21살 이상인 학생들의 이름을 가져와라 라고 문제가 주어지면

SELECT 이름 FROM students WHERE 나이 > 21;

이 코드에서 커맨드를 보면 영어랑 똑같아서 보자마자 이해하실 수 있을거 같습니다.

2.NoSQL?

SQL문이 없어도 사용할 수 있는 데이터베이스라고 볼 수 있다.

- 종류 -

1. Key-value 모델 : Object, JSON 자료형 형식으로 데이터를 쉽게쉽게 저장 출력이 가능합니다. (가장 심플)

데이터를 엄청 빠르게 많이 써야하고, 많이 읽어야할때 Key-Value DB를 사용한다.

ex) CassandraDB - column wide database 유형, 읽고 쓰기 빠르다. 엄청 많은 수의 아이템을 1초만에 쓸 수 있다.

검색엔진처럼 많은 양의 데이터를 빠르게 읽어야한다면 쓰기 좋은 DB이다.

애플이 카산드라를 이용하여 10페타바이트의 데이터를 저장하고있다. (기가 -> 테라 -> 페타)

또한 Netflix, Uber, Instargram 등의 기업들도 CassandraDB를 쓰고있다.

이런 회사들의 공통점은 엄청 많은 양의 데이터를 빠르게 저장해야 한다는 공통점을 가지고 있다.

DynamoDB - 분산된 Key - Value DB로서 아마존이 만들었다.

듀오링고라는 앱이 DynamoDB를 사용하는데 매초 24,000 개의 읽기를 지원한다고 한다.

2. Document 모델 : 테이블 대신 Collection이라는 문서 기반으로 데이터를 분류하고 저장합니다. (테이블보다 유연하다)

ex) mongoDB - json document 형태로 저장,

보통의 SQL처럼 행과 열이 존재하는 것이 아니라 개발자가 원하는 어떤 종류의 어떤 모먕의 데이터든 저장가능하다.

3. Graph 모델 : 데이터를 노드의 형태로 저장하고 노드간의 흐름 또는 관계를 저장할 수 있습니다.

ex) faceBook - TaoDB (faceBook에서 자체적으로 만든 DB), Instargram.

- 특징 -

1. Scaling이 쉽다.

2. 대부분 다루기가 쉽다.

3. 대부분 스키마 정의 없이도 쉽게 쓸 수 있다.

4. NoSQL 데이터베이스는 기본적으로 SQL에서의 JOIN 연산을 적용하는게 기본적으로 어렵다.

3.차이점

SQL은 데이터를 정리할때, 쇼핑몰을 예시로 들때 소비자들이 옷을 구매했을 경우, 어떤 옷이 몇개나 팔렸나 알아내야 하는데,

이를 알아보기 쉽게 하기위해 SQL DB로 저장을 하면 더욱 깔끔하게 나타낼 수 있다.

대부분의 경우 SQL로 다 커버가 가능하기때문.

NoSQL은 특별한 경우, 특별한 이슈에 대응하기에 좋은 DB들이다.

ex) Instargram, faceBook

처음에 SQL로 프로젝트를 진행하고, 추후 프로젝트의 규모가 점점 커진다 했을 때, NoSQL로 바꾸어도 늦지않는다.

ex) Instargram도 처음에는 PostgreSQL로 시작하였지만 점차 규모가 커져 GraphDB로 옮겼다.

[출처] SQL vs NoSQL|작성자 백승범

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기