NewSQL in Data Engineering (Korean)

Gyuhang ShimGyuhang Shim
22 min read

Introduction

  • 전통적인 RDBMS 의 특성을 유지하면서도 NoSQL 시스템이 제공하는 확장성과 성능을 제공하기 위한 새로운 유형의 Database 기술입니다.

  • 전통적인 RDBMS 는 ACID (Atomicity, Consistency, Isolation, Durability) 특성을 잘 지원하고, 데이터 Consistency 와 Transaction 을 보장하지만, Horizontal Scaling (즉, 여러 서버로 쉽게 확장하는 것) 에는 한계가 있었습니다.

  • 반면, NoSQL 시스템은 확장성이 뛰어나지만, 데이터 Consistency 나 Transaction 을 포기해야 하는 경우가 많았습니다.

  • NewSQL 은 이 두 가지 접근법의 장점을 결합 하려는 시도로 등장했습니다. 즉, 기존 RDBMS 의 ACID Transaction 과 SQL Query Language 를 그대로 유지하면서도, Clustering 과 Distributed Architecture 를 통해 높은 성능과 확장성을 제공합니다.

주요 특징

  • ACID Transaction Support

    • 전통적인 RDBMS 처럼 Strong Transaction Consistency 를 유지합니다.

    • 이는 특히 금융 서비스, 전자 상거래 등에서 중요한 요구사항입니다.

  • Horizontal Scaling

    • NewSQL 은 데이터를 여러 Node (Server) 에 분산시키고, Node 를 추가하는 것만으로 시스템을 확장할 수 있습니다.

    • NoSQL 처럼 Horizontally Scaling 가능하다는 점에서 기존 RDBMS 와 차별화됩니다.

  • SQL Interface

    • 기존의 SQL Language 를 지원 하므로, 기존 RDBMS 사용자들이 쉽게 전환할 수 있습니다.

    • 이는 기존 SQL 기반 Application 이 큰 수정 없이 NewSQL 시스템으로 이전할 수 있도록 해줍니다.

  • High Performance

    • NewSQL System 은 Memory based Computation, Distributed Query Processing, 최적화된 데이터 Partitioning 및 Placement 등의 기술을 활용하여 높은 처리 성능을 제공합니다.

대표적인 NewSQL 데이터베이스

  • Google Spanner

    • Global Scaling 을 지원하는 Google의 NewSQL Database.

    • Google 의 F1 서비스와 같은 대규모 서비스에 사용됩니다.

  • CockroachDB

    • Distributed SQL Database 로, Fault Tolerance 와 Scaling 을 목표로 설계되었습니다.
  • VoltDB

    • 실시간 분석과 빠른 데이터 처리를 지원하는 In-Memory 기반 NewSQL Database
  • NuoDB

    • Cloud 환경에서 높은 확장성과 유연성을 제공하는 NewSQL System

NewSQL 의 장점과 단점

장점

  • ACID Transaction 을 유지하면서도 고성능, 확장성을 제공

  • 기존 RDBMS 의 SQL Interface 를 사용할 수 있어, 전환 비용이 적음

  • NoSQL System 과 달리 Data Model 이 Relational 이므로, Data 의 Structural Integrity 를 유지하기 쉬움

단점

  • System 이 복잡해질 수 있으며, 설정과 운영이 어려울 수 있음

  • Large Scale Distributed System 에서의 Tranaction 관리로 인해 성능이 제한될 수 있음

  • 일부 Solution 은 아직 성숙하지 않은 상태라서 Use Case 에 따라 신중한 선택이 필요

NewSQL 의 대표적인 Use Case 와 소개

Google Spanner (Cloud Spanner)

  • 사용 기업

    • Google, Paypal, Zynga, Snap Inc 등
  • 사용 사례

    • Google Spanner 는 Google 내부의 다양한 서비스 Google Ads, Google Play 와 같은 글로벌 분산 서비스에서 사용됩니다.

    • 특히 수십억 명의 사용자를 대상으로 하는 Application 에서의 데이터 Consistency 유지와 Horizontal Scaling 을 동시에 해결할 수 있습니다.

  • 특징

    • 글로벌 분산 및 High Avalibility

      • Global Distributed Database 로서, 전 세계에 걸친 Node 에 데이터를 저장하고, Transaction Consistency 를 보장합니다.

      • 지리적으로 분산된 Database 를 지원하며, 여러 데이터 센터에 걸쳐 데이터를 저장합니다.

    • Strong ACID Transaction

      • 분산 환경에서도 Strong ACID Transaction 을 지원 하므로, Transaction 이 데이터 Consistency 를 유지하도록 합니다.
    • SQL Interface

      • ANSI SQL 을 지원 하므로 기존 RDBMS 사용자들이 쉽게 전환할 수 있습니다.

      • Data Model 은 Relational Model 을 따릅니다.

