DynamoDB

­최상언·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개의 댓글