SQL과 NoSQL 차이점은 무엇일까요?

     

    No SQL은 Not only SQL을 의미하며, 단 하나의 DB를 의미하는 것이 아니라, 거대한 DB의 그룹들이라고 할 수 있습니다. 한국 음식 vs non 한국 음식처럼, SQL과 SQL이 아닌 그 외의 DB를 의미하는 것이라고 할 수 있습니다.

     

      SQL NoSQL
    확장성 수직적 확장성
    RDBMS 머신을 업그레이드 하기 위해서 CPU를 변경하거나 SSD를 변경하는 등 기계에 투자하는 방식
    수평적 확장성
    저장 공간도 서버를 늘리기만 하면 스케일이 계속 늘어나게 된다. 
    응답 속도는 어느정도 보장이 된다.
    쿼리 언어 여부 SQL
    기존의 사이트
    NoSQL
    페이스북, 인스타그램
    스키마 유연성 강함
    인덱스를 사용하면 자료 검색의 속도가 빨라짐
    자유로움
    인덱스를 사용하면 비효율적이기 때문에 KEY를 기준으로 쿼리를 작성하는 것이 중요함
    데이터 베이스 철학 트랜잭션 단위로 비즈니스 로직이 입력되는 것을 의미
    순서대로 ! 정확하게 ! 
    자유로운 insert, 읽어들이는 건 NoSQL은 느리다! RDBMS에 비해서

     

    쇼핑몰처럼 인덱스를 기반으로 한 쿼리 많은 서비스는 데이터 형태에 따라서 RDBMS가 더 잘 어울리는 경우가 있으니,

    핫하다고 NoSQL을 사용하면 안 됩니다!

    반면! Facebook 같은 소셜 미디어 서비스를 만드는데 RDBMS를 사용한다면, 장기적으로 기술적 부채가 됩니다.

     

    즉, 적절한 기술을 사용하는데 서비스의 유지보수성을 높이고, 장기적인 비용을 절감해주고, 서버의 비용을 줄일 수 있습니다.

     

     

    그럼 NoSQL의 종류는 어떤 것들이 있을까요?

     

    NoSQL 종류

     

    1) Document DB

    - mongoDB

    몽고 DB는 json document 형태로 데이터를 저장합니다. 보통의 SQL처럼 행과 열이 존재하는 것이 아니기 때문에,

    개발자가 원하는 어떤 종류의 어떤 모양의 데이터든 저장할 수 있습니다.

     

     

    2) Key-Value DB

    - Cassandra DB

    카산드라 DB는 Column wide database 유형이기도 합니다. 카산드라는 읽고 쓰기가 아주! 매우! 빠르다는 것이 핵심입니다. 카산드라는 많은 수의 아이템을 1초 만에 작성할 수 있습니다. 

     

    애플이 카산드라를 이용해 10페타바이트의 데이터를 저장하고 있고, 넷플릭스, 인스타그램, 우버 같은 회사도 카산드라를 사용하고 있습니다.

     

    검색 엔진처럼 많은 양의 데이터를 빠르게 읽어야 한다면, 카산드라를 사용하면 좋습니다.

     

     

    - Dynamo DB

    다이나모 DB는 서버리스, 즉 분산된 key valueDB로 아마존이 만들었습니다. 

     

    특징!

    엄청 많은 데이터들을 빠르게! 많이! 읽어야 할 때 사용합니다!

     

    document DB와 key-value DB의 차이점은

    어떤 종류의 DB를 얻을 수 있는지가 제한적이라는 것입니다

    저장하기 전에 DB에서 무엇을 얻을 것인지 미리 생각해야 합니다.

     

    3) GraphDB

    column이나 document가 필요 없을 때 사용하며, 각 노드 사이 관계를 알아야 할 때 사용합니다.

    graph DB에서는 document, column으로 데이터를 저장하는 것이 아니라 각각의 entity를 저장하고 이를 관계망으로 연결하는 개념입니다. 

    출처 : 카카오 기술 블로그

     

     

     

    https://youtu.be/CjsVx9sARDU

    https://www.youtube.com/watch?v=Q_9cFgzZr8Q 

     

    728x90

    댓글