[Firebase] Cloud Firestore 사용해보기

 

 

 

안녕하세요, Wooa Story입니다.

Firebase에서 제공하는 데이터베이스를 사용해 보도록 하겠습니다. 데이터베이스 사용 전에 아직 Firebase 프로젝트 생성 및 안드로이드 스튜디오 연동을 하지 않으셨다면 아래 포스팅을 먼저 참고해 주세요!

 

[Firebase] 안드로이드에서 Firebase 시작하기(Android Studio와 연동)

 

 

Firebase는 2가지 클라우드 기반 데이터 베이스 솔루션을 제공하고 있습니다. 내 프로젝트에 맞는 데이터베이스를 선택하면 되는데 새 프로젝트를 시작하는 개발자들에게는 Cloud Firestore를 권장하고 있습니다.

 

[Firebase에서 제공하는 2가지 데이터 베이스]

1. Cloud Firestore : 모바일 앱 개발을 위한 Firebase의 최신 데이터베이스로 실시간 데이터베이스의 성공을 바탕으로 더욱 직관적인 새로운 데이터 모델을 선보입니다. 또한 실시간 데이터베이스보다 풍부하고 빠른 퀴리와 원활한 확장성을 제공합니다.

 

2. 실시간 데이터베이스 : Firebase의 기존 데이터베이스로 여러 클라이언트에서 실시간으로 상태를 동기화해야 하는 모바일 앱에 적합한 효율적이고 지연 시간이 짧은 솔루션입니다.

Cloud Firestore는 향후 릴리즈에서 더욱 강력한 기능, 성능, 확장성을 제공할 예정이라고 합니다. 

그래서 저도 Firestore를 이용해 보도록 하겠습니다:)

 

Firestore와 실시간 데이터베이스의 차이를 보다 자세히 알고 싶으시면 아래 링크를 참고해 주세요!

 

데이터 베이스 선택!!

 

데이터베이스 선택: Cloud Firestore 또는 실시간 데이터베이스  |  Firebase

Firebase는 실시간 데이터 동기화를 지원하며 클라이언트에서 액세스할 수 있는 2가지 클라우드 기반 데이터베이스 솔루션을 제공합니다. Cloud Firestore는 모바일 앱 개발을 위한 Firebase의 최신 데이터베이스로, 실시간 데이터베이스의 성공을 바탕으로 더욱 직관적인 새로운 데이터 모델을 선보입니다. 또한 실시간 데이터베이스보다 풍부하고 빠른 쿼리와 원활한 확장성을 제공합니다. 실시간 데이터베이스는 Firebase의 기존 데이터베이스로, 여

firebase.google.com

 

 

 

 

  Firestore 데이터 베이스 생성

먼저 Firestore 가이드 문서를 살펴보도록 하겠습니다. 아래 링크로 이동해 주세요!

 

Firestore 가이드문서

 

Cloud Firestore  |  Firebase

유연하고 확장 가능한 NoSQL 클라우드 데이터베이스를 사용해 클라이언트 및 서버 측 개발에 사용되는 데이터를 저장하고 동기화하세요.

firebase.google.com

 

Firestore는 유연하고 확장 가능한 NoSQL 클라우드 데이터베이스를 사용해 클라이언트 및 서버 측 개발에 사용되는 데이터를 저장하고 동기화할 수 있습니다.

Firestore의 주요 기능은 유연성 / 표현형 쿼리 / 실시간 업데이트 / 오프라인 지원 / 확장형 설계가 있습니다. 가이드 문서에 보다 자세히 설명되어 있으니 참고 부탁드립니다.

 

가이드 문서 중간에 '시작하기' 버튼을 선택해서 실제 생성 및 구현을 해보도록 하겠습니다.

생성 및 구현 방법에 대해서 아래처럼 자세히 설명되어 있으니 보고 따라 하시기에 크게 무리는 없을 것 같습니다.

 

Firebase Console로 이동해서 Cloud Firestore 데이터베이스를 만들도록 하겠습니다.

 

Firebase Console

 

로그인 - Google 계정

