본문 바로가기

NoSQL은 무엇인가? RDBMS와 어떤 차이가 있을까?

 

데이터 분석에 관심이 많은 사람들은 NoSQL이란 말을 많이 들어봤을 것이다.

그렇다면 기존에 회사에서 많이 쓰는 SQL 기반의 RDBMS와는 어떤 차이가 있을까? SQL을 안 쓰는 데이터 베이스란 말인가? 제가 처음에 NoSQL을 접할 때는 단순히 관계형 데이터베이스를 유지한테 SQL을 안 쓰는 것으로만 이해를 했었다. NoSQL의 특징 및 장단점에 대해서는 아래에서 자세히 살펴보도록 하자. 그리고 NoSQL의 종류는 어떤 것이 있을까? 어떤 점에서 데이터 중심이 되고 있는 지금 시점에서 RDBMS와는 다른 특징으로 주목을 받고 있을까? 

 

No SQL

 

 

1) NoSQL이란? 

- NoSQL 데이터베이스는 전통적인 관계형 데이터베이스 보다 덜 제한적인 일관성 모델을 이용하는 데이터의 저장 및 검색을 위한 메커니즘을 제공한다. 이러한 접근에 대한 동기에는 디자인의 단순화, 수평적 확장성, 세세한 통제를 포함한다. (위키백과)

 

2) NoSQL의 특징 

- 관계형 데이터베이스와는 달리 테이블간의 관계를 설정하지 않아, Join이 불가능하다. 

- 빅데이터를 처리하기 위해 Scale-up이 아닌 Scale-Out에 용이하도록 발전하였다. 기존의 RDBMS가 데이터 테이블 간의 관계를 중요시하기 때문에, 데이터가 점점 커짐에 따라 하드웨어를 점점 up 시켜서 비용적인 문제가 많이 발생하였다. 이를 해결하기 위해서 데이터의 정합성을 포기하고 인프라를 OUT 하는 방향으로 발전한 것이 이다.  

 

 

3) 종류 

    1. Key-Value Database

        - 데이터가 Key와 Value의 쌍으로 저장 

        - Key로 Value의 정보를 찾을 수 있다. 

        - 이미지, 비디오에서도 사용이 가능하다. 

        - 굉장히 빠르다. 

        - 종류: Redis, Riak, Amazon Dynamo DB 

    2. Document Database

        - 데이터가 Key와 Document 의 형태로 저장

        - 객체 지향의 객체와 유사하다. 

        - Key- Value 모형과 같이 검색에 최적화되어 있다. 

        - 결과가 Json, xml 형태로 나오기 때문에 SQL 형태의 언어를 사용하지 않아 번거로운 단점이 있다. 

        - 종류: MongoDB, CouthDB

 

 

    3. Wide Column Database

        - Column-family Model 기반의 Database 

        - 이전 모델의 Key-Value 값을 모두 Key에서 결정한다. 즉, Key는 Row(키 값), Column-family, Column-name을 가짐

        - 연관된 데이터들은 같은 Column-family 안에 속해 있고, 각자의 Column-name을 가지고 있음 

        - 종류: HBase, Hypertable 등

    4. Graph Database

         - 데이터를 Node와 Edge, Property와 함께 그래프 구조를 사용하여 데이터를 표현하고 저장하는 Database

         - 개체와 관계를 그래프 형태로 표현 (관계형 모델) 

         - 관계의 탐색이 Key일 경우에 적합 

         - 소셜 네트워크에서 내 친구의 친구를 찾는 질의 같은데에 주로 사용 

         - 추천 엔진이나 팬턴인식 등 데이터 베이스로도 적합 

         - 종류: Neo4J

 

 

3) 장점 

- 스키마가 정해져 있지 않기 때문에 자유롭게 데이터를 저장할 수 있음 

- 빅 데이터에서 Scale-out 형식으로 확장할 때 유리 

 

4) 단점 

- 데이터 간의 상관관계가 없기 때문에 일관성이 없고 중복 데이터가 발생할 수 있음 

- 데이터간의 정합성 문제가 발생할 수 있음