개요
4일만에 안드로이드 개발을 배우고,, 시작하고,, 완성은아니지만 간단하게나마 끝을 냈다!
안드로이드로 유저인증을 공부하면서 firebase를 알게되었고 이것저것 찾다보니 어느정도 어떤 느낌인지 그리고 내가 익숙했던 RDBMS와 다른건 무엇인지 대략적으로 알게 되었다. 그래서 이를 정말 간단하게나마 기록해두려고 한다.
본문
다음과 같은 3명의 사람을 각각 관계형 데이터베이스(SQL)와 비관계형 데이터베이스(NoSQL)로 표현해보고자 합니다.
관계형 데이터베이스
먼저 관계형 데이터 베이스는 Person이라는 테이블에 각 사람을 Row(혹은 Record)로 저장하고, 이들의 특징(ex. 이름, 나이, 키 etc)을 column(혹은 Attribute)로 표현합니다. 테이블을 그려보면 다음과 같습니다.
이름 | 나이 | 키 | 성별 | 주거지 |
Jane | 26 | 170 | Female | LA |
Ella | 28 | 168 | Female | NY |
John | 24 | 175 | Male | PA |
그림으로 나타내면 각각의 row가 각 객체를 뜻합니다.
비관계형 데이터베이스
그렇다면, NoSQL은 어떨까요?
NoSQL로 표현한다면 다음과 같이 표현할 수 있습니다. Person아래 Jane, Ella, John이 있고 각 사람들 아래에 name, age, height, sex, location이 보여집니다.
“Person” : {
“Jane” : {
“name” : “Jane”
“age” : 26
“height” : 170
“sex” : “Female”
“location” : “LA”
},
“Ella” : {
“name” : “Ella”
“age” : 28
“height” : 168
“sex” : “Female”
“location” : “NY”
},
“Jane” : {
“name” : “John”
“age” : 24
“height” : 175
“sex” : “Male”
“location” : “PA”
}
}
그림으로 나타내면 각각의 child ({}로 묶인 단위들)가 각 객체를 뜻합니다.
마무리
정리하면, 관계형 데이터베이스는 record에 객체를 저장하며 형식에 맞춰 테이블을 불러오고, 비관계형 데이터베이스는 child로 객체를 저장하여 괄호 묶음을 가져옵니다. 두개의 가장 큰 특징은 관계형 데이터베이스는 스키마를 준수해야하기 때문에 유연성이 떨어지는 대신 정형화되어있고, 비관계형 데이터베이스는 그렇지 않기 때문에 몇개의 컬럼은 빠질수도 있는 유연성을 갖습니다. 이상 정리 마치겠습니다.