240327 여러가지 Database

송용진·2024년 3월 27일

스키마
데이터베이스에 저장되는 데이터의 구조와 형식을 정의하는 것
사용자 정보를 저장하는 테이블의 스키마의 예
테이블: 사용자 정보 (Users)

  • 이름 (Name): 문자열(String)
  • 나이 (Age): 정수(Integer)
  • 이메일 (Email): 문자열(String)
  • 주소 (Address): 문자열(String)

컬렉션
비슷한 종류의 문서들을 그룹화한 것(SQL의 테이블)

엔터티
정보를 저장하는 논리적인 개체
이 개체는 비즈니스 도메인에서 식별할 수 있는 유일한 사물, 개념 또는 사건 등을 의미
엔터티는 데이터베이스에서 관리하고자 하는 대상을 대표


트랜잭션
DB에서 수행되는 작업의 단위

NoSQL 데이터베이스의 주요 장점

  1. 유연한 데이터 모델
    NoSQL 데이터베이스는 스키마가 없거나 유연한 스키마를 제공하여
    비정형 데이터를 저장하기에 적합
    이는 데이터 모델을 변경하거나
    새로운 필드를 추가하는 등의 작업이
    간단하고 빠르게 이루어질 수 있음을 의미

  2. 분산 데이터베이스
    NoSQL 시스템은 대부분 분산형 아키텍처를 채택하고 있어
    데이터의 확장성과 가용성을 높일 수 있음
    이는 데이터베이스를 쉽게 확장하고
    여러 서버에 데이터를 분산하여 처리할 수 있음을 의미

  3. 고속 처리
    많은 NoSQL 데이터베이스는 대량의 데이터를 신속하게 처리할 수 있는 기능을 제공
    이는 데이터를 읽고 쓰는 데 있어서 높은 성능을 보장할 수 있음

  4. 다양한 데이터 형식 지원
    NoSQL 데이터베이스는 다양한 데이터 형식을 지원하며,
    비정형 데이터나 그래프 데이터 등을 효율적으로 저장하고 처리할 수 있음

  5. 확장성
    대부분의 NoSQL 데이터베이스는 수평적 확장이 가능하므로,
    시스템이 성장함에 따라 데이터베이스를 쉽게 확장할 수 있음

  6. 비용 효율성
    NoSQL 데이터베이스는 일반적으로 오픈 소스로 제공되며,
    하드웨어 요구사항이 낮아 비용을 절감할 수 있음

이러한 장점들로 인해
NoSQL 데이터베이스는 대용량 및 실시간 데이터 처리,
웹 및 모바일 애플리케이션 등 다양한 환경에서 많이 사용되고 있음

업스케일링
시스템이 처리할 수 있는 작업량이나 데이터 양이 증가함에 따라
시스템을 확장하는 과정을 의미
이는 수직적 확장(Vertical Scaling)과는 대조적으로
수평적 확장(Horizontal Scaling)을 포함

PostgreSQL의 JOIN과 MongoDB의 $lookup은 데이터베이스 시스템에서 데이터를 결합하는 데 사용되는 두 가지 다른 기술입니다. 이 두 기술의 주요 차이점은 다음과 같습니다:

  1. 데이터 모델:

    • PostgreSQL은 관계형 데이터베이스 시스템으로, 데이터는 테이블에 행 형태로 저장됩니다. 여러 테이블 간의 관계는 외래 키를 사용하여 정의됩니다.
    • MongoDB는 문서 지향 데이터베이스이며, 데이터는 BSON(Binary JSON) 형태의 문서로 저장됩니다. MongoDB에서는 문서 안에 중첩된 데이터 구조를 사용하여 복잡한 관계를 표현합니다.
  2. 성능:

    • 일반적으로 PostgreSQL의 JOIN은 복잡한 쿼리나 대량의 데이터셋에서도 효율적으로 작동합니다. 그러나 JOIN은 적절한 인덱스를 사용하지 않으면 성능이 저하될 수 있습니다.
    • MongoDB의 $lookup은 일반적으로 두 개의 컬렉션 간의 조인을 수행하기 때문에 더 많은 I/O 작업이 발생할 수 있습니다. 그러나 적절한 인덱스를 사용하면 성능을 최적화할 수 있습니다.
  3. 조인 조건:

    • PostgreSQL의 JOIN은 일반적으로 외래 키 또는 특정 조건을 기반으로 테이블을 결합합니다.
    • MongoDB의 $lookup은 일반적으로 두 컬렉션 간의 조인 필드를 지정하여 조인을 수행합니다.
  4. 유연성:

    • PostgreSQL의 JOIN은 정규화된 데이터 모델에 가장 적합합니다. 복잡한 쿼리를 작성하고 복수의 테이블을 조인하는 데 유용합니다.
    • MongoDB의 $lookup은 비정규화된 데이터 모델을 가진 애플리케이션에서 유용합니다. 중첩된 문서 구조를 사용하여 데이터를 조직화하고, 복잡한 조인을 피하고자 할 때 유용합니다.

