본문 바로가기
Learn to Code

[Database] (개념) 관계형 데이터베이스, NoSQL, NoSQL 종류

by CEOSEO 2021. 5. 25.
728x90
반응형

 

데이터베이스(database)란 체계적으로 정리된 데이터의 집합을 뜻한다. 컴퓨터공학에선, 데이터베이스의 종류에 따라 데이터베이스 관리 시스템을 분류한다. 이러한 데이터베이스의 종류는 크게 두가지로 나눌 수 있는데, 바로 관계형 데이터베이스(relational database)와 주로 NoSQL이라고 불리는 비관계형 데이터베이스(non-relational database)가 이에 해당된다.

 

 

 

1. 관계형 데이터베이스(Relational database)

 

1980년대 대세로 떠오른 관계형 데이터베이스는 행과 열로 이루어진 테이블 형태로 데이터를 저장한다. 테이블 형태로 저장된 상태에선, 행과 열의 조합에 따라 데이터의 식별과 데이터로의 접근이 다른 데이터와의 관계 속에서 이루어지기 때문에 관계형 데이터라고 불린다(출처).

 

테이블 형태로 저장된 데이터 예시

 

 

관계형 데이터베이스에서 데이터를 적고 불러오는데 사용하는 데이터베이스용 프로그래밍 언어를 SQL이라고 부른다. SQL은 Structured Query Language의 약자로, 원어 그대로 '구조화된 쿼리(query) 언어'를 뜻한다. SQL을 사용하여 데이터베이스의 데이터를 가져오는 것 뿐만 아니라 데이터 생성이나 수정 등 다양한 행동을 할 수 있다. 기본적은 SQL 사용법은 온라인상 무료로 접할 수 있는 컨텐츠를 통해 쉽게 배울 수 있다. 특히, w3school의 상세한 튜토리얼은 다양한 퀴즈들과도 함께 제공되니 연습해볼 때 큰 도움이 된다.

 

 

 

 

 

 

2. NoSQL

2000년대에 들어 각광받기 시작한 NoSQL은, 관계형 데이터베이스와는 다르게 데이터가 고정되어 있지 않은 형태의 데이터베이스를 뜻한다. NoSQL은 저장하는 데이터의 타입에 더욱 적합한 방식으로 선택하여 데이터베이스를 구축할 수 있다는 장점이 있다. 관계형 데이터베이스에선 데이터를 쓸 때엔 정해진 스키마(schema)에 맞추어 작성해야 하지만, NoSQL에선 데이터를 읽어올 때  좀 더 융통성있는 스키마 사용을 실현할 수 있다.

 

행열로 이루어진 테이블 형태의 관계형 데이터베이스와 다르게, NoSQL은 여러가지 형태로 저장한 데이터들의 형태를 통칭하기도 한다. 그렇기 때문에 NoSQL로 분류된 데이터베이스들은 저장 방식에 따라 세분화를 할 수 있다. 아래는 주로 사용되는 4가지 NoSQL 데이터베이스 타입이다 (출처):

 

 

 

Key-value store 예시

 

2-1. Key-value store

Key-value store는 여러 종류의 NoSQL 데이터베이스 중 가장 간단한 타입이다. 데이터가 key-value 쌍을 속성으로 하는 배열 형태로 저장된다. 저장 형태가 굉장히 단순하기 때문에, 높은 확장성(scalability)을 큰 장점으로 가지고 있으며 대량의 데이터를 저장할 수 있다는 특징이 있다. Key-value store의 형태를 띤 서비스로는 Redis, Voldemort (...뭐..??!), Riak, 그리고 Dynamo가 있다(출처).

 

Voldemort 검색할 땐 Project Voldemort라고 쳐야한다. 안그러면 유노후가 나온다.

 

Dynamo는 DynamoDB로 검색하자. 영국은 역시 마법사들의 나라인가...?

 

 

 

2-2. Document store

