본문 바로가기

728x90
반응형

DB/MongoDB

(19)
[MongoDB] 19. 파이썬과 MongoDB 연동 파이썬과 MongoDB를 연동 파이썬에서 MongoDB에 질의를 해서 결과를 파이썬 프로그램에서 확인 파이썬 설치 https://www.python.org/downloads/에서 파이썬 다운로드(3.11버전) https://code.visualstudio.com/에서 Visual Studio Code 설치 MongoDB 연동을 위한 라이브러리 "pymongo" 설치 // 터미널에서 실행 pip install pymongo MongoDB 연결 27017 포트 사용 import pymongo as mg # 몽고 디비 연결 conn = mg.MongoClient("mongodb://localhost:27017") 데이터 베이스 선택 # Database 선택 db = conn['testDB'] 컬렉션 선택 # ..
[MongoDB] 18. 데이터 모델링과 인덱스 - 인덱스 인덱싱 신문 기사를 노트에 스크랩할 때, 기사가 많아지면 원하는 기사를 쉽게 찾는 방법이 필요 노트의 맨 앞에서, 기사 제목과 페이지(가나다순)을 적은 "색인"을 만듬 제목을 모르고 기사 종류만 알고 있다면 색인을 사용하기 어려움 분야와 제목을 같이 색인에 활용하고 싶을 때는 "분야-기사제목-페이지 번호"로 색인을 만들면 됨. 많은 데이터를 분류하기 위해 색인을 만들 때는 어떤 순서로 만드느냐가 중요 아래 단계로 내려갈수록 범위가 좁아지는 것이 유용함 인덱스의 특징 인덱스가 없다면 모든 도큐먼트를 조회해야함 인덱스는 쿼리를 효율적으로 수행하게 함 새로운 도큐먼트가 생성/제거가 되면 인덱스도 함께 수정되어야 함. 속도의 저하 발생 가능성 단순 인덱스를 만들면 해당 필드를 조회할 때만 사용 가능 다수의 필드..
[MongoDB] 17. 데이터 모델링과 인덱스 - 데이터 모델링 데이터 모델링과 인덱싱 DB를 사용하는 환경에서 하드웨어 개선없이 성능을 개선하는 방법 데이터 모델링 업무 수행 시 발생하는 데이터를 정확하고 효율적으로 DB에 저장하기 위해 데이터 구조를 설계하는 과정 MongoDB의 특성을 고려하여 저장할 데이터의 구조를 정하는 작업 DBMS RDBMS MongoDB 설계 방식 테이블 설계 후 컬럼을 설계함 도큐먼트 설계 후 컬렉션을 설계 애플리케이션의 처리방안을 고려한 도큐먼트 구조를 어떻게 설계하느냐에 따라 데이터 "정합성(일관성)"과 "성능"에 큰 영향을 주게 되므로 이에 대한 정확한 이해가 필요함. 모델링 예시 - 게시판 각 게시판은 "이름"을 가진다. 게시판에 글을 쓰는 사용자는 "이름, 생년월일, 포인트"를 가진다. 각 게시글은 게시판에 작성 가능, "게시..
[MongoDB] 16. 집계명령어 - 트랜잭션 트랜잭션 읽기나 쓰기 작업이 가능한 DB 작업을 하나 이상 포함하는 DB의 "논리적 처리 단위" 애플리케이션에서 논리적 처리 단위의 일부로 여러 도큐먼트에 대한 읽기와 쓰기를 요구하는 상황 발생 가능성 트랜잭션의 중요한 특징 "성공하든 실패하든 부분적으로 완료하지 않는다." 특성 Atomicity(원자성) - 트랜잭션의 작업이 모두 적용되거나 아무 작업도 적용되지 않음. Consistency(일관성) - 트랜잭션에 성공하면 DB가 하나의 일관된 상태에서 새로운 일관된 상태로 이동 Isolation(독립성) - 여러 트랜잭션이 동시 실행될 때 트랜잭션이 다른 트랜잭션의 부분 결과를 보지 않도록 보장 Durability(지속성) - 트랜잭션이 완료되면 어떤 오류나 고장에도 변경된 값은 유지 MongoDB의 ..
[MongoDB] 15. 집계명령어 - 다양한 연산자, 뷰 문자열 연산자 문자열 연산자 기능 $concat 두 개 이상의 문자열을 단일 문자열로 연결 $strcasecmp 대/소문자를 구분하지 않는 문자열 비교를 하며, 숫자를 반환 한다. $substrBytes 문자열의 부분 문자열을 만듦 $toLower 문자열을 모두 소문자로 $toUpper 문자열을 모두 대문자로 $concat db.text.aggregate([ { $project : {text:1,"concat":{$concat:["$text1","-","$text2"]}} } ]) $strcasecmp db.text.aggregate([ { $project : {text:1,"strcasecmp":{$strcasecmp:["$text1","$text2"]}} } ]) $substrBytes db.text..

728x90
반응형