분류 전체보기

MongoDB 의 CRUD MongoDB 도 RDB 와 마찬가지로 SELECT, INSERT, UPDATE, DELETE 를 제공한다. 차이점이라면 RDB 는 테이블이 없는경우 오류를 뱉지만 MongoDB 는 컬렉션이 없으면 컬렉션을 생성하면서 적재한다. MongoDB 는 자바스크립트 기반 명령어와 JSON 을 인자로 사용한다. SELECT find 라는 명령어를 사용한다. id = mozi 인 값을 찾는다. SELECT * FROM mozi WHERE id = 'mozi' db.mozi.find ( { id : 'mozi' } INSERT insert 라는 명령어를 사용한다. INSERT INTO mozi (id, type, version) VALUES ('mozi', 'tistory', 1) db.m..
MongoDB 와 RDBMS 의 명칭 차이 RDBMS MongoDB 데이터베이스 ( Database ) 데이터베이스 ( Database ) 테이블 ( Table ) 컬렉션 ( Collection ) 레코드 ( Row ) 도큐먼트 ( Document ) 컬럼 ( Column ) 필드 ( Field ) 인덱스 ( Index ) 인덱스 ( Index ) 쿼리의 결과로 레코드가 반환 쿼리의 결과로 커서가 반환 명칭은 다르나 의미는 비슷하다. 예를들어 MongoDB 에서 Collection 명칭은 RDBMS 의 Table 명칭과 같은 의미이다. 쿼리의 결과 커서 MongoDB 는 쿼리의 결과로 커서가 반환된다. 클라이언트 프로그램은 커서를 통해 반복적으로 실제 도큐먼트를 가져올 수 있다. 바로 결과를 가져오지 않..
마이너버전 업그레이드 정책 MongoDB 마이너버전 업그레이드는 롤링(Rolling-upgrade)방식을 사용한다. 롤링방식이란 서비스를 중지하지 않고 멤버들을 순차적으로 업그레이드하는 방식을 의미한다. 롤링방식 롤링방식 순서는 다음과 같다. 1. 세컨드리 멤버의 버전을 업그레이드 한다. 2. 업그레이드가 된 세컨드리 멤버와 현재의 프라이머리 멤버를 스위칭한다. (서비스 입장에서는 순간적인 단절이 발생) 3. 업그레이드가 된 세컨드리 멤버에서 서비스를 이어간다. 4. 세컨드리가 된 기존 프라이머리 버전을 업그레이드 한다. 롤링방식의 리스크 롤링방식으로 순차적으로 업그레이드를 하는동안 서비스는 이어갈 수 있지만 세컨드리와 프라이머리간 버전이 일치하지 않는 기간이 발생한다. 이 때 업그레이드가 된 버전의 기..
라이센스 MongoDB 는 MongoDB, Inc 회사에 의해 개발 및 유지보수되는 오픈소스 데이터베이스이다. 기본적인 기능을 모두 오픈 소스로 관리하며 누구든지 별도의 비용 없이 MongoDB 를 사용할 수 있다. 필요할 때에는 직접 소스 코드를 수정하여 MongoDB 를 사용할 수 있다. 별도 비용이 없는 오픈소스 MongoDB 는 커뮤니티 버전이라 부르고 기술 지원과 추가 기능을 사용할 수 있는 유료 라이센스 모델인 프로페셔널과 엔터프라이즈 버전을 제공한다. 그러나 요즘 클라우드 환경의 PAAS 로 인해 언제 라이센스 정책을 변경할지는 잘 모르겠다. 버전 3개의 숫자로 구성된 버전 체계를 제공한다. 7.0.6 버전을 예로들면 앞의 7 은 메이저, 0 은 마이너, 6은 패치버전이다. 마이너 버전에서 ..
NoSQL 에서 스키마? NoSQL 은 스키마라는 개념이 없다. 그래서 NoSQL 인 MongoDB 에서 스키마를 설계한다는 말이 이해가 안 될 수 있다. 우선 RDBMS 와 같은 스키마 개념은 없다고 보는게 맞다. 엄밀이 비유하면 Table 은 Collection , Row 는 Document 로 표현은 가능하지만 그렇다고 스키마를 설계하지는 않는다. 그렇다면 여기에서 말하는 스키마란 무엇일까? MongoDB 스키마 디자인 MongoDB 스키마 디자인은 RDBMS 의 디자인과 많이 다르게 작동한다. 먼저 규칙, 정규화에 대한 개념이 없고 Document 에 Key-Value 구조로 저장된다. 아래 데이터의 경우 RDBMS 라면 정규화를 거쳐 배열데이터를 별도의 테이블/로우로 분리 할 수도 있지만 Mon..
몽고DB 데이터는 유실된다? 얼마전 한 유튜브 강의에서 몽고DB 는 데이터가 유실될 수 있다는(왜?는 말씀하지 않으심) 이야기를 듣고 조금 의아하여 구글링을 조금 해보았다. 그랬더니 많은 블로그에서 데이터 유실이 있다는 부분을 작성하였는데 언제, 얼마나, 왜 발생하는지에 대한 내용은 작성되어 있지 않았다. DB관리자로써 나는 이걸알고 싶은데.. 그래서 한국문서를 넘어 해외문서를 뒤적거리고나서 어느정도 원하는 답을 알게 되었다. 그러나 찾아본 자료가 이분들이 말하는 유실과 같은의미를 담고있는지는 잘 모르겠다. MongoDB 꼬꼬마로써 발견하지 못한 자료가 더 있을지는 모르겠다. 다른점으로도 Memory Map 을 사용하고 주기적으로 flush 하는 동작이기 때문에 이 사이에 발생하는 장애로 인한 유실도 배..
파일별 용도는 다시정리해서 MongoDB 데이터폴더 구조 MongoDB 로그폴더 구조 MongoDB 속성폴더 구조
mongosh 몽고DB 에 접속하는 툴 mongosh 시 SSL 에러 OpenSSL configuration error: digital envelope routines: ... 에러가 발생 openssl3 의 mongosh 로 재설치 sudo yum install mongodb-mongosh-shared-openssl3 mongosh 로 접속 접속 성공
MongoDB 지원 OS MongoDB 는 총 4개의 운영체제를 지원 - Windwos / Linux / Unix Solaries / Mac MongoDB 를 사용하는 대부분의 유저는 90% 가 리눅스 사용 - 빅데이터 처리를 위해서는 많은 수의 머신이 필수적으로 필요 - 운영체제에 대한 비용이 상대적으로 적은 리눅스를 사용 MongoDB 는 메모리 관리를 운영체제에 맡김 - 상대적으로 메모리 관리에 뛰어난 unix 베이스의 운영체제를 선택 MongoDB 지원 언어 지원하는 언어 - Java / Java Script - Perl / PHP / Python - Ruby / Scala / Erlang / Haskell MongoDB 설치방법 AWS Linux 2023 에 설치합니다. https://www.m..
MongoDB 소개 Key Value 와 다르게 여러 용도로 사용이 가능 스키마가 고정되지 않음 - 스키마 변경으로 이슈가 없음 - 데이터를 구조화해서 json 형태로 저장 ( key - value 화 ) 조인이 불가능하기 때문에 조인이 필요없도록 설계 필요 MongoDB 특징 메모리맵 형태의 파일엔진 DB 이기 때문에 메모리에 의존적임 - 메모리 크기가 성능을 좌우 - 메모리를 넘어서는 경우 성능이 급격히 저하됨 쌓기만 하고 삭제가 업는 로직에 적합 - 로그 데이터 - 이벤트 참여 내역 - 세션 왜? 트랜잭션이 필요한 금융, 결제, 빌링, 회원정보등에는 부적합 RDBMS 가 적합 도큐먼트 데이터 모델을 사용 - 속성의 이름과 값으로 이루어진 쌍의 집합 - 속성은 문자열이나 숫자, 날짜 가능 - 배열 또..
꽁담
'분류 전체보기' 카테고리의 글 목록