GDSC SungShin Women's University 23-24/Story

[Winter Blog Challenge] Firbase Realtime Database (Member 김채리)

GDSC SungShin Team 2024. 2. 29. 22:23

안녕하세요! GDSC Sungshin 23-24 멤버 김채리입니다😊 다들 solution challenge 잘 준비하고 계신가요?

이번 Winter Blog Challenge에서는 solution challenge를 준비하며 사용해 본 Firebase Realtime Database에 대해 알아보려 합니다!


Firebase Realtime Database?

Firebase Realtime Database는 모바일 및 웹 애플리케이션에서 실시간 데이터 동기화와 업데이트를 제공하는 NoSQL 클라우드 데이터베이스입니다. 데이터를 저장하고 데이터가 업데이트 되면 사용자들은 업데이트된 데이터를 받아볼 수 있습니다. 따라서 실시간 채팅, 실시간 협업 도구, 실시간 게임 등과 같은 다양한 애플리케이션에서 유용합니다.

 

주요 특징

1. 실시간 업데이트:

데이터베이스의 데이터가 변경되면 연결된 모든 클라이언트에 즉시 업데이트됩니다. 이는 사용자 경험을 향상시키고 데이터의 신뢰성을 유지하는 데 도움 이 되어 효율적인 협업과 실시간 업데이트를 가능하게 해줍니다.

2. JSON 기반 데이터 구조:

Firebase Realtime Database JSON 기반 데이터 구조를 사용하여 데이터를 저장합니다. 이는 데이터를 구조화하고 관리하기 쉽게 만들어줍니다.

{
	"users": {
    "user1": {
      "name": "John",
      "email": "john@example.com"
	} 
  }
}

3. 오프라인 지원:

애플리케이션이 오프라인 상태에서도 Firebase Realtime Database 를 사용할 수 있습니다. 변경된 데이터는 로컬에 캐시되고 온라인으로 전환되면 서버에 동기화됩니다.

4. 보안 규칙:

Firebase Realtime Database는 사용자 지정 보안 규칙을 통해 데이터의 접근 및 수정을 제어할 수 있습니다. 이는 데이터의 안전성과 보안을 유지하는 데 도움이 됩니다.

 

어떻게 사용할까요?

Firebase Realtime Database Firebase의 다른 기능과 함께 유용하게 사용할 수 있습 니다. Firebase Authentication과 연동하여 인증된 사용자만 데이터에 접근할 수 있도록 설정할 수 있으며, Firebase Cloud Messaging를 사용하여 데이터 변경 알림을 클라이언 트에게 전달할 수 있습니다.

Android에서 사용하기 위해서는 먼저 Firebase 프로젝트에 데이터베이스를 추가하고, Firebase SDK를 사용해 데이터를 읽고 쓸 수 있습니다.

 

데이터 쓰기

setValue() 는 지정된 경로에 데이터를 추가하는데 하위 노드를 포함한 모든 데이터를 덮어 씁니다.

val database = Firebase.database

val user = database.getReference("users")

 

fun writeNewUser(userId: String, name: String, email: String) {

    val user1 = User(name, email)

 

    user.child("users").child(userId).setValue(user1)

}

 

데이터 읽기

addValueEventListener()를 통해 ValueEventListener를 추가하고, onDataChange() 를 통해 이벤트 발생 시점에 특정 경로의 데이터를 스냅샷으로 읽어오게 됩니다.

addValueEventListener()는 변경사항을 수신 대기하여 경로의 데이터 변경 시 데이터를 받아옵니다.

val postListener = object : ValueEventListener {

    override fun onDataChange(dataSnapshot: DataSnapshot) {

    // Post object 가져와 values 사용해 UI 업데이트

        val post = dataSnapshot.getValue<Post>()

    }

 

    override fun onCancelled(databaseError: DatabaseError) {

        // Post 실패

        Log.w(TAG, "loadPost:onCancelled", databaseError.toException())

    }

}

postReference.addValueEventListener(postListener)

 

사용해야 할까요?

  • 간편한 사용성: Firebase Realtime Database는 간단하고 직관적인 API를 제공하여 빠르고 쉽게 개발할 수 있습니다.
  • 실시간 업데이트: 데이터가 실시간으로 동기화되므로 사용자는 항상 최신 정보를 받아볼 수 있습니다.
  • 확장성: Firebase Realtime Database는 필요에 따라 자동으로 확장되므로 대규모 애플리케이션에서도 높은 성능을 유지할 수 있습니다.

Firebase Realtime Database를 활용하여 실시간으로 데이터를 관리하며 도움이 됐으면 좋겠습니다.

 

다들 solution challenge 준비로 많이 바쁘실 것 같은데 저희 모두 좋은 결과 얻을 수 있으면 좋겠습니다!! 끝까지 화이팅하시고 모두 즐거운 방학 되세요😊