DynamoDB

eonnyhoney·2021년 1월 7일
0

AWS

목록 보기
1/5

비관계형 database (=NoSQL)

SQL vs NoSQL

❓ MySQL과 같은 SQL을 사용할 것인가? 아니면 MongoDB 같은 NoSQL을 사용할 것인가?


SQL; Structured Query Language (관계형 데이터베이스 언어)

관계형 데이터베이스와 상호작용하는 데 사용되는 쿼리 언어
SQL을 사용하면 관계형 데이터베이스 관리 시스템(RDBMS)에서 데이터를 저장, 수집, 삭제 및 검색할 수 있음

엄격한 스키마


데이터는 테이블레코드 로 저장되며, 각 테이블에는 명확하게 정의된 구조 가 있음
구조란 어떤 데이터가 테이블에 들어가고, 어떤 데이터가 그렇지 않을지를 정의하는 필드 집합 (~~그냥 컬럼 정의 아닌가? 정말이지 제각각이야~~)
스키마를 준수하지 않는 레코드는 추가할 수 없음!
더 많은 필드를 추가하거나, 스키마에 정의된 필드가 누락된 레코드는 다른 테이블을 선택해야 함
~~컬럼 정의에 맞게, 딱 그것만 전부 채워져 있는 row만 추가할 수 있다는 얘기~~

관계


데이터들을 여러개의 테이블에 나눠 관리. 데이터의 중복을 피할 수 있음
하나의 테이블에서 중복없이 하나의 데이터만을 관리하기 때문에, 다른 테이블에서 부정확한 데이터를 다룰 위험이 없음


NoSQL (비관계형 데이터베이스 언어)

그냥 SQL이랑 반대라서 지어진 이름 ~~누군지 몰라도 세상 지맘대로 지었네~~

스키마 없음


여기는 레코드 대신 문서(document) 라고 부름
다른 구조의 데이터를 같은 컬렉션 (SQL에서는 테이블)에 추가할 수 있음
~~컬럼 정의가 따로 없고, 그냥 row들 각자 자기가 필요한 속성만 저장할 수 있다는 얘기~~
문서는 JSON 데이터와 비슷한 형태

관계 없음

일반적으로 관련 데이터는 동일한 컬렉션에 넣음
따라서 여러 컬렉션에 join할 필요 없이 필요한 모든 것을 이미 갖춘 문서를 작성하게 됨
~~join 이라는 개념이 아예 존재하지 않음~~
만약 join을 하고 싶다면 직접 해당 외래키를 검색하여 사용할 수 있으나, 일반적인 방법은 아님
컬렉션을 통해 데이터를 복제하여 각 컬렉션 일부분에 속하는 데이터를 정확하게 산출
~~데이터가 중복되기 때문에 참조 무결성? 맞나 한 컬렉션에서 수정하고 다른 컬렉션에 반영 안되는거? 암튼 그거 조심해야 할듯. 그래서↓~~
자주 변경되지 않는 데이터일 때 사용하기 적합

profile
배울게 많은 햇병아리 개발자

0개의 댓글