CockroachDB

  • 사용 기업

    • Uber, Baidu, Yelp, eBay, Tier Mobility
  • 사용 사례

    • Uber 는 CockroachDB 를 통해 지리적으로 분산된 Database 에서 Strong Transaction Consistency 를 유지하면서도 High Availability 를 달성하고 있습니다.

    • 이를 통해 각 지역의 데이터가 서로 독립적 이지만 필요할 때 통합적으로 관리될 수 있습니다.

  • 특징

    • CockroachDB 는 이름처럼 시스템의 일부 Node 가 실패하더라도 전체 시스템이 계속해서 작동할 수 있는 High Availability 을 보장합니다.

    • Distributed Architecture

      • 분산형 Database 로 설계되어, 여러 Node 에 데이터를 분산 저장하고 관리할 수 있습니다.

      • 데이터를 Horizontally Scaling 할 수 있고, Node 를 추가하는 것만으로 쉽게 시스템의 성능과 용량을 확장할 수 있습니다.

    • High Availability 과 자동 복구

      • System 내 일부 Node 에 장애가 발생하더라도, 데이터가 다른 Node 에 복제되어 있어 서비스를 계속해서 운영할 수 있습니다.

      • 자동으로 장애를 감지하고, 해당 Node 를 회복하거나 대체 Node 로 작업을 분산시키는 기능을 가지고 있습니다. 이를 통해 High Availability 와 Durability 를 보장합니다.

    • Strong Transaction Consistency (ACID 지원)

      • ACID Transaction 을 지원하며, 분산 환경에서도 데이터 일관성을 유지합니다.

      • NoSQL 의 확장성과 RDBMS 의 Transaction Consistency 를 결합한 구조로, 금융 서비스나 중요한 데이터 처리 작업에 적합 합니다.

    • Geo-Distributed Database (지리적 분산 지원)

      • 데이터가 여러 지역에 분산 저장될 수 있도록 설계되어, Global Application 에서 지리적 분산을 쉽게 구현할 수 있습니다.

      • 특정 데이터를 특정 지역에 저장하도록 구성할 수 있으며, 사용자 요청에 가까운 위치에서 데이터를 처리할 수 있습니다. 이를 통해 Latency (지연 시간) 을 줄일 수 있습니다.

    • SQL Interface

      • ANSI SQL 인터페이스를 사용하여, 기존의 RDBMS에서 사용하는 SQL 언어를 그대로 사용할 수 있습니다. 이로 인해 기존 애플리케이션을 큰 수정 없이 쉽게 전환할 수 있습니다.
  • 장점

    • High Availability

      • Node 간 자동 복구 및 재배치 기능을 통해 시스템이 안정적으로 운영될 수 있습니다.
    • Horizontal Scaling (수평적 확장)

      • Node 를 추가함으로써 System 성능을 쉽게 확장할 수 있습니다.
    • 지리적 분산 지원

      • 여러 지역에 걸친 데이터 저장과 처리가 가능해 Global 서비스에서 유리합니다.
    • ACID Transaction Support

      • 데이터 Consistency (일관성) 과 Reliability (신뢰성) 를 보장합니다.

단점

  • 복잡성

    • Distributed Transaction 관리가 필요한 경우 설정과 운영이 다소 복잡할 수 있습니다.
  • 지연 시간

    • 분산 환경에서의 데이터 Consistency 유지로 인해, Node 간의 통신이 필요한 작업에서 지연이 발생할 수 있습니다.