문서형 데이터베이스에선, 데이터를 테이블이 아닌 문서처럼 저장을 한다. 주로, JSON 유사 형식으로 데이터를 저장한다. 스키마를 통해 지정될 수 있는 특정 문서 스타일로 저장을 해야하기 때문에  key-value 타입보다 한단계 높은 복잡성을 갖고 있다고 할 수 있다. 문서형 NoSQL 데이터베이스론 MongoDB CouchDB 등이 있다.

 

관계형 데이터베이스(왼쪽)와 NoSQL 문서형 데이터베이스의 비교

 

 

2-3. Column-oriented database

Row-oriented vs. Column-oriented

전통적인 관계형 데이터베이스와 같이 테이블 형태이지만, 관계형 데이터베이스와는 다르게 row(행)가 아닌 column(열)에 대한 데이터 관리에 집중하는 데이터베이스이다. 하나의 column에 많은 데이터를 추가할 수 있다는 장점이 있으며, 주로 규모가 큰 데이터 분석에 사용된다.

 

Google BigTable 소개

 

그렇다면 언제 row(행) 중심의 관계형 데이터베이스를 쓰고 언제 column(열) 중심의 데이터베이스를 써야 좋은 것일까? Column-oriented의 경우엔, 새로운 행을 추가하는 것이 어려운 일이 아니기 때문에 행 추가가 자주 일어날 것으로 예상되는 경우에 사용할 수 있다. 다만, 온전한 하나의 새로운 record를 추가하는 일이 많은 경우엔 일이 복잡해질 수 있기 때문에 row-oriented가 더 나을 수 있다. Column-oriented 데이터베이스의 예시로는 Cassandra, BigTable, HBase 등이 있다.

 

 

2-4. Graph database

그래프형 데이터베이스 예시

NoSQL 데이터베이스 타입들 중 가장 높은 복잡도를 가지고 있는 타입이다. 엔티티(entities)들간의 관계를 저장하는 것이 중요한 경우 사용한다. 그래프형 데이터베이스는 두 가지 주요 요소가 있다. 바로 노드(node)와 간선(edge)이다. 

- 노드: 엔티티들 자체

- 간선: 두 노드간의 관계. 방향을 가질 수 있다.

그래프형 데이터베이스의 예시로는 OrientDB, JanusGraph, Neo4J 등이 있다.

 

 

 

 

관계형 vs. NoSQL

 

관계형 vs. NoSQL, 어떤 걸 사용하면 좋을까?

관계형과 NoSQL 데이터에베이스 중 무엇을 선택해야할까? 어떤 형식이 절대적으로 더 좋다라는 답은 없으나, 이에 대한 선택은 데이터베이스를 사용하고자 하는 서비스의 성향에 달려있다고 할 수 있다. 만약 서비스에서 사용되는 데이터가 일관적인 형태를 띄고 있고, 예상 가능한 면이 크다면 굳이 NoSQL을 사용할 필요가 없다. 또한, FINTECH와 같이 ACID 성질을 준수해야할 필요성이 큰 서비스에선 관계형 데이터베이스를 사용하는 것이 안전하다.  반면, 서비스의 성격상 업데이트가 잦거나, 정해진 데이터 구조가 없으면서 대용량의 데이터를 저장해야할 경우엔 NoSQL을 사용하는 것이 좋다.

 

 

 

전세계 데이터베이스 서비스 사용 트렌드 (2021)

앞서서, 데이터베이스에도 여러 종류가 있고, 데이터베이스를 사용하려는 서비스의 성향에 따라 각기 다른 형태를 선택할 수 있다고 설명했다. 그렇다면, 데이터베이스 시장 상황은 어떨까? 아래는 2013년부터 2021년 5월까지, 상용화된 데이터베이스 사용 실태를 보여주는 통계이다.

출처: https://db-engines.com/en/ranking_trend

 

 

출처: https://db-engines.com/en/ranking

 

 

 

 

728x90
반응형

댓글