q1: NoSQL, ACID

a1:

NoSQL

NoSQL은 전통적인 **관계형 데이터베이스(RDB)**와는 다른 방식으로 데이터를 저장하고 관리하는 데이터베이스 유형입니다.
Not Only SQL”이라는 의미로, 유연한 데이터 구조와 확장성이 필요한 현대의 대규모 데이터 처리 환경에 적합합니다.

NoSQL의 주요 특징
1. 유연한 데이터 모델
• 테이블, 행, 열 기반의 고정된 스키마를 가지는 RDB와 달리, NoSQL은 스키마가 없거나 매우 유연합니다.
• 데이터를 키-값, 문서, 그래프, 컬럼 기반 등 다양한 방식으로 저장합니다.
2. 수평적 확장성
• 노드를 추가하여 용량을 확장할 수 있어, 대규모 데이터와 트래픽 처리에 적합합니다.
• 특히 클라우드 환경에서 효율적입니다.
3. 높은 성능
• 간단한 데이터 모델로 인해 데이터 읽기와 쓰기 속도가 빠릅니다.
• 대규모 분산 환경에서도 일관된 성능을 제공합니다.
4. CAP 이론
• NoSQL 데이터베이스는 일관성(Consistency), 가용성(Availability), 분할 내구성(Partition Tolerance)두 가지를 우선시합니다.
• 일반적으로 가용성과 분할 내구성을 선택하는 경우가 많습니다.

NoSQL 데이터베이스의 종류
• 키-값 스토어: Redis, FoundationDB
• 문서 기반 DB: MongoDB, CouchDB
• 컬럼 기반 DB: Cassandra, HBase
• 그래프 DB: Neo4j

ACID 특성

ACID는 데이터베이스 트랜잭션이 안전하고 신뢰성 있게 처리되도록 보장하는 4가지 속성을 의미합니다.
관계형 데이터베이스에서 주로 강조되었지만, FoundationDB처럼 NoSQL 환경에서도 ACID를 지원할 수 있습니다.

ACID의 구성 요소
1. Atomicity (원자성)
• 트랜잭션은 모두 성공하거나, 실패 시 완전히 롤백됩니다.
• 부분적으로 실행된 상태는 허용되지 않습니다.
• 예: 은행 송금 시, 한 계좌에서 돈이 빠져나갔으면 반드시 다른 계좌에 입금되어야 함.
2. Consistency (일관성)
• 트랜잭션 수행 후 데이터베이스는 항상 일관된 상태를 유지합니다.
• 데이터 무결성이 보장됩니다.
• 예: 데이터베이스의 제약 조건(유일성, 외래키 등)이 항상 만족됨.
3. Isolation (고립성)
• 동시에 실행되는 트랜잭션이 서로 간섭하지 않습니다.
• 각 트랜잭션은 독립적으로 실행된 것처럼 보여야 합니다.
• 예: 동시에 여러 사용자가 주문해도 데이터가 충돌하거나 잘못 기록되지 않음.
4. Durability (지속성)
• 트랜잭션이 완료된 후에는 시스템 장애가 발생하더라도 데이터가 영구적으로 저장됩니다.
• 예: 전원이 꺼져도 주문 정보는 데이터베이스에 남아 있어야 함.

FoundationDB에서 NoSQL과 ACID의 조합
• NoSQL:
FoundationDB는 데이터를 키-값 스토어로 관리하며, 분산 환경에서 뛰어난 확장성과 성능을 제공합니다.
• ACID:
FoundationDB는 트랜잭션 지원을 통해 NoSQL의 유연성과 관계형 데이터베이스의 신뢰성을 결합했습니다.
즉, 대규모 분산 시스템에서도 데이터의 무결성과 일관성을 보장합니다.

결과적으로, FoundationDB는 NoSQL의 확장성과 ACID의 안정성을 동시에 제공하여 현대 데이터 처리 환경에 적합한 선택지가 됩니다.

반응형

+ Recent posts