VoltDB

  • 사용 기업 분류

    • Financial Services, Telecommunications, IoT, Online Gaming
  • 사용 사례

    • Financial Services

      • 사용 목적

        • 금융 거래의 실시간 승인, Fraud Detection (사기 감지), Transaction Monitoring 등에 사용됩니다.

        • 예를 들어, 수천 건의 Transaction 을 초 단위로 처리해야 하는 금융 기관들이 VoltDB 의 성능을 활용하여 실시간 데이터 처리를 수행합니다.

      • 대표 기업

        • 카드 결제 서비스 제공업체와 전자 지갑 서비스 기업들이 VoltDB 를 사용해 Transaction 을 실시간으로 모니터링하고, 사기 행위를 신속하게 탐지합니다.
    • Telecommunications

      • 사용 목적

        • 통신사들은 Network Traffic Monitoring, 데이터 사용량 추적, 실시간 과금 시스템에 VoltDB 를 사용합니다.

        • 실시간 데이터를 분석해 통화 품질 문제를 감지하고, Network Traffic 을 최적화하는 데 활용합니다.

      • 대표 기업

        • 전화 및 인터넷 서비스 제공업체들은 VoltDB 를 사용하여 고객 사용 데이터를 실시간으로 분석하고, 데이터 과금 모델을 개선하거나 Network 장애를 신속히 파악합니다.
    • IoT

      • 사용 목적

        • IoT Sensor 데이터의 실시간 분석을 위해 많이 사용됩니다.

        • 수백만 개의 Device 가 데이터를 지속적으로 전송할 때, 이를 실시간으로 분석하고 처리할 수 있어야 합니다.

        • VoltDB 는 이러한 요구를 충족시킬 수 있는 강력한 성능을 제공합니다.

      • 대표 기업

        • Smart Home 시스템, 공장 자동화, Smart City 프로젝트 등에서 사용되며, Sensor 데이터의 실시간 처리와 이벤트 감지에 활용됩니다.
  • 특징

    • In-Memory Database

      • VoltDB 는 모든 데이터를 Memory (RAM) 에 저장하여 매우 빠른 데이터 Access 와 처리가 가능합니다.

      • 이를 통해 DISK I/O 의 병목 현상을 제거하고, mili-second 단위의 응답 시간을 제공합니다.

      • In-Memory 구조 덕분에 빠른 데이터 insert, update, read 작업이 가능하며, 실시간 데이터 처리가 필요한 시스템에 적합합니다.

    • ACID Transaction Support

      • 분산 환경에서도 Strong ACID (Atomicity, Consistency, Isolation, Durability) Transaction 을 보장합니다.

      • 이는 금융 서비스, IoT, 통신과 같이 높은 Consistency 와 데이터 Reliability 가 필요한 Application 에 유리합니다.

      • 인메모리 아키텍처와 ACID 트랜잭션을 결합하여 대규모 데이터 트랜잭션을 실시간으로 처리할 수 있습니다.

    • Horizontal Scaling (Scale-Out)

      • 여러 Server 에 걸쳐 데이터를 분산 저장하고, Node 를 추가하는 것만으로 쉽게 System 을 확장할 수 있습니다.

      • 이 Horizontal Scaling 은 고성능을 유지하면서도 데이터 용량과 Traffic 을 쉽게 관리할 수 있게 해 줍니다.

      • 데이터는 여러 Node 에 걸쳐 자동으로 분할 및 복제 되므로, 장애가 발생해도 데이터 손실을 최소화하고, 서비스를 지속적으로 운영할 수 있습니다.

    • 실시간 데이터 분석

      • 데이터가 입력 되자마자 실시간으로 분석할 수 있는 기능을 제공하며, Event Stream 처리나 실시간 데이터 Monitoring 에 적합합니다.

        • 이를 통해 즉각적인 데이터 기반 의사 결정을 내릴 수 있습니다.
      • CEP (Complex Event Processing) 기능을 통해 실시간으로 이벤트를 감지하고, 빠르게 대응할 수 있는 System 을 구축할 수 있습니다.

    • 내구성 및 장애 복구

      • In-Memory Database 임에도 불구하고, 주기적으로 데이터를 DISK 에 Check-Point 로 저장하고, 복제 기능을 통해 Node 장애 시에도 데이터를 복구할 수 있습니다.

      • 내구성 있는 DISK Backup 과 복구 기능이 있어서, 데이터 유실을 방지하며 안정적인 System 운영이 가능합니다.

  • 단점

    • Memory 의존성

      • VoltDB 는 In-Memory Database 로, 대부분의 데이터를 RAM 에 저장합니다.

      • 이 때문에 Memory 용량이 Database 의 크기와 성능에 직접적인 영향을 미칩니다. 데이터가 많아질수록 더 많은 RAM 이 필요하며, Memory 용량이 부족하면 성능 저하가 발생할 수 있습니다.

      • 비용 문제

        • 대규모 데이터를 처리 하려면 고용량 Memory 를 갖춘 서버가 필요하므로, hardware 비용이 증가 할 수 있습니다.

        • 이로 인해 디스크 기반 DBMS 보다 비용이 많이 들 수 있습니다.

    • 확장성 한계

      • VoltDB 는 수평적으로 확장할 수 있지만, 메모리 기반 시스템의 특성상 완전한 무제한 확장은 어렵습니다.

      • Memory 크기와 Node 간 Network 통신이 성능에 중요한 영향을 미치기 때문에, 특정 규모 이상으로 확장할 경우 성능이 저하 될 수 있습니다.

      • 이로 인해, 초대형 데이터 처리나 장기 데이터 저장이 필요한 경우에는 Data Architecture 를 잘 설계해야 하고, 다른 Database 와의 연동이나 Hybrid 구조를 검토해야 할 수 있습니다.

    • Data Persistency (영속성)

      • 기본적으로 In-Memory Database 는 Memory 에 모든 데이터를 저장 하므로, 서버가 Reboot 되거나 System 장애가 발생하면 데이터가 손실될 수 있습니다.

      • VoltDB 는 이를 보완하기 위해 주기적인 DISK Check-Point 와 데이터 복제를 제공하지만, 데이터 영속성 면에서는 DISK 기반 DBMS 보다 운영 부담이 있을 수 있습니다.

      • DISK Check-Point 는 성능에 영향을 줄 수 있으며, 잘못 설정된 경우 데이터 손실 위험 이 있습니다.

    • 복잡한 운영 및 관리

      • VoltDB 는 In-Memory Database 특성상 Memory, Network, CPU 자원을 효율적으로 관리해야 하기 때문에 운영이 다소 복잡할 수 있습니다.

      • 실시간 데이터 처리와 복제 기능을 사용하면서 자원을 최적화하려면 세심한 설정과 관리가 필요합니다.

      • 분산 환경에서의 데이터 Consistency 와 Replication 관리 등에서 높은 수준의 전문성이 요구 될 수 있습니다.

      • 특히, Node 장애나 Network Issue 가 발생할 때 System 복구가 복잡할 수 있습니다.

    • SQL 표준의 제한된 지원

      • VoltDB 는 ANSI SQL 을 기반으로 하지만, 성능 최적화를 위해 일부 SQL 기능이 제한되거나 지원되지 않을 수 있습 니다.

        • 예를 들어, 복잡한 JOIN 이나 Sub-Query 처리에서 제한이 있을 수 있으며, 개발자는 VoltDB 의 성능에 최적화된 Query 를 작성해야 합니다.
      • 이는 기존의 RDBMS 에서 사용하는 복잡한 Query 나 Procedure 를 쉽게 이전하기 어려울 수 있다는 것을 의미하며, 새로운 환경에 맞춰 Code 수정이 필요할 수 있습니다.

    • 데이터 Backup 과 복구

      • In-Memory Database 의 특성상 데이터 백업과 복구 작업이 DISK 기반 Database 보다 복잡 할 수 있습니다.

      • 실시간 Database 운영 중에 데이터를 안전하게 백업하고 복구 하려면 주의가 필요하며, 백업 중 시스템 부하가 증가할 수 있습니다.

      • 대규모 데이터 환경에서는 복구 시간이 오래 걸릴 수 있으며, 이로 인해 가동 Down Time 이 길어질 위험 이 있습니다.

