No SQL은 Not only SQL을 의미하며, 단 하나의 DB를 의미하는 것이 아니라, 거대한 DB의 그룹들이라고 할 수 있습니다. 한국 음식 vs non 한국 음식처럼, SQL과 SQL이 아닌 그 외의 DB를 의미하는 것이라고 할 수 있습니다.
SQL | NoSQL | |
확장성 | 수직적 확장성 RDBMS 머신을 업그레이드 하기 위해서 CPU를 변경하거나 SSD를 변경하는 등 기계에 투자하는 방식 |
수평적 확장성 저장 공간도 서버를 늘리기만 하면 스케일이 계속 늘어나게 된다. 응답 속도는 어느정도 보장이 된다. |
쿼리 언어 여부 | SQL 기존의 사이트 |
NoSQL 페이스북, 인스타그램 |
스키마 유연성 | 강함 인덱스를 사용하면 자료 검색의 속도가 빨라짐 |
자유로움 인덱스를 사용하면 비효율적이기 때문에 KEY를 기준으로 쿼리를 작성하는 것이 중요함 |
데이터 베이스 철학 | 트랜잭션 단위로 비즈니스 로직이 입력되는 것을 의미 순서대로 ! 정확하게 ! |
자유로운 insert, 읽어들이는 건 NoSQL은 느리다! RDBMS에 비해서 |
쇼핑몰처럼 인덱스를 기반으로 한 쿼리 많은 서비스는 데이터 형태에 따라서 RDBMS가 더 잘 어울리는 경우가 있으니,
핫하다고 NoSQL을 사용하면 안 됩니다!
반면! Facebook 같은 소셜 미디어 서비스를 만드는데 RDBMS를 사용한다면, 장기적으로 기술적 부채가 됩니다.
즉, 적절한 기술을 사용하는데 서비스의 유지보수성을 높이고, 장기적인 비용을 절감해주고, 서버의 비용을 줄일 수 있습니다.
그럼 NoSQL의 종류는 어떤 것들이 있을까요?
NoSQL 종류
1) Document DB
- mongoDB
몽고 DB는 json document 형태로 데이터를 저장합니다. 보통의 SQL처럼 행과 열이 존재하는 것이 아니기 때문에,
개발자가 원하는 어떤 종류의 어떤 모양의 데이터든 저장할 수 있습니다.
2) Key-Value DB
- Cassandra DB
카산드라 DB는 Column wide database 유형이기도 합니다. 카산드라는 읽고 쓰기가 아주! 매우! 빠르다는 것이 핵심입니다. 카산드라는 많은 수의 아이템을 1초 만에 작성할 수 있습니다.
애플이 카산드라를 이용해 10페타바이트의 데이터를 저장하고 있고, 넷플릭스, 인스타그램, 우버 같은 회사도 카산드라를 사용하고 있습니다.
검색 엔진처럼 많은 양의 데이터를 빠르게 읽어야 한다면, 카산드라를 사용하면 좋습니다.
- Dynamo DB
다이나모 DB는 서버리스, 즉 분산된 key valueDB로 아마존이 만들었습니다.
특징!
엄청 많은 데이터들을 빠르게! 많이! 읽어야 할 때 사용합니다!
document DB와 key-value DB의 차이점은
어떤 종류의 DB를 얻을 수 있는지가 제한적이라는 것입니다
저장하기 전에 DB에서 무엇을 얻을 것인지 미리 생각해야 합니다.
3) GraphDB
column이나 document가 필요 없을 때 사용하며, 각 노드 사이 관계를 알아야 할 때 사용합니다.
graph DB에서는 document, column으로 데이터를 저장하는 것이 아니라 각각의 entity를 저장하고 이를 관계망으로 연결하는 개념입니다.
https://www.youtube.com/watch?v=Q_9cFgzZr8Q
'📓 Study > Tech Interview' 카테고리의 다른 글
String, StringBuilder, StringBuffer 각각의 차이에 대해 설명해주세요. (0) | 2021.09.21 |
---|---|
🚗오버라이딩과 🏠오버로딩에 대해 설명해주세요 (2) | 2021.09.21 |
🗺 원시타입과 🧭참조 타입의 차이는 무엇일까요? (0) | 2021.09.17 |
🚧 접근 제어자의 종류와 이에 대해 설명해주세요 (0) | 2021.08.20 |
🚪 프로세스 주소 공간에 대해 설명해주세요 (0) | 2021.08.20 |
댓글