분산, 비정형 DB처리엔 NoSQL, “그러나 장·단점 엇갈려”
NoSQL, ‘유연성, 확장성, 분산과 속도 장점 vs 일관성 등 문제“
관계형, ‘정확성, 일관성, 무결성 장점 vs 고비용, 확장성은 한계”
[애플경제 전윤미 기자] 기존 ‘관계형 데이터베이스’(Relational Databases) 뿐 아니라, 점차 ‘NoSQL 데이터베이스’(NoSQL Databases)가 많이 활용되고 있는 추세다.
‘관계형’은 데이터를 행과 열로 구성하며, 데이터 포인트가 서로 관련된 테이블 집합을 형성하는 방식이다. 이를 위해 SQL을 통해 자료를 처리하곤 한다.
그러나 NoSQL(NoSQL Databases)는 ‘No’라는 접두어가 표현하듯, 데이터의 일관성을 일정 부분 포기한 대신, 여러 대의 컴퓨터에 데이터를 분산, 저장하는 것을 목표로 개발된 것이다. NoSQL의 등장으로 인해 작고 값싼 장비 여러 대로 대량의 데이터와 컴퓨팅 부하를 처리하는 것이 가능하게 된 것이다.
점차 NoSQL DB로 마이그레이션 추세?
최근엔 관계형 DB 클라우드에서 NoSQL DB로 마이그레이션하는 사례가 날로 증가하고 있다. 이는 데이터 구성이 유연하고, 비정형 데이터를 처리할 때 한층 사용하기 쉽기 때문이다. 그럼에도 불구하고, 양자의 우열을 단편적으로 평가하는 것은 무리라는 지적이다. 대신에 각기 다른 상황과 조건에 따라 선택할 문제라고 할 수 있다.
기존 관계형 데이터베이스 관리 시스템(RDMS)은 여전히 널리 애용되고 있다. 실제로 많은 NoSQL 데이터베이스가 SQL 방식 쿼리도 지원한다. 그러나 모바일, 소셜, 클라우드, 센서 등 각종 플랫폼과 디바이스에 넘쳐나는 비정형 데이터를 처리하는데엔 NoSQL이 단연코 뛰어나다는게 사용자들의 대체적인 평가다. 이들은 “방대한 비정형 데이터를 처리할 때 더 쉽고, 수평적 유연성이나, 스키마 유연성이 뛰어나다.”고 입을 모은다.
그럼에도 이들을 놓고 보면 각기 장·단점이 있다. 스키마 구조(데이터 유형), 데이터 구성, 트랜잭션, 사용 편의성, 유연성, 마이그레이션 기능 등에서 각기 장·단점이 엇갈린다.
NoSQL 데이터베이스의 장·단점
NoSQL 데이터베이스는 저장되는 데이터 유형과 구조 방식에서 높은 운영 속도와 유연성이 특징이다. 주로 대규모 분산 데이터 세트에 사용되며, 특히 빅데이터 및 실시간 애플리케이션을 처리할 때 효과적이다. 관계형 데이터베이스와 달리 NoSQL 데이터베이스는 빠르게 변화하는 비정형 데이터를 처리하도록 특별히 설계되어 있다. 동적이고 다양한 데이터 형식을 처리하는 기업이나 부서에 적합한 셈이다.
이는 우선 수평적 확장이 가능해서, 방대한 양의 데이터를 처리할 수 있다. 데이터 모델링 구조 역시 경직된 스키마가 없고, 문서 저장소, 키-값 저장소, 그래프 DB 등 다양한 유형의 데이터 형식에 적합하다. 이는 또한 분산 환경에 적합하게 설계된 것도 장점이다.
관계형 DB와는 달리 경직된 구조에 속하지 않는 비정형 데이터를 쉽게 처리할 수 있다. 특히 비용면에서 유리하다. 클라우드 환경에선 특히 기존 관계형DB보다 적은 비용으로 효율적인 작업을 할 수 있다.
그러나 SQL을 사용하는 관계형 데이터베이스와 달리, NoSQL은 데이터베이스 전문가가 별도로 학습해야 하는 고유한 쿼리 언어를 사용한다는 점이 불편하다. 또 분산의 특성이 있다보니, 데이터 일관성을 확보하는게 쉽지 않다.
일관성이나, 격리성, 내구성있는 트랜잭션이 이뤄지지 않아, 드물지않게 애플리케이션에 문제가 생기기도 한다는 것도 단점이다. 백업이나 복구가 어렵다는 점도 문제다. 분산 아키텍처의 경우 백업이나 복구 프로세스가 쉽지 않다. 그래서 “이런 측면에선 관계형 데이터베이스보다 더욱 정교한 전략이 필요하다”는 지적이다.
관계형 데이터베이스의 장·단점
이에 비해 관계형 데이터베이스(DB)는 훨씬 오래전부터 사용되어 왔다. NoSQL 데이터베이스와 달리 서로 관련된 데이터 포인트를 저장, 액세스할 수 있게 한다. 이는 한 마디로 데이터 간의 종속성을 정의한 관계를 바탕으로 연결된 테이블 구조를 사용하는 모델이라고 할 수 있다.
그렇다보니 주로 데이터 정확성이나, 일관성, 무결성이 요구되는 애플리케이션에 유용하다. 데이터를 저장, 검색하는데 많이 사용되면서 다양한 비즈니스 애플리케이션의 도구가 되고 있다. 또한 매우 정확하고 안정된 애플리케이션에 필수적인 ACID 트랜잭션을 지원한다. 보안기능도 뛰어나며, 오랜 시장 경험을 바탕으로 다양한 툴, 방대한 문서, 탄탄한 커뮤니티, 공급업체 등도 장점으로 꼽힌다.
다만 한층 강력한 하드웨어를 추가하는 수직적 확장이 필요한데, 그러기엔 비용이 많이 들고 한계가 있다는게 단점이다. 경직된 스키마 설계도 단점으로 꼽힌다. 미리 정의된 스키마는 데이터 구조 변경을 수용하는 데 있어 유연성이 떨어질 수 밖에 없다. 그렇다보니 기존 스키마를 수정하는 데 상당한 노력이 필요하다.
대용량 데이터를 처리할 경우 성능에 문제가 생긴다. 빅데이터 애플리케이션에서처럼 매우 큰 용량의 데이터 또는 고속 데이터를 처리할 때 병목 현상이 발생하기도 한다. 특히 이는 비정형 또는 반정형 데이터를 처리하는데 적합하지 않다. 또한 유지 관리나 확장을 하는데엔 리소스 집약적이고 비용이 많이 들 수 있다. 특히 고성능 하드웨어가 필요한 대규모 데이터베이스의 경우 더욱 그렇다.
“각기 환경과 조건따라 양자 택일”
이처럼 관계형 또는 NoSQL 클라우드 데이터베이스는 각기 다른 장·단점을 갖고 있다. 이에 기업이나 조직의 특성에 맞는 제품을 선택할 필요가 있다.
예를 들어 NoSQL 데이터베이스 중에서도 대중적인 제품 몇 가지를 보면, 아마존의 ‘Amazon DynamoDB’의 경우 최소한의 유지 관리만으로 높은 안정성과 확장성이 있는 NoSQL 데이터베이스를 보장한다. 흔히 웹 애플리케이션, 게임, 모바일 앱, 사물 인터넷(IoT)에 배포된다.
완전 관리형 클라우드 NoSQL로선 ‘MongoDB Atlas’가 그중 하나다. 이는 데이터 형식에 대한 유연한 스키마가 필요한 애플리케이션에 적합하다. 특히 웹이나 모바일 애플리케이션과 IoT에 가장 적합한 제품이란 반응이 많다.
높은 유연성과 내결함성 측면에선 ‘Apache Cassandra’도 적합하다. 또 ‘Couchbase’의 경우 모바일 및 엣지 컴퓨팅 등 방대한 처리량과 낮은 지연 시간을 요구하는 대화형 애플리케이션에 적합하다.
관계형 데이터베이스로선 오라클의 ‘Oracle Cloud’를 생각할 수 있다. 이는 강력한 성능과 보안, 안정성이 필요한 대규모 엔터프라이즈 애플리케이션에 가장 적합하다. 또한 MS의 ‘Microsoft SQL Server’는 MS제품과 긴밀하게 통합된 포괄적인 솔루션이 필요한 경우에 유용하다. ‘PostgreSQL’은 확장성에 중점을 둔 오픈 소스 옵션을 찾는 기업이나 부서에게 권할 만하다.