NuoDB

  • 사용 사례

    • Dassault Systèmes

      • 사용 목적

        • Dassault Systèmes 는 NuoDB 를 자사의 Cloud 기반 CAD (CAD 및 제품 수명 주기 관리) Solution 에 사용합니다.

        • 특히 Global 사용자들에게 안정적이고 빠른 성능을 제공하기 위해 NuoDB 의 지리적 분산 처리 및 확장성을 활용하고 있습니다.

      • 특징

        • CAD Solution 은 대규모의 복잡한 데이터 구조와 빠른 데이터 접근을 필요로 하기 때문에, NuoDB 의 확장성과 실시간 Transaction 처리 능력이 큰 장점으로 작용합니다.
    • Alegeus

      • 사용 목적

        • 미국의 Health Care 결제 솔루션 제공업체인 Alegeus 는 실시간 결제 처리와 데이터 관리를 위해 NuoDB 를 도입했습니다.

        • NuoDB 의 ACID Transaction 기능과 Cloud Native 설계 덕분에 안정적인 결제 처리가 가능합니다.

      • 특징

        • 실시간 Transaction 을 처리하는 Health Care 서비스에서 데이터 Consistency 와 Availability 가 중요한데, NuoDB 는 이를 Cloud 환경에서 무중단으로 제공할 수 있습니다.
    • 자동차 제조 및 물류

      • 사용 목적

        • NuoDB 는 자동차 제조 및 물류 분야에서도 사용되며, 특히 Global 제조사가 다양한 지역에 걸쳐 데이터를 실시간으로 처리하고 동기화하는 데 도움을 줍니다.

        • 이러한 시스템은 생산 라인의 효율성 향상과 글로벌 공급망 관리에 기여합니다.

      • 특징

        • High Availability 와 실시간 데이터 처리를 통해 생산성을 높이고, 공급망의 유연성을 확보할 수 있습니다.
    • SaaS 및 Cloud Service 제공 업체

      • 사용 목적

        • SaaS Solution 을 제공하는 많은 기업들이 NuoDB 를 사용하여 Multi-Tenant Application 을 효과적으로 관리합니다.

        • 이러한 서비스들은 NuoDB 의 Horizontal Scaling 덕분에, 고객 증가에 따라 쉽게 Resource 를 조정할 수 있습니다.

      • 특징

        • 무 중단 업그레이드와 유연한 스케일링을 지원 하여, Cloud 기반 Application 에 적합합니다.
  • 특징

    • Distributed Architecture

      • NuoDB 는 여러 Node 에 데이터를 분산 저장하여 수평적 확장이 가능하도록 설계되었습니다.

      • Node 를 추가함으로써 Database 의 성능과 용량을 확장할 수 있습니다.

        • 이로 인해 Traffic 증가에 대응하기가 쉽고, 수 백에서 수 천 개의 Node 까지 확장이 가능합니다.
      • 자체적인 분산 처리 메커니즘을 사용하여 Database 를 여러 Region 이나 Data Center 에 걸쳐 배포할 수 있으며, 지리적 분산 처리가 가능합니다.

    • ACID Transaction Support

      • 기존 RDBMS 처럼 ACID (Atomicity, Consistency, Isolation, Durability) Transaction 을 보장합니다.

        • 이는 금융 서비스, 전자상거래와 같은 중요한 데이터 처리를 요구하는 시스템에 적합합니다.
      • Transaction Consistency 를 유지하면서도 Cloud 환경에서 확장이 가능해, Data Consistency 와 High Availability 을 동시에 확보할 수 있습니다.

    • On-Demand Horizontal Scaling

      • 사용자가 Database Node 를 실시간으로 추가하거나 제거 할 수 있습니다.

        • 이를 통해 필요에 따라 Resource 를 즉각적으로 조정할 수 있어, 클라우드 환경에서의 유연한 운영이 가능합니다.
      • 무 중단 운영을 지원 하며, Node 를 추가하거나 제거하더라도 서비스가 중단되지 않고 계속해서 운영됩니다.

    • Continuous Availability (지속적인 가용성)

      • NuoDB 는 High Availability 를 목표로 설계되어, 한 Node 에 장애가 발생하더라도 다른 Node 가 이를 즉각적으로 대체하여 시스템의 가용성을 유지할 수 있습니다.

      • 데이터 복제를 통해 데이터 손실을 방지하며, 자동으로 장애를 감지하고 복구할 수 있는 기능을 제공합니다.

    • Cloud Native 설계

      • NuoDB 는 Cloud 환경에서의 배포와 관리를 고려하여 설계되었습니다.

      • Kubernetes 와 같은 Container Orchestration 도구와 통합이 가능하며, Public Cloud 뿐만 아니라 Private Cloud 와 Hybrid Cloud 환경에서도 쉽게 배포할 수 있습니다.

      • Multi-Tenant Architecture 를 지원하여, 여러 Application 이 동일한 Infra 를 공유 하면서도 서로 독립적으로 작동할 수 있습니다.

  • 단점

    • 복잡한 Architecture

      • NuoDB 는 Multi-Tier Archirecture 를 사용하여 Transaction Engine (TE) 과 Storage Manager (SM) 를 분리합니다.

      • 이는 유연성과 확장성을 제공하지만, 설정과 운영이 다소 복잡 할 수 있습니다.

      • 특히, System 을 확장하거나 새로운 Node 를 추가할 때, 적절한 설정과 관리가 필요하며, 운영팀에게 높은 수준의 전문성이 요구됩니다.

    • 성능 최적화의 어려움

      • NuoDB 는 기본적으로 ACID Transaction 과 데이터 Consistency 를 유지하는데, 분산 환경에서 이를 구현 하려면 Node 간의 통신이 빈번하게 발생 합니다.

        • 이로 인해 Network 지연이나 Transaction 처리 속도가 저하될 수 있습니다.
      • 복잡한 Transaction 이나 대규모 데이터 처리 시 성능이 저하 될 가능성이 있으며, 최적의 성능을 유지하려면 세심한 성능 Tuning 과 Cluster 구성 설정이 필요합니다.

    • 제한된 커뮤니티와 생태계

      • NuoDB 는 다른 Open Source Database 나 인기 있는 상용 DBMS 에 비해 사용 사례가 적고, 커뮤니티가 크지 않습니다. 이는 문제 발생 시 도움을 받을 수 있는 Resource 가 제한적일 수 있다는 것을 의미합니다.

      • 생태계가 비교적 작기 때문에, 다양한 Open Source Tool 이나 Solution 과의 호환성 문제가 있을 수 있습니다. 특히 특정 기능을 사용하려면 NuoDB 의 독자적인 Solution 을 사용해야 하는 경우가 많아, 기존 시스템과의 통합이 어려울 수 있습니다.

    • 비용 문제

      • NuoDB 는 상용 소프트웨어로, 사용량에 따라 비용이 발생합니다. Cloud 환경에서의 유연한 확장성을 제공하지만, Traffic 이 급증하거나 많은 Resource 를 사용하는 Application 의 경우 비용이 크게 증가할 수 있습니다.

      • 특히, Horizontal Scaling 을 위해 Node 를 추가할 때마다 License 비용이 증가할 수 있으므로, 비용 관리가 중요한 과제가 될 수 있습니다.

    • 데이터 복구 및 백업의 복잡성

      • 분산 환경에서의 데이터 Backup 과 복구는 항상 복잡한 작업이지만, NuoDB 의 경우 데이터가 여러 Node 에 분산되어 있기 때문에, 특정 상황에서 복구 작업이 더 어려울 수 있습니다.

      • 특히, Network 문제나 Node 장애가 발생했을 때 데이터 Consistency 를 유지하면서 복구하는 데 시간이 많이 소요 될 수 있으며, 복구 과정 중에 시스템 성능이 저하 될 가능성도 있습니다.

    • 성숙도 부족

      • NuoDB 는 시장에서 비교적 새로운 기술로, 오랜 기간 동안 검증된 전통적인 RDBMS 만큼의 안정성과 성숙도를 갖추지 못한 경우가 있습니다. 이는 특히 Mission Critical 한 Application 에서 신중한 테스트와 검증이 필요하다는 것을 의미 합니다.

      • 새로운 기능이 빠르게 도입되지만, 일부 기능의 안정성이나 Bug 가 문제가 될 수 있으며, Update 나 Patch 관리를 철저히 해야 합니다.

