Database/MongoDB(15)
-
[MongoDB] Sharding
1. Shard Cluster의 쿼리 수행 절차 사용자 쿼리가 참조하는 컬렉션의 Chunk 메타 정보를 Config Server로 부터 가져와 라우터의 메모리에 캐시한다. 사용자 쿼리의 조건에서 Sharding Key 조건을 찾는다. - 쿼리 조건에 Sharding Key가 존재할 경우 해당 Sharding Key가 포함된 Chunk 정보를 라우터의 캐시에서 검색하여 해당 Shard 서버로만 사용자 쿼리를 요청한다. - 쿼리 조건에 Sharding Key가 없을 경우 모든 Shard 서버로 사용자의 쿼리를 요청한다. 쿼리를 전송한 대상 Shard 서버로부터 쿼리 결과가 도착하면 결과를 병합하여 사용자에게 결과를 반환한다. 2. Sharding 1) Sharding Sharding은 데이터를 여러 서버에 ..
2020.12.18 -
[MongoDB] Database 참조
1. 수동 참조 수동 참조는 다른 Document의 '_id' 필드를, 참조를 사용할 Document의 하나의 필드로 저장하는 방식이다. 필드 중 하나인 '_id'값을 통해 참조할 Document의 데이터를 가져온다. 대부분의 경우에는 수동 참조 방식을 사용한다. 예를 들어, people 컬렉션에서 places_id를 통해 places로 접근하고 데이터를 참조하여 가져올 수 있다. original_id = ObjectId() db.places.insert({ "_id": original_id, "name": "Broadway Center", "url": "bc.example.net" }) db.people.insert({ "name": "Erin", "places_id": original_id, "url..
2020.12.18 -
[MongoDB] Model 활용
1. 연관 동작 수행 MongoDB에서 단일 Document에 대한 쓰기 동작을 유기적으로 수행할 수 있다. 만약 여러 개의 필드가 서로 영향을 미친다면, 같은 Document가 그 필드를 포함하면 효율적으로 동작을 수행할 수 있다. 예를 들어 책과 대여가능한 권수, 대여 정보를 유지하는 상황에서 대여가능 권수(available)와 대여 정보(checkout)는 서로 연관되어 처리해야한다. { title: "MongoDB: The Definitive Guide", author: ["Kristina Chodorow", "Mike Dirolf"], published_date: ISODate("2010-09-24"), pages: 216, language: "English", publisher_id: "ore..
2020.12.18 -
[MongoDB] Data Model (Documents간의 관계 설정 구조)
1. Data Model 1) 일대일 관계 두 개의 Document에 대해 일대일 관계로 구성이 가능하다. 예를 들어 하단에는 후원자(patron)와 주소를 매핑하고 주소에는 후원자에 대한 reference(patron_id)가 포함된다. { _id: "joe", name: "Joe Bookreader" } { patron_id: "joe", street: "123 Fake Street", city: "Faketon", state: "MA", zip: "12345" } 만약 이 구조에서 이름(name)을 가지고 주소를 검색하는 일이 많아진다면 해당 데이터를 조회하기 위한 여러 쿼리를 샐행해야한다. 따라서 일대일 관계에서 더 나은 데이터 모델은 하단의 후원자 데이터에 주소가 내장되는 구조이다. { _id:..
2020.12.17 -
[MongoDB] Text Search
1. Text Search 1) Text Index MongoDB는 Text Index를 통해 문자열로된 컨텐츠에 대한 Text Search를 지원한다. Text Index는 값이 문자열이거나 문자열 요소의 배열인 모든 필드를 포함할 수 있다. Text Search를 수행하기 위해서는 컬렉션에 Text Index가 있어야한다. Text Search에는 오직 하나의 Index를 가지지만 여러 필드를 포함할 수 있다. db.stores.createIndex( { name: "text", description: "text" } ) 2) Text Search Text Search를 하기 위해서는 $text를 사용한다. 공백을 이용하여 문자열을 찾을 수 있다. 예를 들어 java, coffee, shop 3개의 ..
2020.12.17 -
[MongoDB] Bulk Write, Retryable Write/Read
1. Bulk Write 1) Bulk Write MongoDB는 단일 컬렉션에 대해 대량 쓰기, 업데이트 제거 작업을 Bulk Write를 통해 할 수 있다. Bulk Write는 Ordered, Unordered 방식이 있다. Ordered 방식(기본 MongoDB 방식)은 작업을 순차적으로 시행하는데(이전 작업을 완료할때 까지 다음 작업을 처리하지 않기 때문에 속도가 느림), 작업 도중 오류가 발생하면 나머지 쓰기 작업을 처리하지 않고 작업을 끝낸다. Unordered 방식은 쓰기 작업 중 하나가 오류가 발생하더라도 나머지 작업을 계속 실행한다. 2) bulkWrite() 지원 목록 insertOne updateOne updateMany replaceOne deleteOne deleteMany 3)..
2020.12.16