본문 바로가기
728x90

mongoDB9

[NoSQL] MongoDB cluster 구성 정리 (feat production, NCP) NCP 서비스 중 MongoDB cluster를 생성해보면서, cluster를 구성할 수 있는 방법들을 정리 해봤습니다. 1. MongoDB Cluster Type 비교 클러스터 타입 이중화 구성 서버 생성 수(대) 구성 Stand-alone X 1 Standalone Single Replica Set O 3~7 Primary, Secondary, Arbiter Sharding O Mongos : 2~5 Config : 3 Shard: 2개 이상(최대 5개) Shard(Replica Set)당 Member: 3~7 Shard(Replica Set)당 Arbiter: 0~1 Mongos, Primary, Secondary, Arbiter 2. Single replica set vs sharding Sing.. 2024. 2. 26.
[NoSQL] Docker로 EC2에 MongoDB 설치해서 NoSQL booster for mongodb에 연결하기 이번 포스트에는 AWS EC2 ubuntu 20.04 lts에 Docker를 설치하고, mongodb를 설치 및 연결해보겠습니다. NoSQL Booster for MongoDB가 없으신 분은 아래 링크를 통해 다운로드 받아주세요. https://nosqlbooster.com/downloads NoSQLBooster - The Smartest GUI Tool and IDE for MongoDB nosqlbooster.com 1. EC2 생성 EC2 에서 20.04 LTS ubuntu 생성해줍니다. 공식 홈페이지를 찾아보면 MongoDB docker로 띄우기위해 최소로 필요한 서버의 크기는 2vCore 와 4GB mem정도로 나옵니다. 2. Docker 설치 // apt 인덱스 업데이트 $ sudo apt-.. 2024. 2. 25.
[NoSQL] MongoDB 집계(Aggregation)1 #집계 프레임워크 -파이프라인의 각 단계에서의 출력이 다음 단계로의 입력으로 제공되는 파이프라인(집계 파이프라인,aggregation pipeline)을 정의한다. $project - 출력 도큐먼트상에 배치할 필드를 지정한다.(projected) $match - 처리될 도큐먼트를 선택하는 것. find()와 비슷한 역할을 수행한다. $limit - 다음 단계에 전달될 도큐먼트의 수를 제한한다. $skip - 지정된 수의 도큐먼트를 건너뛴다. $unwind -배열을 확장하여 각 배열 항목에 대해 하나의 출력 도큐먼트를 생성한다. $group -지정된 키로 도큐먼트를 그룹화한다. $sort -도큐먼트를 정렬한다. $geoNear - 지리 공간위치 근처의 도큐먼트를 선택한다. $out - 파이프라인의 결과(출.. 2021. 1. 21.
[NoSQL] MongoDB 쿼리 언어 총정리2 #자바스크립트 쿼리 연산자 -쿼리에 자바스크립트 표현식을 넘겨주기 위해서는 특수한 $where 연산자를 사용할 수 있다. ex) db.컬렉션이름.find({ '$where': "function() {return this.helpful_votes > 3;}" }) //this는 현재의 도큐먼트를 가리킨다. db.컬렉션이름.find({'$where': "this.helpful_votes > 3"})처럼 표현할 수 있다. -자바스크림트 쿼리는 성능 저하 문제와 인젝션 공격에 노출되는 위험성을 가지고 있다. #정규 표현식(regular expression) -$regex연산자: 요소를 제공된 정규 표현식과 맞춰 본다. -prefix 타입의 쿼리를 제외하고는 정규 표현식 쿼리는 인덱스를 사용할 수 없고, 대부분의.. 2021. 1. 20.
[NoSQL] MongoDB 쿼리 언어 총정리1 #셀렉터 매칭 -가장 간단한 쿼리는 키-값 쌍이 도큐먼트에 문자적으로 일치하는 셀렉터를 사용하는 쿼리다. ex) db.컬렉션이름.find({"키":"값"}) db.컬렉션이름.find({"키1":"값1","키2":"값2"}) -하나 이상의 키 값을 넘겨줄 때는 조건이 모두 매치되어야 한다.(쿼리 조건 함수는 논리적 AND) -MongoDB에서 모든 텍스트 문자열 일치는 대소문자를 구분한다.(Case sensitive) #범위 연산자 범위 해당하는 연산자 $lt ~보다 작은 $lte ~보다 작거나 같은 = ex) db.컬렉션.find({'birth_year': {'gte': 1985}, 'birth_year': {'$lte': 2015}}) 위의 쿼리는 1985년보다 크거나 같고 2015년보다 작거나 같은 .. 2021. 1. 20.
[NoSQL] python에서 MongoDB연동시키기 일단 MongoDB와 python을 연동시키기 위해서는 python 라이브러리인 pymongo가 있어야 한다. cmd창을 열고 와 같이 pymongo를 다운받도록 한다. 이후 간단한 crud를 해보도록 할건데, 미리 CRUD관련된 클래스를 만들어두고 쓰면 편리하기 때문에, 구현 해두고 확인해보겠습니다. from pymongo import MongoClient from pymongo.cursor import CursorType class DBHandler: def __init__(self): host = "localhost" port = "27017" self.client = MongoClient(host, int(port)) def insert_item_one(self, data, db_name=None.. 2021. 1. 14.
[NOSQL] MongoDB의 역할 및 활용 사례 NOSQL의 특징과 역할 -NOSQL 자체가 비복잡 대용량 데이터를 저장하기 위한 도구로 쓰이고 있다. -로그데이터를 저장할 때, 실시간 데이터 스트림을 저장할때 -부하 분산이 가능하다,(sharding) 데이터의 스키마제약을 받지않는다.(flexible schema) -replicaset 을 통한 HA(High Availability) 높은 가용성 (write,read 구분 및 장애시 사용할 예비 DB 복제 및 마련) MongoDB 알고리즘 MongoDB의 경우 확장된 형태의 Raft 컨세서스 모델 사용을 사용하면 컨세서스 알고리즘에는 paxos와 raft가 있다. 레플리카 셋에 참여하는 각 멤버들이 서로 데이터를 동기화하고 노드들 간에 하트비트가 되지 않을때 어떻게 할지 결정하는 알고리즘 Replic.. 2021. 1. 8.
JSON(JavaScript Object Notation), BSON(Binary JSON) ●JSON이란 JavaScript Object Notation라는 의미의 축약어로 데이터를 저장하거나 전송할 때 많이 사용되는 경량의 DATA 교환 형식 Javascript에서 객체를 만들 때 사용하는 표현식을 의미한다. JSON 표현식은 사람과 기계 모두 이해하기 쉬우며 용량이 작아서, 최근에는 JSON이 XML을 대체해서 데이터 전송 등에 많이 사용한다. JSON은 데이터 포맷일 뿐이며 어떠한 통신 방법도, 프로그래밍 문법도 아닌 단순히 데이터를 표시하는 표현 방법일 뿐이다. ●JSON 특징 서버와 클라이언트 간의 교류에서 일반적으로 많이 사용된다. 자바스크립트 객체 표기법과 아주 유사하다. 자바스크립트를 이용하여 JSON 형식의 문서를 쉽게 자바스크립트 객체로 변환할 수 있는 이점이 있다. JSON.. 2020. 10. 12.
[NoSQL]NoSQL(Not Only SQL) 종류와 특징 간단히 정리 ●NoSQL 특징 -전통적인 관계형 데이터베이스보다 덜 제한적 -일관성 모델을 이용하는 데이터의 저장 및 검색을 위한 메커니즘 제공 -디자인의 단순화, 수평적 확장성 추구 -단순 검색 및 추가 작업을 위한 매우 최적화된 키값 저장 공간으로, Latency와 throughput과 관련하여 상당한 성능 이익 제공 -빅데이터와 실시간 웹 애플리케이션용 ●NoSQL 종류 -key value stores(KVS) Memcached,Redis,Dynamo,Disk Based -ordered KVS NMDB,luxio,Memcachedb -column oriented store BigTable,Hbase,cassandra,HyperTable,Azure TS -Document-Oriented store) CouchDB.. 2020. 10. 8.
728x90