NewSQL in Data Engineering (Korean)

NewSQL in Data Engineering (Korean)

Useful Technology about NewSQL for Data Engineer

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