동기들이랑 하는 미니 프로젝트 DB 선정을 위해 이것저것 찾아본 거 정리하기.
미니 프로젝트에 사용할 DB 를 선정하기 위해선
1) DB 종류별 특징 조사하기
2) 우리 프로젝트 데이터에 맞는 DB 선정 하고 이유 정리하기
이 두가지가 필요하다. 아무래도 이직, 취직을 생각하면서 하는 프로젝트 다 보니 단순히 기술 스택을 사용하는 것 보다 ‘왜 그것을 사용했는지’ 를 꼼꼼히 생각해보고자 한다.
1 . DB 간의 차이점 알아보기 .
우선은 SQL 과 NoSQL 차이부터 공부하고 나눠 봤다.
NoSQL = Not only SQL 로 비관계형 데이터베이스이다. SQL 에서의 행과 열 테이블 식의 데이터 관리가 아닌 다양한 데이터 모델로 저장 , 관리할 수 있도록 해준다.
mongoDB : documentDB로 data 를 json 형태로 저장한다. 보통 sql 에선 행과 열 형태로 저장하기에 데이터 형식으 제약이 많은데 비해서 좀 더 자유로음.
카산드라db : 엄청 많은 양의 데이터를 빨리 읽어야함.
Dynamo DB : 키 밸류 DB 로 많은 데이터 뽑음. GraphDB : 페이스북 같은 곳에서 사용하는 것으로 데이터 간 관계가 복잡해 entity 형식으로 관리해야 접근이 빠른 데이터에 적합하다.
이렇게 종류와 특징에서 보듯이 NoSQL은 대용량의 복잡한 특정 상황에서 유리하기에 미니 프로젝트 같은 작은 규모에 단순한 구조에서는 크게 장점을 발휘하지 못한다.
그냥 SQL 중 하나 골라서 쓰면 될 듯 .
2. Sql 중 MySQL vs PostgreSQL vs SQLite
MySQL
- 퍼포먼스 대비 가벼워서 속도가 중요한 시스템에도 괜찮다. 그리고 커뮤니티가 크다 보디 이용중에 문제가 있어도 참고할 게 많다 .
- 설치가 쉽고 서포트 커뮤니티가 커서 대부분의 웹 사이트나 웹 기반 어플리케이션에 적당하다.
- 복제 기능이 있어 수평확대가 쉽다. 대신 읽기와 쓰기 작업이 동시에 일어나는 경우에는 트랜잭션에 따른 데이터 무결성이 완전하지 않아서 문제가 될 수 있음.
- 표준 SQL 지원하지 않는 부분도 있음 (간결함 때문에 미지원)
PostgreSQL
- 확장성이 좋아 커스텀이 용이하고 데이터 타입을 여러개 지원한다. (다양한 기능 사용 가능)
- 하지만 역으로 이런 다양성때문에 서포트를 찾기 어려울 수 있다. 복잡하거나 커스텀이 필요하거나, 다른 개발 도구들과 호환해야할 때 장점이 되긴하지만 ㅠㅠ
- 표준 SQL 을 준수한다.
- 대신 간단히 읽기만 하면 되는 건데 과하게 사용할 수 있음.
SQLite
- 서버리스로 설치나 셋업이 필요없이 어플리케이션 단에서 실행된다.
- 데이터가 적거나 방문자수가 적은 작은 단위 어플리케이션 다룰 때 사용하면 좋다.
- 혹은 에어컨이나 이런 임베디드 db 필요할때 사용하면 좋다.
3. 우리 프로젝트에선 뭘 사용하면 좋을까?
- 우리가 만들고자 하는건 데이터 크기는 엄청나게 많을 거 같지는 않음.
- 읽기를 여러번 해야해서 데이터를 읽어오는 속도가 빨라야할 것 이라고 생각함.
- 엄청난 커스텀이 필요할 것 같지는 않고 간단한 기능만 사용할 듯.
세 가지 특징을 봤을 때, 사용이 간단하면서 속도가 좋은 mysql 사용하는게 좋을 것 같음!
postgreSQL 도 좋아 보이지만 이 db 의 장점을 충분히 못 누릴 거 같음.