📌 NoSQL 데이터베이스 소개 및 분석
(1) 여러 NoSQL을 찾아보고 리스트업한다.
📋 리스트된 NoSQL 데이터베이스
- Cassandra
분산형, 높은 확장성을 자랑하는 NoSQL 데이터베이스로, 고가용성과 대규모 데이터 처리에 적합합니다. 데이터를 여러 서버에 분산시켜 저장하고, 장애 발생 시에도 데이터가 유실되지 않도록 설계되었습니다. - HBase
Apache HBase는 컬럼 기반의 NoSQL 데이터베이스로, 대규모 데이터 처리에 적합하며 HDFS(Hadoop Distributed File System) 위에서 실행됩니다. 대규모 데이터 저장 및 빠른 읽기/쓰기를 제공합니다. - Google BigTable
Google의 Bigtable은 키-값 저장소로 대규모 데이터를 효율적으로 처리하고 확장하는 데 최적화되어 있습니다. 구글 클라우드 플랫폼에서 제공되며, 빠른 읽기/쓰기 속도를 자랑합니다. - Vertica
Vertica는 컬럼 기반 저장소로, 주로 대규모 데이터 분석과 데이터 웨어하우징에 사용됩니다. 대규모 데이터셋에서 빠른 쿼리 성능을 제공합니다. - Druid
실시간 데이터 분석을 위한 분산형 컬럼 기반 데이터베이스로, 로그 및 이벤트 데이터 처리에 적합합니다. 빠른 검색과 시각화가 가능합니다. - Accumulo
보안성이 강한 분산형 키-값 저장소로, 고급 보안 모델을 제공합니다. 대규모 데이터를 처리하며, 중요한 보안 요건을 충족하는 시스템에 적합합니다. - HyperTable
HyperTable은 Google Bigtable을 기반으로 하며, 대규모 데이터를 빠르게 처리할 수 있도록 설계된 분산형 데이터베이스입니다.
(2) 자주 사용되는 2가지의 NoSQL에 대해 정리하기
1. MongoDB - 문서 지향 데이터베이스
📄 MongoDB 개요
MongoDB는 JSON-like 형식으로 데이터를 저장하는 문서 지향 NoSQL 데이터베이스입니다. 데이터는 BSON(Binary JSON) 형식으로 저장되어, 다양한 필드와 값을 포함한 문서로 구성됩니다. 스키마 유연성 덕분에 다양한 형태의 데이터를 처리할 수 있습니다.
🔧 Architecture:
MongoDB는 문서(Document) 기반으로 데이터를 저장하고, 이를 컬렉션(Collection) 단위로 그룹화합니다.
- Document 기반: MongoDB의 데이터는 JSON 형식의 문서로 저장되며, 필드가 동적으로 추가될 수 있어 스키마가 유연합니다.
- Sharding: MongoDB는 **샤딩(sharding)**을 통해 데이터를 여러 서버에 분산 저장하여 수평 확장이 가능합니다.
- Aggregation Framework: MongoDB는 데이터 집계, 필터링, 변환을 수행할 수 있는 Aggregation Framework를 제공하여 복잡한 데이터 처리에 유리합니다.
📝 문서 검색 최적화:
MongoDB는 중첩된 데이터 구조를 효율적으로 저장할 수 있어, 반정형 데이터를 처리할 때 유리합니다. 예를 들어, 다음과 같은 JSON 문서로 데이터를 저장하고 쿼리할 수 있습니다.
{
"_id": ObjectId("60c72b2f9af1f1f2d3b4b6bc"),
"name": "John Doe",
"age": 29,
"address": {
"city": "New York",
"zipcode": "10001"
},
"interests": ["traveling", "reading"]
}
- 검색 예시: 이름이 "John Doe"인 문서 검색은 매우 간단하며, 필드 검색이 가능합니다. 또한, Aggregation을 통해 복잡한 집계 작업도 효율적으로 처리할 수 있습니다.
📊 MongoDB 활용 예시
MongoDB는 로그 관리, 콘텐츠 관리 시스템, 대화형 웹 애플리케이션 등 다양한 분야에서 사용됩니다.
2. Redis - 키-값 데이터베이스
🔑 Redis 개요
Redis는 메모리 기반의 키-값 저장소로, 매우 빠른 데이터 읽기/쓰기를 제공합니다. 인메모리 데이터베이스로, 고성능 캐시 시스템과 세션 관리에 자주 사용됩니다.
🧰 Architecture:
- Key-Value Store: Redis는 데이터를 키와 값의 쌍으로 저장합니다. 이 구조는 매우 간단하고 빠른 데이터 조회를 가능하게 하여, 캐시 시스템에 적합합니다.
- 데이터 구조: Redis는 다양한 자료형을 지원합니다. 예를 들어, 리스트(Lists), 셋(Sets), 해시(Hashes), 정렬된 셋(Sorted Sets) 등 다양한 자료형을 제공하여, 더욱 복잡한 데이터를 처리할 수 있습니다.
- Persistence: Redis는 인메모리 데이터베이스지만, 데이터를 디스크에 지속적으로 저장할 수 있는 기능을 제공합니다. 이를 통해 서버 재시작 후에도 데이터를 복구할 수 있습니다.
⚡ 캐시 서버로 활용되는 이유:
Redis는 빠른 읽기/쓰기 성능 덕분에 캐시 시스템에 적합합니다. 특히, 세션 관리나 실시간 데이터 처리에 유용하며, **TTL(Time To Live)**을 설정하여 데이터가 자동으로 만료되도록 할 수 있습니다.
SET user:1234 "Alice"
GET user:1234
- 세션 관리: 웹 애플리케이션에서 사용자의 로그인 세션 정보를 Redis에 저장하면, 서버가 재시작되더라도 세션 데이터가 유지됩니다. 이는 세션 지속성을 제공하며, 트래픽이 많은 시스템에서 성능을 향상시킵니다.
📈 Redis 활용 예시
- 실시간 채팅 시스템
- 쇼핑 카트 시스템
- 세션 관리
- 게임 상태 관리
🧠 고급 팁 & 자주 하는 실수
1. MongoDB 스키마 설계
- MongoDB의 유연한 스키마 구조는 설계 시 주의해야 합니다. 데이터 모델을 설계할 때 과도한 중첩을 피하고, 쿼리 성능을 고려한 인덱싱 전략을 설정하는 것이 중요합니다.
2. Redis 성능 최적화
- Redis를 사용할 때는 메모리 관리가 중요합니다. 대용량 데이터를 저장하는 데는 적합하지 않으며, 적절한 데이터 만료 정책(TTL)을 설정하여 메모리 효율성을 높여야 합니다.
✅ 마무리 요약
- MongoDB는 문서 지향 NoSQL로, 다양한 데이터 모델을 지원하며 유연한 스키마와 강력한 집계 기능을 제공합니다.
- Redis는 메모리 기반의 빠른 키-값 저장소로, 주로 캐시 시스템과 세션 관리에 사용됩니다. 빠른 읽기/쓰기 성능 덕분에 실시간 애플리케이션에서 뛰어난 성능을 발휘합니다.
'Database' 카테고리의 다른 글
Chapter 8-41. NoSQL MongoDB(1/6) MongoDB,Studio 3T 설치 (MongoDB GUI Tool) (0) | 2025.03.26 |
---|---|
Chapter 8-41. NoSQL MongoDB(1/6) (0) | 2025.03.26 |
Chapter 7-40. NoSQL기초 (0) | 2025.03.26 |
Chapter 7-38. Mini Project : 06.Sakila SQL(2/2) (0) | 2025.03.26 |
Chapter 7-37. Mini Project : 06.Sakila SQL(1/2) (0) | 2025.03.26 |