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 부족으로 이어질 수 있습니다.
- 비교적 새로운 기술인 NewSQL 은 일부 제품에서 커뮤니티 지원이나 생태계가 제한적일 수 있습니다. 이는
Scalability 의 한계
NoSQL 의 장점
- HBase 는
Horizontal Scaling 에 최적화
되어 있어, 대규모 데이터 처리와 높은 쓰기 및 읽기 처리량을 제공합니다.
- HBase 는
NewSQL 의 한계
NewSQL System 은 Scalability 를 제공하지만, ACID Transaction 을 유지하기 위해 Node 간 동기화가 필요하므로, Scalability 에 제한이 있을 수 있습니다.
매우 대규모의 분산 환경에서 성능 저하가 발생
할 수 있습니다.
운영 복잡성과 비용
NoSQL 의 장점
- HBase 는 대용량 데이터 처리를 위해 설계되어 있으며, Distributed File System (HDFS) 위에서 동작하여
Storage 비용을 효율적으로 관리
할 수 있습니다.
- HBase 는 대용량 데이터 처리를 위해 설계되어 있으며, Distributed File System (HDFS) 위에서 동작하여
NewSQL 의 한계
일부 NewSQL Database 는 Memory 기반 이거나
고성능 하드웨어를 필요로 하여, 초기 구축 비용과 운영 비용이 높을 수 있습니다.
또한
복잡한 Architecture 로 인해 운영 및 관리가 어려울 수 있습니다.
특정 기능의 부족
NoSQL 의 장점
- HBase 는
대량의 쓰기 작업과 Sequential Scan 에 최적화
되어 있으며, Time Series 데이터 처리 등에 강점을 가지고 있습니다.
- HBase 는
NewSQL 의 한계
- NewSQL 은
복잡한 Transaction 처리에 적합
하지만,대량의 단순한 쓰기 작업이나 Time Series 데이터 처리에서는 NoSQL 만큼 효율적이지 않을 수 있습니다.
- NewSQL 은
성능 비교
쓰기 및 읽기 Throughput
HBase > NewSQL
HBase
대용량 데이터의 고속 쓰기 및 읽기에 최적화
되어 있으며,Horizontal Scaling 을 통해 Throughput 을 쉽게 늘릴 수 있습니다.
NewSQL
- Transaction Consistency 를 유지하면서도 성능을 제공하지만, Node 간 동기화로 인해
순수한 Throughput 에서는 NoSQL 보다 낮을 수 있습니다.
- Transaction Consistency 를 유지하면서도 성능을 제공하지만, Node 간 동기화로 인해
Transaction 처리
HBase < NewSQL
HBase
- 기본적으로 ACID Transaction 을 지원하지 않으며, 단일 Row 수준의 Atomicity 를 제공합니다.
NewSQL
- 완전한 ACID Transaction 을 지원하여
복잡한 Transaction 이 필요한 Application 에서 우수한 성능을 발휘합니다.
- 완전한 ACID Transaction 을 지원하여
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 의 적용
Data Ingestion 및 Data Warehouse 구축
ETL (Extract, Transform, Load)
Data Modeling (Fact table, Dimension table, Summary table)
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
- i.e.
Data Manipulation Language (DML)
Database 의 데이터를 조회하고 조작하는 데 사용 됩니다.
데이터를 INSERT, UPDATE, DELETE 하거나 조회하는 명령어 들이 포함됩니다.
- i.e.
SELECT
,INSERT
,UPDATE
,DELETE
- i.e.
Data Control Language (DCL)
Database 사용 권한을 관리하는 명령어입니다.
사용자가 Database 에 접근할 수 있는 권한을 설정하거나 해제할 수 있습니다.
- i.e.
GRANT
,REVOKE
- i.e.
Transaction Control Language (TCL)
Database 의 Transaction 을 제어하는 명령어로, 작업 단위를 정의하고 관리합니다.
- i.e.
COMMIT
,ROLLBACK
,SAVEPOINT
- i.e.