NewSQL 사용 사례 요약

  • 전자 상거래 및 핀테크 분야에서는 수백만 건의 Transaction 을 빠르게 처리 하면서도 데이터의 일관성을 유지해야 합니다.

  • NewSQL System 은 이러한 요구를 만족 시키며, 특히 실시간 추천 시스템, Transaction 처리, 재고 관리 등의 영역에서 사용됩니다.

  • 일부 전자 상거래 기업은 NewSQL System 을 활용하여 고객의 결제 과정에서 실시간으로 위험을 평가하고, 결제 승인을 즉시 처리할 수 있습니다.


NewSQL vs Traditional NoSQL (like HBase)

NewSQL 의 단점

  • Data Model 의 유연성 부족

    • NoSQL 의 장점

      • HBase 와 같은 NoSQL Database 는 Column Family, Key-Value Storage, Document Storage 등 다양한 Data Model 을 지원하여 유연한 Schema 를 제공합니다.

      • 이는 구조화 되지 않은 데이터나 빈번한 Schema 변경이 필요한 Application 에 적합합니다.

    • NewSQL 의 한계

      • NewSQL 은 Relational Data Model 을 따르기 때문에 Schema 가 엄격하며, 데이터 구조의 유연성이 떨어집니다.

      • 따라서, 비정형 데이터를 처리하는 데에는 적합하지 않을 수 있습니다.

  • 성숙도와 생태계의 제한

    • NoSQL 의 장점

      • HBase 는 오랜 기간 동안 개발되고 사용 되어 왔으며, 대규모 커뮤니티와 풍부한 도구 생태계를 가지고 있습니다. 이는 문제 해결 시 지원을 받거나 다양한 기능을 활용하는 데 도움이 됩니다.
    • NewSQL 의 한계

      • 비교적 새로운 기술인 NewSQL 은 일부 제품에서 커뮤니티 지원이나 생태계가 제한적일 수 있습니다. 이는 운영 및 개발 시 Resource 부족으로 이어질 수 있습니다.
  • Scalability 의 한계

    • NoSQL 의 장점

      • HBase 는 Horizontal Scaling 에 최적화 되어 있어, 대규모 데이터 처리와 높은 쓰기 및 읽기 처리량을 제공합니다.
    • NewSQL 의 한계

      • NewSQL System 은 Scalability 를 제공하지만, ACID Transaction 을 유지하기 위해 Node 간 동기화가 필요하므로, Scalability 에 제한이 있을 수 있습니다.

      • 매우 대규모의 분산 환경에서 성능 저하가 발생할 수 있습니다.

  • 운영 복잡성과 비용

    • NoSQL 의 장점

      • HBase 는 대용량 데이터 처리를 위해 설계되어 있으며, Distributed File System (HDFS) 위에서 동작하여 Storage 비용을 효율적으로 관리할 수 있습니다.
    • NewSQL 의 한계

      • 일부 NewSQL Database 는 Memory 기반 이거나 고성능 하드웨어를 필요로 하여, 초기 구축 비용과 운영 비용이 높을 수 있습니다.

      • 또한 복잡한 Architecture 로 인해 운영 및 관리가 어려울 수 있습니다.

  • 특정 기능의 부족

    • NoSQL 의 장점

      • HBase 는 대량의 쓰기 작업과 Sequential Scan 에 최적화 되어 있으며, Time Series 데이터 처리 등에 강점을 가지고 있습니다.
    • NewSQL 의 한계

      • NewSQL 은 복잡한 Transaction 처리에 적합하지만, 대량의 단순한 쓰기 작업이나 Time Series 데이터 처리에서는 NoSQL 만큼 효율적이지 않을 수 있습니다.