결론적으로, PostgreSQL의 JOIN과 MongoDB의 $lookup은 서로 다른 데이터베이스 시스템의 특성과 사용 사례에 따라 선택되어야 합니다. 관계형 데이터를 다루는 경우 PostgreSQL의 JOIN을 사용하는 것이 일반적으로 좋습니다. 반면에 비정규화된 데이터 모델이나 중첩된 구조를 가진 경우 MongoDB의 $lookup을 고려할 수 있습니다.


여러가지 Database

NoSQL이란?

  • 스키마 없음(또는 유연한 스키마)
  • 수평적 확장성
    수평적 확장
    데이터베이스 시스템이 더 많은 데이터나 트래픽을 처리하기 위해
    단순히 하나의 서버를 업그레이드 하는 대신
    여러 서버로 시스템을 확장하는 것을 의미

    이는 데이터베이스 시스템에 더 많은 하드웨어 리소스를 추가하여 성능을 향상시키고,
    더 많은 데이터를 처리할 수 있도록 함

수평적 확장은 주로 분산 시스템에서 사용되며,
데이터베이스 시스템이 여러 대의 서버에 데이터를 분산하여 저장하고 처리하도록 함
이렇게 하면 각 서버는 데이터베이스 작업의 부분적인 부담을 나누게 되어
전체적인 성능이 향상되고,
시스템이 더 많은 사용자나 데이터 부하를 처리할 수 있게 됨

간단히 말해, 수평적 확장은
데이터베이스 시스템을 여러 대의 서버로 확장하여 성능을 향상시키는 방법

  • 다양한 데이터 모델
  • 분산 시스템 지원
  • 유연한 트랜잭션 지원

MongoDB

몽고DB(MongoDB)
NoSQL 데이터베이스 시스템 중 하나로,
문서 지향(Document-oriented) 데이터베이스

이것은 관계형 데이터베이스와는 달리
데이터를 JSON 스타일의 도큐먼트(BSON)로 저장하며,
이 도큐먼트들은 컬렉션(Collection) 안에 저장됨
몽고DB는 유연성과 확장성을 갖추고 있어서
대량의 비정형 데이터를 다루는데 특히 유용

필요성

1. 스키마리스 데이터 모델

2. 문서 기반 저장

3. 확장성과 분산 데이터베이스 지원

4. 강력한 쿼리 언어

5. 고성능

6. 다양한 사용 사례

7. 강력한 커뮤니티와 지원

MongoDB와 RDBMS 비교

1.데이터 모델

2.스키마 유연성

3.확장성

4.쿼리 언어

5.트랜잭션 처리

6.사용 사례

결론

MongoDB의 주요 강점:

  • 유연성과 빠른 개발
  • 확장성
  • 다양한 데이터 처리

RDBMS의 주요 강점:

  • 일관성과 신뢰성
  • 복잡한 쿼리
  • 성숙한 기술

결정 요인:

  • 데이터 복잡성과 구조
  • 확장성과 요구사항
  • 트랜잭션 처리

파이썬에서 MongoDB 사용하기

1단계: MongoDB와 PyMongo 설치

2단계: MongoDB에 연결

3단계: 문서 생성 및 삽입

4단계: 문서 조회

5단계: 문서 업데이트

6단계: 문서 삭제

연산자

심화 예제

1.인덱스 생성 예제

2. insert_many 사용 예제

3. update_many 사용 예제

4. delete_many 사용 예제

5. 예외 처리 예제

여러가지 메서드

데이터베이스 및 컬렉션 접근

  • 데이터베이스 리스트 확인
  • 컬렉션 리스트 확인
    집계 파이프라인

예외 처리

  • 예외 처리

세션 관리

그리드FS 사용

  • 대용량 파일 저장

연습 문제

Vector DB란

임베딩
주로 텍스트나 이미지와 같은 데이터를 수치화하여 벡터 형태로 표현하는 기술
임베딩은 데이터의 의미와 특징을 보다 효과적으로 파악하고 다룰 수 있도록 도와줌
예를 들어, 텍스트 임베딩은
단어나 문장을 수치화하여 벡터로 표현함으로써
컴퓨터가 텍스트의 의미를 이해하고 유사성을 측정할 수 있게 함

벡터 데이터베이스의 원리

1.데이터 저장

2.인덱싱

3.검색

벡터 데이터베이스의 활용

결론

  • 추천 시스템
  • 자연어 처리
  • 이미지 및 비디오 검색
  • 생명 과학과 의료
    1.Milvus
    2.Chroma DB
profile
개발자

0개의 댓글