ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • RDBMS vs NoSQL
    데이터베이스 2020. 11. 16. 21:31
    반응형

    프로젝트를 구상할 때 데이터베이스는 무엇을 쓸 것인가 하고 고민을 해본 적이 많을 것이다.

    나 같은 경우는 프로젝트 경험이 적기 때문에 써본 데이터베이스가 Oracle, MySQL, MariaDB 밖에 없는데 이거는 모두 RDBMS(관계형 데이터베이스 관리 시스템)이다. 후에 MongoDB를 써보고 싶다는 생각이 있었는데 마침 RDBMS와 NoSQL에 대해 찾아볼 일이 생겨 이렇게 포스팅하게 되었다.

     

     


     

     

    RDBMS

     

     

    RDBMS는 Relational Database Management System의 약자로 관계형 데이터베이스 관리 시스템이라고 합니다.

     

    • SQL(Structured Query Language, 구조화 질의어)를 사용해 데이터의 CRUD가 가능합니다.
    • 정해져 있는 스키마(데이터베이스에서 자료의 구조, 표현 방법, 자료 간의 관계 등을 형식 언어로 정의한 구조)에 따라 데이터베이스 테이블에 저장이 됩니다. 
    • 각  테이블끼리 관계로 연결이 되어 있고, 테이블 여러 개를 조인해서 원하는 데이터를 추출할 수 있습니다.
    • 효율적인 사용을 위해 구조화가 굉장히 중요하며 관계형 데이터베이스의 설계도를 ER(Entitiy Relationship) 모델이라고 합니다.
    • 대표적인 예로 Oracle, MySQL, PostgreSQL 등이 있습니다.

     

     

    NoSQL

     

     

    NoSQL은 Not Only SQL의 약자로 관계형 데이터베이스가 아닌 데이터를 분산하여 저장하는 비관계형 데이터베이스를 의미합니다.

     

    • 스키마가 없고 그로 인해 더 자유롭게 데이터를 관리할 수 있습니다.
    • 관계가 없기 때문에 테이블 간의 조인이 불가능합니다.
    • RDBMS의 복잡도와 용량 한계를 극복하기 위한 목적으로 등장하였기에 RDBMS에 비해 더 큰 용량의 데이터를 저장할 수 있습니다.
    • 대표적인 예로 MongoDB, Cassandra, Neo4j, Redis 등이 있습니다.

     

     

     

    데이터 구조에 따른 NoSQL 유형

     

     

    1) Key-Value Database

     

    출처 : http://www.incodom.kr/NoSQL_DB_%EC%9D%98_%EC%A2%85%EB%A5%98

     

     

    기본적인 패턴으로 Key-Value 하나의 묶음(Unique)으로 저장되는 구조로 단순한 구조이기에 속도가 빠르며 분산 저장시 용이합니다. 예로 Redis, Oracle NoSQL DB 등이 있습니다.

     

     

     

     

    2) Document-oriented Database

     

    출처 : http://www.incodom.kr/NoSQL_DB_%EC%9D%98_%EC%A2%85%EB%A5%98

     

     

    Key-Value형과 마찬가지로 KeyValue 한 쌍으로 데이터를 저장하는데, 이 때 Value가 바로 Document입니다. JSON, XML, YXML과 같은 인코딩 형식을 대부분 사용합니다. Key-Value형과 달리 'Value'에 해당하는 Doucument의 내용을 검색할 수 있어 보다 편리합니다. 예로 MongoDB, Azure Cosmos DB 등이 있습니다.

     

     

     

     

    3) Graph Database

    출처 : https://gaemi606.tistory.com/74

     

     

    데이터를 노드(Node)로 표현하고 노드 사이의 관계를 엣지(Edge)로 표현하는 것으로 RDBMS 보다 Performance가 좋고 유연하며 유지보수에 용이합니다. Social networks 등에 사용할 수 있습니다. 예로 Neo4j, Blazegraph 등이 있습니다.

     

     

     

     

    4) Wide Column Database

     

     

    출처 : http://www.incodom.kr/NoSQL_DB_%EC%9D%98_%EC%A2%85%EB%A5%98

    데이터를 행(row)이 아닌 열(column) 그룹에 저장하는 방식입니다. 한 행에 여러 개의 열을 가질 수 있습니다.

    관계형 데이터베이스에서는 행마다 다른 열을 추가하거나 삭제하지 못했지만 Wide Column Database는 스키마가 없기 때문에 행마다 각각 다른 열을 가질 수 있습니다. 예로 Cassandra, HBase 등이 있습니다. 

     

     

     

     

     

    References

    - gaemi606.tistory.com/74

    - avengersrhydon1121.tistory.com/m/102?category=829326

     

      

    728x90

    '데이터베이스' 카테고리의 다른 글

    인덱스(Index) 란?  (0) 2020.11.03

    댓글

Designed by Tistory.