스키마
데이터베이스에 저장되는 데이터의 구조와 형식을 정의하는 것
사용자 정보를 저장하는 테이블의 스키마의 예
테이블: 사용자 정보 (Users)
컬렉션
비슷한 종류의 문서들을 그룹화한 것(SQL의 테이블)
엔터티
정보를 저장하는 논리적인 개체
이 개체는 비즈니스 도메인에서 식별할 수 있는 유일한 사물, 개념 또는 사건 등을 의미
엔터티는 데이터베이스에서 관리하고자 하는 대상을 대표
트랜잭션
DB에서 수행되는 작업의 단위
NoSQL 데이터베이스의 주요 장점
유연한 데이터 모델
NoSQL 데이터베이스는 스키마가 없거나 유연한 스키마를 제공하여
비정형 데이터를 저장하기에 적합
이는 데이터 모델을 변경하거나
새로운 필드를 추가하는 등의 작업이
간단하고 빠르게 이루어질 수 있음을 의미
분산 데이터베이스
NoSQL 시스템은 대부분 분산형 아키텍처를 채택하고 있어
데이터의 확장성과 가용성을 높일 수 있음
이는 데이터베이스를 쉽게 확장하고
여러 서버에 데이터를 분산하여 처리할 수 있음을 의미
고속 처리
많은 NoSQL 데이터베이스는 대량의 데이터를 신속하게 처리할 수 있는 기능을 제공
이는 데이터를 읽고 쓰는 데 있어서 높은 성능을 보장할 수 있음
다양한 데이터 형식 지원
NoSQL 데이터베이스는 다양한 데이터 형식을 지원하며,
비정형 데이터나 그래프 데이터 등을 효율적으로 저장하고 처리할 수 있음
확장성
대부분의 NoSQL 데이터베이스는 수평적 확장이 가능하므로,
시스템이 성장함에 따라 데이터베이스를 쉽게 확장할 수 있음
비용 효율성
NoSQL 데이터베이스는 일반적으로 오픈 소스로 제공되며,
하드웨어 요구사항이 낮아 비용을 절감할 수 있음
이러한 장점들로 인해
NoSQL 데이터베이스는 대용량 및 실시간 데이터 처리,
웹 및 모바일 애플리케이션 등 다양한 환경에서 많이 사용되고 있음
업스케일링
시스템이 처리할 수 있는 작업량이나 데이터 양이 증가함에 따라
시스템을 확장하는 과정을 의미
이는 수직적 확장(Vertical Scaling)과는 대조적으로
수평적 확장(Horizontal Scaling)을 포함
PostgreSQL의 JOIN과 MongoDB의 $lookup은 데이터베이스 시스템에서 데이터를 결합하는 데 사용되는 두 가지 다른 기술입니다. 이 두 기술의 주요 차이점은 다음과 같습니다:
데이터 모델:
성능:
조인 조건:
유연성:
결론적으로, PostgreSQL의 JOIN과 MongoDB의 $lookup은 서로 다른 데이터베이스 시스템의 특성과 사용 사례에 따라 선택되어야 합니다. 관계형 데이터를 다루는 경우 PostgreSQL의 JOIN을 사용하는 것이 일반적으로 좋습니다. 반면에 비정규화된 데이터 모델이나 중첩된 구조를 가진 경우 MongoDB의 $lookup을 고려할 수 있습니다.
수평적 확장수평적 확장은 주로 분산 시스템에서 사용되며,
데이터베이스 시스템이 여러 대의 서버에 데이터를 분산하여 저장하고 처리하도록 함
이렇게 하면 각 서버는 데이터베이스 작업의 부분적인 부담을 나누게 되어
전체적인 성능이 향상되고,
시스템이 더 많은 사용자나 데이터 부하를 처리할 수 있게 됨
간단히 말해, 수평적 확장은
데이터베이스 시스템을 여러 대의 서버로 확장하여 성능을 향상시키는 방법
몽고DB(MongoDB)
NoSQL 데이터베이스 시스템 중 하나로,
문서 지향(Document-oriented) 데이터베이스
이것은 관계형 데이터베이스와는 달리
데이터를 JSON 스타일의 도큐먼트(BSON)로 저장하며,
이 도큐먼트들은 컬렉션(Collection) 안에 저장됨
몽고DB는 유연성과 확장성을 갖추고 있어서
대량의 비정형 데이터를 다루는데 특히 유용
연산자
insert_many 사용 예제update_many 사용 예제delete_many 사용 예제임베딩
주로 텍스트나 이미지와 같은 데이터를 수치화하여 벡터 형태로 표현하는 기술
임베딩은 데이터의 의미와 특징을 보다 효과적으로 파악하고 다룰 수 있도록 도와줌
예를 들어, 텍스트 임베딩은
단어나 문장을 수치화하여 벡터로 표현함으로써
컴퓨터가 텍스트의 의미를 이해하고 유사성을 측정할 수 있게 함