NoSQL은 기존에 많이 사용하던 관계형 데이터베이스와는 다른 방식의 데이터베이스로써, 대량의 데이터를 적재하는데에 초점을 둔 데이터베이스이다.
1) 수직확장: 관계형 DB의 주된 방식으로 2000년대 초반부터 WEB 발전과 함께 더 큰 장치와 서버 이용.
2) 수평확장: 이후 작은 컴퓨터 여러대로 나누어 데이터베이스 저장 > 분산 컴퓨팅(클러스터링 등)
1) KEY_VALUE: Key와 Value로 이뤄진 속성으로 이뤄진 Data를 이용. 대표: DynamoDB
2) DOCUMENT: 전체 Data가 Key에 따른 value 값을 뜻하는 Dictionary와 같은 형태. 대표: MongoDB
3) WIDE-COLUMN: 열에 대한 Data를 집중관리하는 DB, Key, Value형식으로 적재. 대표: HBase
NoSQL(비관계형 데이터베이스) 중 Document형식으로 data를 적재하고 BSON data를 이용하여 그 적재 형식이 매우 유연하다. 자유롭게 문자, 숫자, 배열을 저장 가능.
그 중 Atlas는 MongoDB에서 제공하는 Cloud Database이며, local DB에 비해선 기능적 제약이 있다.
Organization까지 진행 완료 - 개인 이름으로도 가능하며, 추후 수정도 가능하다.
아래와 같이 우측 상단 New Project 생성
project명 기재 후 Next
추후 협업을 위한 창으로 지금은 패스하고 create한다.
이후로도 db 생성 후 무료로 create를 진행한다.
이렇게 진행하면 빠르면 몇초, 오래걸리면 1~3분도 걸리는 것 같은데, db 생성에 시간이 좀 걸린다.
완료가 된 뒤, connect 탭을 들어가 username과password를 설정한 뒤 CREATE 해준다.
IP 설정을 내 연결 IP로 설정해준다. 빨간 칸만 클릭하면 된다.
최종적으로 MongoDB 연결할 방법으로는 python을 사용할 것이므로 아래와 같이 python 3.6 or later로 설정하면 된다.
MongoDB URI는 Mongodb_srv 서비스를 이용하기 위해 따로 메모하거나 창을 띄워놓는다.
우선 MongoDB URI를 파악한다. 위와 같이 구간 별로 user, password, host, database이름을 구분지을 수 있다. 아래 바로 전체 연결 코드를 작성해본다.
# MongoDB URI
URI = 'mongodb+srv://david:password@cluster0.idvui.mongodb.net/myFirstDatabase?retryWrites=true&w=majority'
host = 'cluster0.b7qcq.mongodb.net'
user = 'david'
password = 'password'
database_name = 'myFirstDatabase'
collection_name = 'mongo' #table 명과 같이 생각하기
from pymongo import MongoClient
Mongo_URI = f'mongodb+srv://{user}:{password}@{host}/{database_name}?retryWrites=true&w=majority'
#MongoClient 객체 생성
client = MongoClient(URI)
# database 지정
database = client[database_name] # = client['myFirstDatabase']
# collection 객체 생성 - db로부터 'mongo'이름의 table이라고 생각하기
collection = database[collection_name] # = database['mongo']
# 집어넣을 데이터 예시 = JSON 또는 DICT형식
document={'example':'first one'}
# collection 객체의 insert_one으로 한개의 doc을 업로드
collection.insert_one(document)
그냥 맨 위의 URI를 이용해 MongoClient 객체를 생성해도 되지만, 언제든 편리하게 다른 db를 사용할 수 있도록 처음 작성시부터 각 URI의 주요 입력부분을 formatting할 수 있도록 코딩한다.
database_name의 경우 default로 myFirstDatabase가 정해졌는데, 변경 가능하다.
이후 python을 실행한 뒤, Browse Collection을 하면 DB가 생성된 것을 볼 수 있다.
myFirstDatabase라는 DB에 mongo라는 collection(RDB의 table정도의 규모)이 정렬되어있고, 가운데엔 고유 _id가 자동으로 정해져서 반환되었으며, vs code에서 넣어뒀던 example: "first one" dictionary가 적재된 것을 볼 수 있다.