> For the complete documentation index, see [llms.txt](https://soojle.gitbook.io/project/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://soojle.gitbook.io/project/requirements/undefined-2/undefined-2-1.md).

# 데이터베이스 의사결정

해당 서비스에서 사용될 DBMS를 결정하기 위한 사항을 기술한다.

## 개요

본 프로젝트는 세종대학교와 관련된 웹상에 존재하는 모든 데이터를 수집하고 체계화해야 한다. 많은 양의 정보가 실시간을 생성되고 갱신되기 때문에  해당 성능에 특화된 데이터베이스를 결정해야 한다.

## **배경과 요구사항**

* 대부분의 스키마가 고정되어 있으나, **일부 데이터가 원자성을 띄지 않는다**.
* **검색(Read)에 있어 최선의 성능**이 요구된다.
* 삽입(Write)는 큰 비중을 차지하지 않는다.
* 해당 DBMS를 사용하는 **비용이 최소화**되어야 한다.
* 해당 DBMS는 **Linux Ubuntu**에서 작동한다.

## DBMS 선택사항

* MySQL - RDBMS
* MongoDB - NoSQL

## 의사결정

{% content-ref url="/pages/-LmoHmFstbrM5uAFvCa5" %}
[MySQL vs MongoDB 성능 분석](/project/requirements/undefined-2/undefined-2-1/mysql-vs-mongodb.md)
{% endcontent-ref %}

위의 비교 분석 보고서에 기반하여 본 프로젝트에서는 **NoSQL(MongoDB)**&#xB97C; 선택하였다. 그 이유는,

* NoSQL은 스키마가 없이 유연한 형태로 데이터를 관리할 수 있다.
* 위의 성능 분석에 의하면 NoSQL이 RDB보다 보편적인 성능이 높다.

## DB ORM

MongoDB를 사용하기로 결정되었기 때문에  Python에서 제공하는 Pymongo ORM을 사용하기로 하였다.&#x20;