성능 비교

  • 쓰기 및 읽기 Throughput

    • HBase > NewSQL

    • HBase

      • 대용량 데이터의 고속 쓰기 및 읽기에 최적화되어 있으며, Horizontal Scaling 을 통해 Throughput 을 쉽게 늘릴 수 있습니다.
    • NewSQL

      • Transaction Consistency 를 유지하면서도 성능을 제공하지만, Node 간 동기화로 인해 순수한 Throughput 에서는 NoSQL 보다 낮을 수 있습니다.
  • Transaction 처리

    • HBase < NewSQL

    • HBase

      • 기본적으로 ACID Transaction 을 지원하지 않으며, 단일 Row 수준의 Atomicity 를 제공합니다.
    • NewSQL

      • 완전한 ACID Transaction 을 지원하여 복잡한 Transaction 이 필요한 Application 에서 우수한 성능을 발휘합니다.
  • Latency (지연 시간)

    • HBase > NewSQL

    • HBase

      • 대량의 데이터 처리 시 일정한 Latency 를 유지하지만, Transaction 일관성이 필요 없는 경우에 최적화되어 있습니다.
    • NewSQL

      • Transaction Consistency 를 유지하기 위한 추가적인 Overhead 로 인해 Latency 가 증가할 수 있으나, In-Memory 기술 등을 활용하여 이를 최소화하려고 합니다.
  • 확장성

    • HBase > NewSQL

    • HBase

      • Node 를 추가하여 거의 제한 없이 Horizontal Scaling 이 가능하며, Peta Byte 이상의 데이터도 처리할 수 있습니다.
    • NewSQL

      • 확장이 가능하지만, Transaction Consistency 를 유지하기 위한 제약으로 인해 Large Scale 의 확장에서는 성능 저하가 발생할 수 있습니다.

When to use NewSQL and NoSQL

  • Use Case 에 따른 선택

    • NewSQL 과 NoSQL 은 각각의 강점과 약점을 가지고 있으므로, Application 의 요구 사항에 따라 적합한 Solution 을 선택해야 합니다.

    • NewSQL 이 적합한 경우

      • Strong Transaction Consistency 가 필요하고, Relational Data Model 을 사용하는 Application
    • NoSQL 이 적합한 경우

      • 대용량의 비정형 데이터를 처리하고, Schema 의 유연성이 필요하며, Horizontal Scaling 이 중요한 Application
  • 성능 측면

    • 특정 Load 에 따라 두 System 의 성능은 크게 달라질 수 있습니다.

    • 대량의 데이터 Write 와 Read, Scale Out 이 중요하다면 HBase 가 유리합니다.

    • Transaction Consistency 와 복잡한 Query 처리가 중요하다면 NewSQL 이 더 나은 선택이 될 수 있습니다.


NewSQL and NoSQL in Data Engineering Aspect

NewSQL

  • 특징

    • ACID Transaction Support

      • 기존 RDBMS 의 Transaction Consistency 를 유지하면서도 확장성을 제공합니다.
    • Horizontal Scaling

      • Distributed Architecture 를 통해 Node 를 추가하여 성능과 용량을 확장할 수 있습니다.
    • SQL Interface

      • ANSI SQL 을 지원하여 기존 SQL 기반 Application 과 호환성이 높습니다.
    • 데이터 Consistency 보장

      • 데이터 Consistency 이 중요한 Application 에서 적합합니다.
  • 언제 사용하면 좋은가?

    • Strong Data Consistency 가 필요한 경우

      • 금융 거래 시스템

        • 실시간 결제, 계좌 이체 등에서 데이터의 정확성과 Consistency 가 필수적 입니다.
      • 재고 관리 시스템

        • 재고 수량이 정확해야 하며, 동시성 문제가 발생하면 안 됩니다.
    • 복잡한 Transaction 이 필요한 경우

      • ERP System

        • 여러 부서와 프로세스가 연계되어 복잡한 Transaction 이 발생합니다.
      • 온라인 쇼핑몰

        • 주문 처리, 결제, 재고 업데이트 등이 하나의 Transaction 으로 처리되어야 합니다.
    • SQL 을 활용한 복잡한 Query 가 필요한 경우

      • Business Intelligence (BI)

        • 복잡한 Join 과 Aggregation 이 필요한 보고서 생성에 유리합니다.
      • 데이터 분석 플랫폼

        • Data Scientist 들이 익숙한 SQL 을 사용하여 데이터를 분석할 수 있습니다.

NoSQL

  • 특징

    • 유연한 Schema

      • Schema 가 고정되어 있지 않아, 데이터 구조의 변경이나 비정형 데이터 저장에 용이합니다.
    • Horizontal Scaling

      • Distributed Architecture 로 대용량 데이터 처리와 고성능을 제공합니다.
    • 높은 Write/Read Throughput

      • 대량의 데이터를 빠르게 처리할 수 있습니다.
    • 다양한 데이터 모델 지원

      • Key-Value, Column Familiy, Document, Graph 등 다양한 Model 을 제공합니다.
  • 언제 사용하면 좋은가?

    • Schema 변경이 빈번한 경우

      • SNS (소셜 미디어) 플랫폼

        • 새로운 기능이 추가되며 데이터 구조가 자주 변경됩니다.
      • Log 수집 시스템

        • 다양한 형식의 로그 데이터를 유연하게 저장해야 합니다.
    • 비정형 데이터나 대용량 데이터를 처리해야 하는 경우

      • IoT 데이터 수집

        • 수많은 Sensor 에서 생성되는 데이터를 실시간으로 저장하고 분석해야 합니다.
      • BigData 분석 플랫폼

        • 대량의 비정형 데이터를 저장하고 분산 처리해야 합니다.
    • 고성능이 요구되는 Read/Write 작업

      • 실시간 사용자 Feed

        • 소셜 미디어의 실시간 Feed 업데이트에 높은 Write/Read Throughput 이 필요합니다.
      • Cache System

        • 빠른 데이터 접근이 필요한 경우에 사용됩니다.

