본문 바로가기

SW LAB

OpenSource MongoDB : (3) 집계 연산 - 집계동작 소개 집계 파이프라인 db.orders.aggregate( [ -- status field 가 "A" 인 것을 추출 { $match: { status: "A" } }, -- 그룹 식별 값은 "cust_id" field 로.. -- 그룹핑 된 document 들의 amount 값을 합친 것을 "total" field 로.. { $group: { _id: : "$cust_id", total : { $sum : "$amount" } } } ]) 파이프라인 연산자와 인덱스 $match, $sort 파이프라인 연산자들은 파이프라인의 시작점에 사용하는 경우 인덱스로서의 장점을 발휘합니다. 버전 2.4 이후로 도입된 $geoNear 파이프라인 연산자는 위치 인덱스의 장점을 갖습니다. 선점 필터링 (Ear.. 더보기
OpenSource MongoDB : (2) CRUD 연산 - CRUD 란? Create / Read / Update / Delete 를 의미합니다. Document 를 JSON 형태로 전달하면서 2진 JSON인 BSON 코드로 저장합니다. - MongoDB의 주요기능 Index MongoDB는 일반적인 쿼리 밑 업데이트 성능을 향상시키기 위해 인덱스를 완벽하게 지원합니다. 인덱스는 애플리케이션에서 데이터 구조를 효율적으로 관리하면서 컬렉션의 일정 부분을 view로 저장하도록 지원합니다. 1) Index 를 사용하는 이유 Index는 DB 테이블에 대한 처리 속도를 높여주는 자료 구조로서, 저장딘 자료에 대한 빠른 조회가 가능해집니다. Index는 Key-Field 형태를 가지며, 스캔을 거치지 않고 원하는 문서의 주소로 바로 이동하게 합니다. Collectio.. 더보기
New NoSQL & mongoDB : (6) Sharding System Sharding System 이란? Sharding 의 가장 큰 목적은 파티셔닝을 통한 데이터 분산 처리와 성능 향상을 위한 Load Balancing 입니다. 또한, 빅 데이터의 효율적 관리와 백업 및 복구 전략 수립을 위한 솔루션이기도 합니다. Sharding의 목적 데이터의 분산 저장 하나의 서버에 빅 데이터를 저장, 관리하는 것은 성능 저하 문제를 유발시킵니다. 따라서, 여러대의 서버를 통하 분산 처리했을 때 가장 이상적으로 작동할 수 있습니다. 빠른 성능 분산 처리는 여러 개의 프로세스가 여러 개의 CPU를 통해 동시 작업을 수행했을 때 가장 이상적이라 볼 수 있습니다. 데이터 백업과 복구 전략의 역할 하나의 서버에 빅 데이터를 저장, 관리했을 때 서버 장애가 발생한다면 어마어마한 데이터 유실이.. 더보기
New NoSQL & mongoDB : (5) Replica & ReplicasSet Master & Slave 서버 빅 데이터의 안정한 저장과 관리 그리고 복구가 수행되기 위해서는 적절한 백업 솔루션이 필요합니다. 리프리카와 리프리카 셋 기능은 빅데이터의 백업을 통해 안정성을 보장하기 위한 솔루션 중 하나 입니다. 리프리카 기능을 위해서는 마스터 노트와 슬레이브 노드가 필요하며, 슬레이브 노드는 최소 3대 이상을 권장합니다. ReplicaSets 마스터 서버와 슬레이브 서버의 관계는 원본 데이터베이스에 대한 복제 본 데이터베이스에 동일한 데이터를 하나 더 저장해 두는 관계를 의미합니다. 그런데, 실시간으로 마스터 서버에 대한 복구 작업을 수행하는 거나 슬레이브 서버를 즉시 사용할 수 있는 것은 아닙니다. 이를 위한 기능이 리프리카셋 입니다. 리프리카셋에서 실시간으로 사용되는 메인 서버를.. 더보기
OpenSource MongoDB : (1) 소개 - MongoDB 란? 몽고DB는 NoSQL(Not only SQL) 데이터베이스로, JSON(JavaScript Object Notation) 형태의 데이터를 저장합니다. SQL을 지원하지 않기 때문에 Join 개념이 없고, 스키마는 유동적입니다. 여기서 유동적이라는 말은 몽고DB에서 저장하는 데이터 단위가 '다큐먼트'라는 것을 의미하는데, 이는 RDBMS에서 행 단위의 레코드라고 할 수 있습니다. 따라서 몽고DB의 다큐먼트 속성은 SQL처럼 정형화되어 있지 않고, 가변적이기 때문에 모든 문서 형태가 비정형 데이터를 저장하고 처리하는 데 적합합니다. 다큐먼트를 집합적으로 부를 때는 '컬렉션'이라 합니다. 컬렉션은 RDBMS에서 테이블 개념과 논리적으로 유사하지만, 데이터 구.. 더보기
New NoSQL & mongoDB : (4) Tunning 운영 단계에서 사용자가 예기치 못하는 다양한 장애와 성능 저하 현상들이 발생하고 있는데 그 원인은 다음과 같이 매우 다양합니다. Design Tuning 데이터베이스의 성능을 저하시키는 가장 큰 원인은 데이터를 저장하는 논리적 구조인 컬렉션에 대한 적절한 분석과 설계 작업이 수행되지 못했기 때문입니다. 이러한 컬렉션의 설계 문제로 인한 성능저하 원인과 문제점을 분석하고 대처하는 방법을 디자인 튜닝이라고 합니다. 1) 대용량 데이터의 INSERT가 발생하는 Collection의 경우 최초 Extent의 크기를 충분히 설계하여 Extent 증가 시 불필요한 성능 지연이 발생하지 않도록 생성해야 하며, 대용량 데이터의 Full Scan이 자주 발생하는 Collection의 경우에는 Extent가 큰 것이 유라.. 더보기
New NoSQL & mongoDB : (3) Structure - Server Structre Process 영역 Memory 영역 File 영역 - Storage Engine Memory Mapping 엔진 (MMAP) 파일 시스템 기반의 이 엔진은 1.x, 2.x 까지 사용되었습니다. 초당 10만건 이상의 빅데이터에 대한 빠른 쓰기/읽기 작업을 수행한 후 분석, 통계 작업까지 효과적으로 수행할 수 있도록 최적화된 저장 엔진 입니다. 서버 장애 시 복구 작업이 가능한 Journal 로그도 제공합니다. Single CPU 기반의 프로세싱 위주로 처리되기 때문에 CPU 개수보다 충분한 크기의 메모리 자원이 더 요구됩니다. WiredTiger 저장엔진 이는 3.x 버전부터 제공되는 파일 시스템 기반의 저장 엔진입니다. 다수의 사용자가 트랜잭션 위주의 데이터를 처리하는데.. 더보기
New NoSQL & mongoDB : (2) Index&User - Index를 사용하는 이유? 데이터 검색을 빠르게 처리하기 위해서 사용합니다. - Index 종류 각 Index 에 대한 특징은 시간이 날 때 알아봅시다. Non-Unique / Unique Index Single Field / Compound Index Multi Key Index Background Index TTL Index Sparse Index Partial Index GeoSpatial(2d) Index GeoSpatial(2dsphere) Index GeoHayStack Index Text Index Hashed Index Covered Index - 사용자 생성 및 관리 MongoDB는 RDBMS와 달리 스키마와 계정 관계 같은 것이 없습니다. 컬렉션과 별도라고 볼 수 있습니다. OS .. 더보기