[TIL] NoSQL

hyewon·2021년 11월 29일
0

TIL

목록 보기
30/59
post-thumbnail

NoSQL

NoSQL은 2000년대 초에 웹 환경에서 발생되는 데이터를 다루기 위해서 많이 사용되었다. 2000년대 초에는 웹 시장이 발전함에 따라서 데이터의 양이 급격히 많아지기 시작했고, 하나의 서버를 크게 만드는 것(수직 확장)보다 여러개의 서버를 연결시켜 확장시키는 방법(수평 확장)이 비용이 절감되기 시작했다.

SQL과 차이점

관계형 데이터베이스(RDB)는 SQL을 이용해서 미리 작성된 스키마를 기반으로 정해진 형식에 맞게 데이터를 저장한다. 반면, NoSQL은 스키마가 아닌(schemaless) key-value, document, graph, wide-column 등의 방식으로 데이터를 저장할 수 있다.

NoSQL은 SQL보다 스키마의 형태가 동적이다. 행을 추가할 때 열을 함께 추가할 수도 있고, 개별 속성에 대해 모든 열에 대한 데이터를 반드시 입력하지 않아도 된다는 장점이 있다. 덕분에 NoSQL은 수평 확장이 용이하고, 데이터를 빠르게 적재할 수 있게 됐다. 하지만 ACID와 트랜잭션을 보장할 수 없다는 단점이 있다.

NoSQL의 종류

  • Key-Value 타입: 데이터를 Key(속성 이름)-Value(연결된 데이터 값)의 쌍을 속성으로 하는 배열 형태로 저장함 ex. Redis, Dynamo 등
  • Document DB: 데이터를 테이블이 아닌 문서처럼 저장하는 데이터베이스 ex. MongoDB 등
  • Wide-Column DB: 데이터베이스의 열(Column)에 대한 데이터 관리를 집중적으로 하는 데이터베이스 ex.Cassandra, HBase 등

MongoDB - Python 연결

우선 mongodb와 python을 연결하기 위해서는 MongoDB 사이트에서 로그인 후 DB를 하나 만들어줘야한다. DB를 만든 후에는 Python과 연결하기 위해서 Connect 창에서 "Connect your application"을 클릭해주면 된다.

다음 창으로 넘어가면 파이썬 버전을 선택한 뒤, 아래에 URI를 얻을 수 있는데 URI의 구조는 다음과 같다.

mongodb+srv://<username>:<password>@<Host>/<database name>?retryWrites=true&w=majority

그리고 코드 창으로 넘어가서 MongoClient를 사용해서 MongoDB와 연결해주면 된다.

from pymongo import MongoClient

URI = 'mongodb+srv://<username>:<password>@<Host>/<database name>?retryWrites=true&w=majority'

client = MongoClient(URI)
database = client['db']
collection = database['collection']

# 위와 동일한 동작을 하는 코드
collection = MongoClient(URI).db.collection
profile
우당탕탕 코린이

0개의 댓글