본문 바로가기
FireBase

Firebase -데이터베이스(1) FirebaseDB종류, Firestore 안드로이드프로젝트 ,Console설정하기

by 봄석 2019. 1. 9.

Firebase - 데이터베이스


Firebase 데이터베이스란?

Firebase 데이터베이스는 다른 데이터베이스들과는 다른 방식으로 만들어져 있다.

보통 데이터베이스들은 Pull driven 방식의 매커니즘으로 작동됩니다.

Pull Driven 방식이란 데이터베이스의 내용이 수정되어도 따로 앱에서 또는 

Controller가 데이터베이스를 읽어들이지 않는 이상 앱의 UI가 그려지지 않는 것을 말합니다.

반대로 Push Driven 방식의 데이터베이스데이터베이스의 내용이 수정될 경우 UI가 변경되는 것을 말합니다.


Push Driven 방식은 RxAndroid나 RxSwift 등에서 많이 얘기하고 있습니다.

즉 시시각각 데이터가 변하는 모바일에서는 최적화 된 데이터베이스 방식이며 이 방식을 사용하게 되면 코드를 몇 줄 입력하지도 않았는데도 굉장히 반응성 좋은 앱을 만들 수 있습니다.




Firebase 데이터베이스 종류

Firebase 데이터베이스에는 두 가지가 있는데 RealtimeDatabase와 Firestore 가 있습니다.


RealtimeDatabase는 구형 데이터베이스 입니다. 사실 Push Driven을 위해서 만들어진 데이터베이스 이다보니 검색 쿼리가 생각보다 굉장히 빈약합니다. 그래서 이것을 보안하기 위해 만들어진 Firestore라는 새로운 데이터베이스가 만들어 졌습니다. 사실 RealtimeDatabase를 보완하는 것이 아닌 완전히 대체하는 개념입니다. 만약 Firebase를 처음 배운다면 RealtimeDatabase를 건너뛰고 바로 Firestore를 배우는것이 좋습니다.



Firestor는 기존 RealtimeDatabase보다 쿼리, 보안, 색인 기능이 강력해지긴 했지만 상용 데이터베이스인 Oracle, MySQL, MongoDB 보다는 쿼리가 약합니다. 물론 조금은 복잡한 쿼리를 지원했으면 좋았을 것이라고 생각하지만 쿼리가 약한 듯해도 Push Driven으로 얻는 이점이 많다 보니 부족한 쿼리는 안드로이드 내부에서 처리해주도록 합니다.




Firebase 콘솔에 내앱 추가하기, 프로젝트에 라이브러리 추가하기

먼저 https://console.firebase.google.com/ Firebase 콘솔창에 접속해 

Project Overview오른쪽의 톱니바퀴를 눌러 

 프로젝트설정-> 앱추가 -> 패키지이름 입력 

->google-services.json 파일 다운로드하여 -> 안드로이드스튜디오 app 아래에 넣어주기



그리고 gradle.build(모듈)의 dependencies에 아래 내용을 추가합니다

dependencies {
      ...
 
    //Firebase
    implementation 'com.google.firebase:firebase-database:16.0.5'
    implementation 'com.google.firebase:firebase-auth:16.0.5'
    
}

apply plugin: "com.google.gms.google-services"


그리고 gradle.build(프로젝트)

buildscript {
    ext.kotlin_version = '1.3.11'
    ext.anko_version='0.10.5'
    repositories {
        google()
        jcenter()
    }
    dependencies {
        ...
 
        classpath 'com.google.gms:google-services:4.2.0' // update version
 
    }
}
 
allprojects {
    repositories {
        ...
        maven{
            url "https://maven.google.com"
        }
    }
}
 
task clean(type: Delete) {
    delete rootProject.buildDir

}




Firestore 라이브러리 Gradle에 추가하기

gradle.build(모듈)의 dependencies에 아래 내용을 추가합니다

 //Firestore

    implementation 'com.google.firebase:firebase-firestore:17.1.5'




그리고 https://console.firebase.google.com/ 에 접속한후 만들어둔 프로젝트로 이동합니다.

이동한 후 왼쪽의 Database에 Cloud Firestore Beta  데이터베이스 만들기를 클릭해줍니다.




Cloud Firestore 보안 규칙에는 두 가지가 있는데 잠금모드와 테스트모드가 있습니다.

잠금모드로 시작할 경우 쓰기가 거부됩니다. 테스트모드로 시작하면 데이터베이스 주소를 알고 있거나 인증되지 않은 사용자도 사용할 수 있습니다.


잠금모드로 시작하게되면 아예 쓰기가 거부됩니다. 쓰지못하는 데이터베이스를 만드는 이 메뉴는 필요가없습니다 .


테스트모드로 시작해줍니다


가장 기본적인 코드값은 인증된 사용자 즉 Firebase의 Authentication 사용자만 사용할 수 있도록 보안을 설정해주기 위해서는 ": if true;" 코드를 입력해주면 됩니다.

service cloud.firestore { match /databases/{database}/documents { match /{document=**} { allow read, write: if true; } } 

}Colored


위 코드가 데이터베이스 규칙을 설명하는 가장 기본적인 방법입니다.




입력방법은 Firebase 콘솔에서 Database의 Cloud Firebase 규칙으로 이동한 후에 

" : if true ; " 을 입력해주고 게시해주면 됩니다.

댓글