Data Engineering Workflow 에 NewSQL 과 NoSQL 의 적용

  1. Data Ingestion 및 Data Warehouse 구축

  2. ETL (Extract, Transform, Load)

  3. Data Modeling (Fact table, Dimension table, Summary table)

  4. BI Tool 활용 (Metric Pro, Metabase, Tableau 등)

1. Data Ingestion 및 Data Warehouse 구축

  • NoSQL 의 적용

    • Unstructured and Semi-Structured Data Ingestion

      • 설명

        • 소셜 미디어, Log 파일, Sensor 데이터 등 다양한 Source 로부터 오는 Unstructued 또는 Semi-Structured 데이터를 수집합니다.
      • 적용

        • MongoDB, Cassandra, HBase 와 같은 NoSQL Database 를 사용하여 Schema 에 구애받지 않고 데이터를 저장합니다.
      • 장점

        • Schema 유연성으로 다양한 데이터 형식을 수집 가능

        • Horizontal Scaling 으로 대용량 데이터 처리에 유리

    • Realtime Data Ingestion

      • 설명

        • Realtime Streaming Data 를 빠르게 수집하고 저장해야 하는 경우
      • 적용

        • Apache Kafka 와 같은 Message Queue 와 결합하여 NoSQL Database 에 데이터를 실시간으로 저장
      • 장점

        • 고속의 Write Throughput

        • 데이터 Latency 최소화

  • NewSQL 의 적용

    • Structured Data Ingestion

      • 설명

        • Transaction Data, 고객 정보 등 Structured Data 를 수집합니다.
      • 적용

        • CockroachDB, VoltDB 등의 NewSQL Database 를 사용하여 데이터를 수집하고 저장합니다.
      • 장점

        • ACID Transaction 지원으로 데이터 Consistency 보장

        • Horizontal Scaling 으로 Traffic 증가에 대응

    • Data Warehouse 구축

      • 설명

        • Data Warehouse 는 기업 내 다양한 Source 에서 데이터를 통합하여 분석하기 위한 중앙 저장소입니다.
      • 적용

        • NewSQL Database 를 사용하여 Data Warehouse 를 구축하면, 기존의 SQL 기반 Tool 과 호환성이 높고, 확장성을 확보할 수 있습니다.
      • 장점

        • 복잡한 Query 에 대한 고성능 처리

        • 기존 SQL 기반 BI Tool 과의 통합 용이

2. ETL (Extract, Transform, Load)

  • NoSQL 의 적용

    • 데이터 Transformation 및 Cleansing

      • 설명

        • 다양한 소스에서 수집된 데이터를 Transform 하고 Cleansing 하는 과정에서 NoSQL Database 를 중간 Staging 영역으로 사용합니다.
      • 적용

        • 데이터 Transform 과정에서 Schema 변경이 빈번한 경우, NoSQL 의 유연한 Schema 를 활용하여 데이터를 일시적으로 저장하고 처리합니다.
      • 장점

        • Schemaless 데이터 저장으로 Transform 과정의 복잡성 감소

        • 대용량 데이터의 병렬 처리에 유리

  • NewSQL 의 적용

    • Transaction Consistency 가 필요한 데이터 Transformation

      • 설명

        • Transform 과정에서 데이터의 Consistency 와 Correctness 가 중요할 때 사용합니다.

          • i.e. 금융 데이터의 집계나 정산 작업
      • 적용

        • NewSQL Database 를 사용하여 Transform 작업을 수행하면 Transaction Consistency 를 유지하면서 데이터를 처리할 수 있습니다.
      • 장점

        • 데이터 Integrity 보장

        • 복잡한 Transformation Logic 구현에 적합

3. Data Modeling (Fact, Dimension, Summary Tables)

  • NoSQL 의 적용

    • Unstructured Data Modeling

      • 설명

        • 제품 리뷰, 소셜 미디어 게시물 등 Unstructured Data 를 분석하기 위한 Modeling
      • 적용

        • Document 지향 NoSQL Database (MongoDB 등) 를 사용하여 데이터의 특성에 맞게 Modeling 을 합니다.
      • 장점

        • 데이터 Structure 에 대한 유연성

        • 복잡한 계층적 데이터를 자연스럽게 표현

    • 대용량 Time Series Data Modeling

      • 설명

        • IoT Sensor Data, Log Data 등의 Time Series Data 를 저장하고 분석하기 위한 모델링
      • 적용

        • HBase, Cassandra 등의 Column Family Type NoSQL Database 를 사용하여 Time Series Data 를 효율적으로 저장합니다.
      • 장점

        • 빠른 Write 및 Retrieval 성능

        • Time Series Data 에 최적화된 Schema 설계 가능

  • NewSQL 의 적용

    • Structured Data Modeling

      • 설명

        • 매출 데이터, 고객 정보 등 Relational Data Model 에 적합한 데이터를 Modeling
      • 적용

        • NewSQL Database 를 사용하여 Fact Table 과 Dimension Table 을 설계하고, SQL 을 활용한 복잡한 Query 및 분석에 대비.
      • 장점

        • Relational Model 을 유지하면서도 확장성 확보

        • 기존의 Data Modeling 기법과 호환성 유지

    • Summary Table 생성

      • 설명

        • 대용량 데이터를 Aggregation 하여 Summary Table 을 생성할 때
      • 적용

        • NewSQL 의 Strong Transaction 처리 능력을 활용하여 정확한 Aggregation 결과를 생성합니다.
      • 장점

        • Data Consistency 를 유지하면서 Aggregation 작업 수행

        • 동시성 제어로 여러 작업이 동시에 진행되어도 정확한 결과 보장

