Development Palette
NoSQL 본문
NoSQL
https://khj93.tistory.com/entry/Database-RDBMS와-NOSQL-차이점
NoSQL vs RDBMS
https://meetup.toast.com/posts/274
- NoSQL을 언제 사용?
- 정확한 데이터 구조를 알 수 없고 데이터가 변경/확장이 될 수 있는 경우에 사용하는 것이 좋습니다. 또한 단점에서도 명확하듯이 데이터 중복이 발생할 수 있으며 중복된 데이터가 변경될 시에는 모든 컬렉션에서 수정을 해야 합니다. 이러한 특징들을 기반으로 Update가 많이 이루어지지 않는 시스템이 좋으며 또한 Scale-out이 가능하다는 장점을 활용해 막대한 데이터를 저장해야 해서 Database를 Scale-Out를 해야 되는 시스템에 적합합니다.
- scale-up, scale-out 이란? https://tecoble.techcourse.co.kr/post/2021-10-12-scale-up-scale-out/
NoSQL 종류
1. 키-값 데이터베이스
- 키와 값으로 구성된 배열구조의 데이터베이스로 NoSQL 데이터베이스 중 가장 단순한 구조
- 언제 사용?!
- 성능 향상을 위해 관계형 데이터베이스에서 데이터 캐싱
- 장바구니 같은 웹 애플리케이션에서 일시적인 속성 추적
- 모바일 애플리케이션용 사용자 데이터 정보와 구성 정보 저장
- 이미지나 오디오 파일 같은 대용량 객체 저장
- 좋아요 처리
- 일일 방문자 수 구하기
- 출석 이벤트 구현
- 최근 검색 목록
- https://velog.io/@swhan9404/NoSQL-의-종류별-특징
- Redis
Redis(REmote DIctionary Server)
- https://meetup.toast.com/posts/224
- 레디스는 오픈소스이고 In-Memory 데이터베이스 ⇒ 즉, 모든 데이터를 메모리에 저장하고 조회
- 관계형 데이터베이스(Oracle, MySQL) 보다 훨씬 빠름!!
- 그 이유는 메모리 접근이 디스크 접근보다 빠르기 때문
- 다른 In-Memory 데이터베이스(ex. Memcached) 와의 가장 큰 차이점
- String, Bitmap, Hash, List, Set, Sorted Set 등 다양한 자료구조를 제공
- 높은 버전은 Geospatial Index, Hyperloglog, Stream 등의 자료형도 지원
- Sorted set : 실시간 랭킹 서버를 사용하는데 알맞음
- String : 모든 종류의 문자열(이진 데이터 포함) 을 저장 가능.저장가능 최대 사이즈 512MB
- 따라서 JPEG 이미지를 저장, HTML fragment 를 캐시하는 용도로 자주 사용.
- 이러한 자료구조를 Key-Value 형태로 저장
- 에어비엔비, Instagram, 쿠팡에서도 사용
2. 도큐먼트 데이터베이스
- 필드와 값의 형태로 구성된 데이터를 JSON 포맷으로 관리하는 데이터베이스
- 특징
- NoSQL 데이터베이스 중 가장 인기가 높다
- Documnet Database 데이터는 Key와Document의 형태로 저장된다. Key-Value 모델과 다른 점이라면 Value가 계층적인 형태인 도큐먼트로 저장된다는 것이다. 객체지향에서의 객체와 유사하며, 이들은 하나의 단위로 취급되어 저장된다. 다시 말해 하나의 객체를 여러 개의 테이블에 나눠 저장할 필요가 없어진다는 뜻이다.
- 주요한 특징으로는 객체-관계 매핑이 필요하지 않다. 객체를 Document의 형태로 바로 저장 가능하기 때문이다. 또한 검색에 최적화되어 있는데, 이는 Ket-Value 모델의 특징과 동일하다. 단점이라면 사용이 번거롭고 쿼리가 SQL과는 다르다는 점이다. 도큐먼트 모델에서는 질의의 결과가 JSON이나 xml 형태로 출력되기 때문에 그 사용 방법이 RDBMS에서의 질의 결과를 사용하는 방법과 다르다
- 언제 사용!?
- 대용량 데이터를 읽고 쓰는 웹 사이트용 백엔드 지원
- 제품처럼 다양한 속성이 있는 데이터 관리
- 다양한 유형의 메타데이터 추적
- JSON 데이터 구조를 사요하는 애플리케이션
- 비정규화된 중첩 구조의 데이터를 사용하는 애플리케이션
- https://velog.io/@swhan9404/NoSQL-의-종류별-특징
- mongoDB
mongoDB
- mongoDB 특징과 쿼리: https://meetup.toast.com/posts/275
- mongoDB 모델링
3. 칼럼 패밀리 데이터베이스
- 칼럼과 로우로 구성된 데이터베이스
- 칼럼은 이름과 값으로 구성
- 로우는 각기 다른 칼럼으로 구성이 가능
- 이렇게 저장된 데이터는 하나의 커다란 테이블로 표현이 가능
4. 그래프 데이터베이스
- 노드와 관계로 구성된 데이터베이스
- 특징
- 연관된 객체를 모델링할 목적으로 설계되었음
- 개체와 관계를 그래프 형태로 표현한 것이므로 관계형 모델이라고 할 수 있음
- 언제사용?!
- 장점 1. 다양한 데이터를 참조하는 질의에 적합
- 장점 2. 데이터 확장이 용이
- 데이터 간의 관계가 탐색의 키일 경우에 적합하다. 페이스북이나 트위터 같은 소셜 네트워크에서(내 친구의 친구를 찾는 질의 등) 적합하고, 연관된 데이터를 추천해주는 추천 엔진(연관검색어)나 패턴 인식 등의 데이터베이스로도 적합하다.
- 그래프데이터 베이스 특징 : https://d2.naver.com/helloworld/8446520
- Neo4JS, Cyper : https://wikidocs.net/50728
유사 프로젝트
빅데이터 분석 프로젝트 예시
https://www.koreascience.or.kr/article/CFKO201835372170725.pdf
데이터 관리 예시 : 수집한 데이터는 제목, 기사가 작성된 시간, 기사 내용, 언론사, URL, 카테고리, 댓글 수, 추천 수로 분류하여 NoSQL에 저장한다. 이 때, 동일한 정보를 가진 데이터가 저장되는 것을 방지하기 위하여 제목과 URL로 중복 여부를 검사한다.
분모자 기능
- 기사 검색 -> 추천 알고리즘
- 이슈 랭킹 (시간 기준)
- 시각화 (유튜브 또는 사진)
- 필터 기능 (기간, 언론사, 카테고리)
- 기사내용, 제목으로 키워드 추출-> 추천 알고리즘, 검색,
- 키워드 입력 -> 구독
제목, 시간, 기사 내용, 언론사, URL, 카테고리, 추천 수, 댓글 수로 분류하여 NoSQL에 저장한다.
'Database' 카테고리의 다른 글
MongoDB 구조 - DB, Collection, Document (0) | 2022.03.24 |
---|---|
MySQL Workbench (0) | 2022.01.05 |
Mysql download (0) | 2022.01.05 |
Comments