2. 오늘의 진행
• 실습 자료 준비
• Firebase Database
• NoSQL와 Realtime (장점소개)
• Data구조 (NoSQL의 특징)
• 간단한 DB 사용
• 실시간 접속자
3. 실습 자료 다운로드
• 실습 자료를 다운로드 받습니다.
• https://github.com/denlyou/study_firebase4web_abcd
• Firebase project로 초기화 되어 있는 폴더에 public 폴더의 파일을 복사합니다
• (지난 실습 파일들과 통합하였습니다)
6. NoSQL적인 특징
• 대용량 데이터 처리, 분산 시스템 구성에 유리
• 데이터를 Key-Value 쌍으로 저장
• Value에는 또 하위에 key-value쌍의 데이터가 저장 가능
• RDBMS와 비교
• 고정된 스키마를 갖지 않아 저장 구조가 유동적
• Foreign key를 사용하지 않아 join등의 연산이 없음
• 특정 용도에 특화되어 있음
• 채팅, 메시지, 뉴스 피드와 같은 기능 구현에 매우 유리
36. Real-Time Database
• Database와 connection
• 데이터가 변하면 connection된 모든 사
용자에게 notification이 감 (board
casting)
• 웹에서는 Firebase DB SDK가 변화를
감지해서 특정 메소드를 수행
37. 데이터 읽는 방법
• 기본적으로 이벤트 리스너를 통해서만 가능
(앞에서 사용한 once()는 내부적으로 on()을 한번 수행한 후 리스너를 제거하는 off()를 수행하도록 구현되어 있음)
• 데이터 변화 감지 메소드
firebase.database.Reference.on()
• https://firebase.google.com/docs/reference/js/firebase.database.Reference#on
• Sample Code
43. 그 외 기능
• 타임 스탬프 (서버의 현재 시각)
• 사용자 접속 끊김 감지
firebase.database.Reference.onDisconnect()
• https://firebase.google.com/docs/reference/js/firebase.database.Ref
erence#onDisconnect
• Sample Code
44. [Tip] SQL 변환 참고 자료
• 일반적으로 자주 쓰이는 형태의 쿼리 변환
(주의할 점 : 애초에 설계를 NoSQL의 정규화 방법으로
하는 편이 좋음)
• https://firebase.googleblog.com/201
3/10/queries-part-1-common-sql-
queries.html
46. 실시간 접속자의 DB 구조
• 사용자들 정보 (/onUsers)
• 사용자 정보 (/onUsers/[userUID])
• 사용자 UID를 Key로 사용
• 사용자의 닉네임 (/onUsers/[userUID]/username)
• 사용자의 접속 여부 (/onUsers/[userUID]/siteOn)
• 0 : 사이트에 접속하지 않음
• 1 : 사이트에 접속함