Firebase는 스키마가 없는 데이터베이스, 즉, 비관계형 데이터베이스로 테이블을 구성하는 스키마 혹은 컬럼의 자료형 등 규칙이 따로 없다.
따라서 분산처리와 데이터의 안정성, 확장성이 뛰어나다.
NoSQL의 종류는 다음과 같다.
Firebase는 Document, 즉 문서형에 해당하므로 JSON 형식의 문서를 사용하여 저장한다.
기본적으로 부모-자식 관계를 가지고 Node 형태의 방식으로 데이터 구조를 쌓는다.
이는 키(부모)-값(자식) 구조, 트리구조로 볼 수 있다.
유저 정보를 저장하는 구조
Users
ᅠᅠ└─ User ID
ᅠᅠᅠᅠᅠᅠᅠᅠ├── User ID
ᅠᅠᅠᅠᅠᅠᅠᅠ├── Profile Image
ᅠᅠᅠᅠᅠᅠᅠᅠ├── Nickname
ᅠᅠᅠᅠᅠᅠᅠᅠ└── Day
작성된 일지를 저장하는 구조
Diary
ᅠᅠ└─ Diary ID
ᅠᅠᅠᅠᅠᅠᅠᅠ├── Diary ID
ᅠᅠᅠᅠᅠᅠᅠᅠ├── Publisher
ᅠᅠᅠᅠᅠᅠᅠᅠ├── Date
ᅠᅠᅠᅠᅠᅠᅠᅠ├── Weather
ᅠᅠᅠᅠᅠᅠᅠᅠ├── Title
ᅠᅠᅠᅠᅠᅠᅠᅠ├── Description
ᅠᅠᅠᅠᅠᅠᅠᅠ└── Image
온도, 습도, 조도, 물주기 등의 정보를 아두이노로부터 받아와 저장하는 구조
Temperature
ᅠᅠ└─ Temperature ID
ᅠᅠᅠᅠᅠᅠᅠᅠ├── Temperature ID
ᅠᅠᅠᅠᅠᅠᅠᅠ├── Publisher
ᅠᅠᅠᅠᅠᅠᅠᅠ├── Time
ᅠᅠᅠᅠᅠᅠᅠᅠ├── Rate
ᅠᅠᅠᅠᅠᅠᅠᅠ└── OnOff
이를 JSON 형태로 나타내면 다음과 같다.
{
"Users" : {
"User_ID" : {
"id" : "User_ID",
"profile" : "",
"nickname" : "",
"day" :
}
},
"Diary" : {
"Diary_ID" : {
"diaryid" : "Diary_ID",
"publisher" : "",
"date" : ,
"weather" : "",
"title" : "",
"description" : "",
"image" : ""
}
},
"Temperature" : {
"Temperature_ID" : {
"publisher" : "",
"temperatureid" : "Temperature_ID",
"time" : ,
"rate" : ,
"onoff" : true
}
},
...
}