NoSQL

Taesoo Kim·2024년 9월 9일

본 포스팅은 학습 및 기록용임을 알립니다.

https://www.samsungsds.com/kr/insights/1232564_4627.html

Definition

관계형 DB에서 제공하는 ACID의 특성을 갖지 않지만, 뛰어난 성능을 갖는 비관계형, 분산 데이터 베이스

ACID?

F-lab의 ACID 설명

트랜잭션을 정의할 때, ACID 속성은 매우 중요한 개념입니다. ACID는 원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 지속성(Durability)의 약자로, 트랜잭션이 안전하게 처리되도록 보장하는 속성들입니다.

이런 속성이 중요한 이유는, 결국 DB는 무결성을 제공하는 서비스이기 때문! 각각의 독립된 데이터가(Atomicity), 서로의 영향을 받지않고 (Isolation), 트랜잭션을 통해 일관되게 유지되며(Consistency), 시스템(서버)의 상태에 상관없이 영구적으로 저장가능하다. (Durability)

Rise of NoSQL

그러나, 2000년 후반으로 넘어오면서 인터넷이 활성화되고, 소셜네트워크 서비스 등이 등장하면서 관계형 데이터 또는 정형데이터가 아닌 데이터, 즉 비정형데이터라는 것을 보다 쉽게 담아서 저장하고 처리할 수 있는 구조를 가진 데이터 베이스들이 관심을 받게 되었고, 해당 기술이 점점 더 발전하게 되면서, NoSQL 데이터베이스가 각광을 받게 된 것입니다.

특히, Facebook, Twitter (현 X), Netflix, Instagram,같은 SNS류 서비스들이 적극적으로 NoSQL을 사용하고 있다고 한다.

NoSQL은 다음과 같은 이유로 RDBMS보다 인기가 있었다고 한다.

1. 유연성

Relation이 없으니, 빠르고 유연한 개발 프로세스를 지원

2. 확장성

리플리케이션, 클러스터링, 샤딩

RDBMS는 ACID 원칙으로 인해 서버 분산을 하기 힘들다. 그래서 서버의 성능을 올리거나 쿼리를 최적화 하는 방식으로 Scale up 하는 반면, NoSQL은 ACID에서 좀 더 자유롭기 때문에 서버 클러스터링, 또는 샤딩이 가능해 진다(Scale Out).

클러스터링: 여러대의 DB서버를 두는 수평적 확장 방식
샤딩: DB 자체를 여러개를 두는 수평적 확장 방식

물론, 고인물들은 RDBMS도 클러스터링하고 샤딩도 한다!
지마켓 Sharded MySQL Cluster 도입기
배민의 샤딩

3. 고성능

NoSQL 데이터베이스는 특정 데이터 모델 및 액세스 패턴에 최적화되었습니다. 따라서 관계형 데이터베이스로 유사한 기능을 수행할 때보다 더 높은 성능을 얻을 수 있습니다.

간단하게 생각하자면 스키마와 쿼리 연산이 없기 때문..

성능 벤치마크나, 더 정확한 이유를 찾으면 수정할게요

더 나아가..

CAP Theory

어떤 DB던 분산 시스템상 Consistency, Availabity, Partition Tolerance를 다 만족시킬 수 없고, 세개중 하나는 무조건 trade off 해야한다는 이론.
https://coding-review.tistory.com/312
https://medium.com/@scheng1028/%EC%9D%B4%EB%A1%A0-%EC%A0%95%EB%A6%AC-cap-%EC%9D%B4%EB%A1%A0-9ff7db0adfdb

Types of NoSQL

Key Value DB

무신사 DynamoDB 도입기

롯데 ON DynamoDB 도입기

Wide columnar Store - Column Oriented

Google의 BigTable Paper, ScyllaDB

최근 많이 활용되지 않는 것 같기도..
https://www.samsungsds.com/kr/insights/1232564_4627.html

Document DB

Mongo DB, Couchbase

라인 플러스 MongoDB 도입기

올영 MongoDB 도입기

GraphDB

Neo4j

그래프이론에서 나온 DB. 노드와 엣지를 이용해 네트워크를 표현 할 수 있는 DB. 얘넨 쿼리도 신기함

https://rastalion.dev/graph-db-%EA%B7%B8%EB%9E%98%ED%94%84-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4/

와디즈 GraphDB 도입기

ETC.

  1. Data-Structure Server: Redis
profile
뭔 생각을 해. 그냥 하는 거지 뭐

0개의 댓글