하나의 계정으로 모든 Google 서비스를 Google 계정으로 로그인

accounts.google.com

 

좌측 탐색 창에서 Database를 선택한 다음 Cloud Firestore용 데이터베이스 만들기를 선택합니다.

 

 

먼저 보안 규칙을 선택합니다. 프로덕션 모드의 경우 모바일 및 웹 클라이언트의 모든 읽기 및 쓰기를 거부한다고 설명되어 있습니다. 그래서 테스트 모드로 시작해 보도록 하겠습니다.

 

다음으로 데이터베이스 위치를 선택합니다. 

멀티 리전 위치 또는 리전 내 위치를 선택할 수 있습니다. 

 

멀티 리전 위치는 미국처럼 전반적인 지역을 의미합니다. 데이터베이스의 가용성 및 내구성을 최대화하려면 멀티 리전 위치를 선택하라고 권장하고 있습니다.

 

리전 내 위치는 캐롤라이나 남부처럼 지리적으로 특정된 위치를 의미합니다. 비용을 절감하거나, 애플리케이션이 지연 시간에 민감하여 쓰기 지연 시간을 단축하거나, 다른 GCP 리소스와 위치를 공유하려면 리전 내 위치를 선택하라고 권장하고 있습니다.

 

저는 일단 기본적으로 멀티 리전 위치로 선택하고 진행을 했습니다.

 

우하단의 완료 버튼을 누르면 Firestore 데이터베이스 생성이 완료됩니다.

 

 

  안드로이드 스튜디오 설정

다음으로 안드로이드 스튜디오에서 코드를 추가합니다.

 

먼저 앱 수준 build.gradle에 firestore 라이브러리를 추가합니다.

build.gradle (<project>/<app-module>/build.gradle)

dependencies {
    implementation 'com.google.firebase:firebase-firestore:21.4.2'
}

 

다음으로 MainActivity.java에서 데이터를 쓰고 버튼이 클릭되면 데이터를 읽는 형태로 구현해 보았습니다.

MainActivity.java

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Access a Cloud Firestore instance from your Activity
        final FirebaseFirestore db = FirebaseFirestore.getInstance();

        // Create a new user with a first and last name
        Map<String, Object> user = new HashMap<>();
        user.put("first", "Ada");
        user.put("last", "Lovelace");
        user.put("born", 1815);

        // Add a new document with a generated ID
        db.collection("users")
                .add(user)
                .addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
                    @Override
                    public void onSuccess(DocumentReference documentReference) {
                        Log.d(TAG, "DocumentSnapshot added with ID: " + documentReference.getId());
                    }
                })
                .addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        Log.w(TAG, "Error adding document", e);
                    }
                });


        Button writeBtn = (Button) findViewById(R.id.read);
        writeBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                db.collection("users")
                        .get()
                        .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                            @Override
                            public void onComplete(@NonNull Task<QuerySnapshot> task) {
                                if (task.isSuccessful()) {
                                    for (QueryDocumentSnapshot document : task.getResult()) {
                                        Log.d(TAG, document.getId() + " => " + document.getData());
                                    }
                                } else {
                                    Log.w(TAG, "Error getting documents.", task.getException());
                                }
                            }
                        });
            }
        });
    }

 

로그를 확인해보니 정상적으로 쓰고 읽기가 완료됨을 확인할 수 있습니다.

 

그리고 Firebase Console에서 데이터가 정상적으로 잘 반영이 되었는지 확인해 보겠습니다.

 

Firebase Database에도 정상적으로 반영됨을 확인할 수 있습니다!


이상으로 간단하게 Firestore를 이용해서 데이터베이스를 사용해 보았습니다.

추후 앱 개발 시에 유용하게 이용할 수 있을 것 같습니다!

 

오늘 포스팅이 조금이나마 도움이 되셨길 바라며 이만 마무리하겠습니다.

오늘도 행복한 시간 보내시길 바라겠습니다:)

 

 

donaricano-btn
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기

댓글을 달아 주세요

">
  1. thumbnail
    2020.06.25 18:34

    비밀댓글입니다