4. BI 도구 활용 (Metric Pro, Metabase, Tableau 등)

  • NoSQL 의 적용

    • Unstructured 데이터 분석

      • 설명

        • NoSQL Database 에 저장된 Unstructured 데이터를 BI 도구에서 시각화하고 분석
      • 적용

        • BI 도구에서 NoSQL Database 와 연결할 수 있는 Connector 나 Driver 를 사용하여 데이터를 가져옵니다.
      • 장점

        • 새로운 Insight 발굴을 위한 유연한 데이터 탐색

        • 대용량 데이터에 대한 빠른 조회

    • 실시간 Dashboard 구축

      • 설명

        • 실시간으로 변하는 데이터를 Monitoring 하기 위한 Dashboard 생성
      • 적용

        • NoSQL Database 의 빠른 Write/Read 성능을 활용하여 실시간 데이터를 BI 도구로 시각화합니다.
      • 장점

        • 데이터 Latency 최소화

        • 실시간 의사 결정 지원

  • NewSQL 의 적용

    • Structured 데이터의 분석 및 시각화

      • 설명

        • 매출 현황, 고객 분석 등 Structured 데이터를 기반으로 한 보고서 및 Dashboard 생성
      • 적용

        • NewSQL Database 는 SQL 을 지원 하므로, BI 도구에서 SQL Query 를 직접 실행하여 데이터를 시각화 할 수 있습니다.
      • 장점

        • 복잡한 Query 에 대한 고성능 응답

        • 기존 SQL 기반 BI 도구와의 완벽한 호환

    • 실시간 분석 및 보고서 생성

      • 설명

        • 실시간으로 집계된 데이터를 기반으로 보고서를 생성하고 의사 결정에 활용
      • 적용

        • NewSQL 의 Realtime Transaction 처리 능력을 활용하여 최신 데이터를 BI 도구에서 조회합니다.
      • 장점

        • 최신 데이터에 대한 빠른 접근

        • 데이터 Consistency 를 보장하여 신뢰성 높은 보고서 제공

요약

  • Data Ingestion 단계에서는 데이터의 형태와 특성에 따라 NoSQL 과 NewSQL 을 선택합니다.

    • Unstructured Data: NoSQL 활용

    • Structured Data 및 Transaction Data: NewSQL 활용

  • ETL 단계에서는 Transformation 과정의 요구 사항에 따라 선택합니다.

    • Schema 변경이 빈번하고 유연성이 필요한 경우: NoSQL 활용

    • Data Consistency 와 Correctness 가 중요한 경우: NewSQL 활용

  • Data Modeling 단계에서는 데이터 모델의 복잡성과 데이터 Consistency 요구 사항에 따라 선택합니다.

    • Unstructured 또는 Semi-Structured Data Modeling: NoSQL 활용

    • Structured Data 및 Relational Modeling: NewSQL 활용

  • BI 도구 활용 단계에서는 분석하려는 데이터의 특성과 BI 도구의 호환성에 따라 선택합니다.

    • Unstructured Data 의 탐색적 분석: NoSQL 활용

    • Structured Data 의 복잡한 분석 및 시각화: NewSQL 활용


용어 정리

ANSI SQL

Introduction

  • ANSI (미국 국립 표준 협회) 와 ISO(국제 표준화 기구) 가 정의한 Database Query Language 의 표준을 가리킵니다.

  • ANSI SQL 은 Relational Database 에서 데이터를 정의하고 조작하는 데 사용하는 명령어와 Syntax 규칙의 집합입니다.

  • 이를 통해 다양한 Database Management System (DBMS) 간에 일관된 방식으로 데이터를 처리하고 Query 할 수 있도록 합니다.

ANSI SQL 의 주요 목적

  • 호환성

    • Database System 간의 호환성을 높이는 것이 가장 큰 목적입니다.

    • 서로 다른 DBMS 가 동일한 표준 SQL 을 사용하도록 함으로써, 한 System 에서 작성된 SQL Code 가 다른 System 에서도 작동할 가능성을 높입니다.

  • 이식성

    • 개발자가 특정 DBMS 에 종속되지 않고, 여러 System 에서 동일한 SQL Code 를 재사용 할 수 있습니다.

    • 이를 통해 Database 간의 전환이나 Migration 이 수월 해집니다.

  • 일관성

    • SQL 언어의 구조와 동작 방식을 표준화 함으로써, 개발자가 어떤 DBMS 를 사용 하든지 SQL 의 기본 규칙과 작동 방식을 이해할 수 있도록 합니다.

ANSI SQL 의 주요 구성 요소

  • Data Definition Language (DDL)

    • Database 의 구조를 정의하는 데 사용됩니다.

    • Table, Index, View, Schema 등을 생성하거나 수정, 삭제하는 명령어 들이 포함됩니다.

      • i.e. CREATE, ALTER, DROP
  • Data Manipulation Language (DML)

    • Database 의 데이터를 조회하고 조작하는 데 사용 됩니다.

    • 데이터를 INSERT, UPDATE, DELETE 하거나 조회하는 명령어 들이 포함됩니다.

      • i.e. SELECT, INSERT, UPDATE, DELETE
  • Data Control Language (DCL)

    • Database 사용 권한을 관리하는 명령어입니다.

    • 사용자가 Database 에 접근할 수 있는 권한을 설정하거나 해제할 수 있습니다.

      • i.e. GRANT, REVOKE
  • Transaction Control Language (TCL)

    • Database 의 Transaction 을 제어하는 명령어로, 작업 단위를 정의하고 관리합니다.

      • i.e. COMMIT, ROLLBACK, SAVEPOINT

0
Subscribe to my newsletter

Read articles from Gyuhang Shim directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Gyuhang Shim
Gyuhang Shim

Gyuhang Shim Passionate about building robust data platforms, I specialize in large-scale data processing technologies such as Hadoop, Spark, Trino, and Kafka. With a deep interest in the JVM ecosystem, I also have a strong affinity for programming in Scala and Rust. Constantly exploring the intersections of high-performance computing and big data, I aim to innovate and push the boundaries of what's possible in the data engineering world.