본문 바로가기
728x90

DataBase/NoSQL12

[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] MongoDB Index 생성,예제,효율확인 1. 50만개의 도큐먼트 생성 use testdb //testdb 데이터베이스 > for (i =0; i 2021. 1. 19.
[NoSQL] MongoDB capped collection, TTL collection Capped Collection -캡드 컬렉션은 높은 성능의 로깅 기능을 위해 설계되었다. -일반 컬렉션과 다른 점은 고정된 크기를 갖는다는 점이다. -더 이상의 공간이 없게 되면 도큐먼트를 삽입할 때 컬렉션에 추가된 지 가장 오래된 도큐먼트를 덮어쓰게 된다. -일반적인 보통 컬렉션에 모든 연산이 가능하도록 허용하지는 않는다. -개별 도큐먼트를 삭제할 수 없고, 도큐먼트의 크기를 증가시키는 어떤 업데이트도 수행할 수 없다. -만드는 방법 db.createCollection("컬렉션이름",{capped: true, size: 16384, max:100}) 최대 크기가 16384바이트고, 최대 100도큐먼트까지 저장되는 컬렉션 ex) capped 컬렉션 생성 for문을 이용하여 500개의 데이터 삽입 cap.. 2021. 1. 19.
[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 Shell(명령어)로 CSV, JSON import 해보기 testdb 데이터베이스,testdb collection 생성, 직접 데이터 입력 1)show dbs 를 통한 database 목록확인 2)use testdb 를 이용한 데이터베이스 생성 및 사용 3)db.testdb.insert({"example":"ex1"})를 통한 collection 생성 및 데이터 삽입 // db는 현재 데이터베이스, testdb는 생성할(사용할) collection 이름 4)db.testdb.find()를 통한 데이터 확인 5)show dbs를 통해 만들어진 데이터베이스 확인 #여기까지가 전에 했던 내용. spidyweb.tistory.com/163?category=833086 지금부터는 shell을 통해 CSV,JSON 파일을 import 하는 방법을 소개해드리겠습니다. 1... 2021. 1. 11.
728x90