Database/MongoDB 7

MongoDB - Text Index

MongoDB 텍스트 인덱스 MongoDB 의 텍스트 검색은 텍스트 매칭이 다가 아니다. 형태소를 분리 한다음, 단어를 끄집어낸뒤, 각 단어와 유사한 단어를 검색 하는 기능이다. 웹사이트의 검색처럼 형태소를 분리 해서 검색하는 유사한 검색 방식을 제공하지만 검색 엔진처럼 유사어 등과 같이 파워풀한 기능을 제공하지는 못한다. MongoDB 지원기능 컬렉션은 하나의 인덱스만 가질 수 있다. 인덱스 지정은 다음과 같이 한다. db.products.createIndex({ name: 'text', description: 'text', tags: 'text' }); * 인덱스 필드 지정시 -1 이나 1이 아닌 text 로 지정한다. * 텍스트 인덱스가 될 필드를 지정 할 수 있으며, 지정된 필드는 단일 필드인 것..

Database/MongoDB 2022.01.12

MongoDB - 6. INDEX

인덱스 인덱스는 MongoDB 의 쿼리를 더 효과적으로 수행할수 있게 도와주는 기능이다. Document 를 주어진 조건에 맞게 색인 한다음, 해당 색인을 기준으로 데이터를 조회 하는 방식이다. 만약 이 인덱스가 존재 하지 않는다면, 마치 특정 단어를 찾기위해 사전의 첫장부터 단어가 나올때까지 한 단어씩 검색하는 FULL-SCAN 방식으로 조회 해야 하기때문에 시간과 비용이 많이 발생 한다. MongoDB 는 Document의 특정 부분 (지정한 부분) 을 B-TREE 구조로 저장 해둔다. 그리고 저장된 값을 이용해 데이터를 조회, 정렬한다. B-TREE 는 이진 트리 형태로 데이터를 저장하는 방식이다. 각 값들은 자기보다 작은 값을 앞에, 자신보다 큰값을 뒤에 저장한다. 자세한 B-TREE 설명은 따로..

Database/MongoDB 2021.12.20

MongoDB - 5. Aggregation

이전 보다 더 심도 있게 쿼리를 사용해보자. 이번장에서는 두 컬렉션과의 관계 데이터를 추출하는 방식과, 보다 나은 성능을 위한 쿼리까지 알아 볼것이다. 참고 : https://docs.mongodb.com/manual/aggregation/ Aggregation(집계/집합) 프로세스는 데이터를 처리하고, 처리된 결과를 반환하는 프로세스를 말한다. 여러개의 데이터를 를 하나의 기준에서 그룹으로 묶고 하나의 결과로 return 할 수 있다. 이러한 작업을 위해 MongoDB 는 Aggregation Pipeline, map-reduce funtion, 그리고 Single Purpose Aggregation method 를 제공한다. Aggregation Pipeline 참고 : https://docs.mon..

Database/MongoDB 2021.10.24

MongoDB - 4. Qeury

이전까지는 샘플로 Query 를 작성해 간단한 데이터 조회만 담당 했다면, 이번에는 다양한 조회 옵션을 이용해 조금더 심도 있게 Query 를 조회 해 보자. FIND - 기본 조회 METHOD 조회된 Document 를 여러개 출력할 것인지, 단 하나만 출력할것인지에 따라 find 와 findOne 을 골라 사용할 수 있다. findOne Document 를 반환함 조회된 결과중 하나의 객체만 조회 여러개일 경우 자연정렬(삽입순서) 대로 1개의 데이터만 출력 find Cursor 를 반환함 조회된 모든 객체를 조회 findOne 의 경우 하나의 Document 만 출력되므로 그대로 사용하면 되지만, find 의 경우 조회된 Document 들의 위치값을 반환하므로 커서를 반복해서 조회된 Document..

Database/MongoDB 2021.10.21

MongoDB - 3. Data Model

데이터 베이스 스키마 모델링 우리는 어플리케이션 개발시 데이터베이스는 거의 필수로 사용하고 있다. 데이터베이스를 사용하기로 결정한 뒤, 구성하기 위해서는 다양한 고민이 필요하다. 다음은 데이터베이스를 구성할 때 일반적으로 고민 하는 몇개의 판단이다. 첫번째, 데이터 베이스에 대한 선택이다. MongoDB 가 어플레케이션에서 사용하기에 가장 편한 구조인 Document 형을 사용하고, 대량의 데이터를 빠르게 찾고, Insert 를 할 수 있는 장점이 많은 데이터베이스 이지만, 관계형 데이터를 사용할 수 없고, 트랜잭션 처리가 힘든 단점이 있다. 때문에, 데이터베이스를 선택할때 이 장점과 단점을 고려해 알맞게 선택 해야 한다. 두번째, 데이터베이스에 대한 사용성이다. MongoDB 는 realation 을 ..

Database/MongoDB 2021.10.12

MongoDB - 2. mongo command shell

들어가기 앞서 본 내용은 MongoDB in Action (몽고디비 인 액션) 2nd Edition 를 참고 하였으며, 그 이외에 참고한 내용에 대해서는 각 개별 링크를 추가 하였습니다. MongoDB 쉘 사용하기 먼저 장에서 이야기한대로, MongoDB 는 자바 스크립트를 사용한 쉘로 데이터를 입력, 조회 한다. mongoDB 가 설치된 서버에서 mongo 명령어를 통해 MongoDB 쉘로 진입 할 수 있다. 쉘 시작 root@5a039f45f3a7:/# mongo MongoDB shell version v5.0.3 connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb Implicit session..

Database/MongoDB 2021.09.30

MongoDB - 1. Introduce

들어가기 앞서 본 내용은 MongoDB in Action (몽고디비 인 액션) 2nd Edition 를 참고 하였으며, 그 이외에 참고한 내용에 대해서는 각 개별 링크를 추가 하였습니다. MongoDB 일반적으로 대부분의 시스템들은 그 양이 많던 적던, 시스템이 관리 해야 할 데이터를 데이터 베이스를 이용하여 관리를 하고 있을 것이다. 많은 데이터를 관리 하기위해, 중복을 피해 정규화 과정을 거치며 여러 테이블로 분리되어 관리하고, 분리된 테이블의 데이터를 고유 키(Primary Key) 로 식별하여 다른 테이블의 특정 key와 관계(Relation) 하여 데이터를 재 조합한다. 이를 관계형 데이터베이스 (RDB : Relational Database) 라고 한다. 이 관계형 데이터 베이스의 경우 각 개..

Database/MongoDB 2021.09.26