Firebase의 Cloud Firestore를 사용하여 갑자기 Cloud에 Database 구축

소개



Unity에서 애플리케이션을 만들면서 클라우드에서 Database를 구축하고 싶습니다! 모처럼이므로 평판이 좋은 Firebase를 사용해 보았습니다.
  • 대상 독자 : Firebase의 Database를 우선 사용하고 싶은 사람
  • 작성하지 않은 것: 사용자 인증 처리. 여기에서는 Database로의 갱신은 관리자가 실시합니다.

  • 나중에 Unity에서의 사용 방법을 정리할 예정

    Firebase의 Cloud Firestore란 무엇입니까?



    Firebase 은 Google에서 제공하는 Platform as a service로 수많은 서비스를 제공합니다.
    그 중에 Database를 취급하기 위한 서비스로서 Firebase Realtime Database 라고 이번 소개하는 Cloud Firestore 가 있습니다.

    사용법도 공식적으로 공개 해 주고 있습니다.
    Realtime Database는 1 JSON 파일로 모든 것을 관리하므로 관리 데이터가 복잡해지면 다루기가 어렵습니다.

    한편 Cloud Firestore는 컬렉션 > 문서라는 계층에서 데이터를 관리하는 형태의 NoSQL Database이므로 Realtime Database보다 복잡한 구조의 데이터를 취급할 수 있습니다.
    Cloud Firestore 데이터 모델

    이용 상한 도 무료로 이하이므로, 개인 개발하기에는 충분한 양이군요.

    1 GiB total
    10GiB/month
    2만/일
    5만/일
    2만/일

    사용법



    프로젝트 및 Database 만들기



    우선은 프로젝트를 작성. 톱 페이지로 이동하여 Google 계정으로 로그인 후 프로젝트 만들기를 선택합니다.


    만든 프로젝트를 선택하여 Cloud Filestore를 만듭니다.


    보안 규칙 설정. 나중에 미세하게 규칙을 바꿀 수 있으므로 잠금을 선택.
    인증을 사용하는 경우 Authentication 설정이 필요합니다.


    나중에 DB를 만드는 위치를 설정하고 완료


    Database에 데이터 채우기



    Database를 선택하면 컬렉션을 추가 화면이 있으므로,


    컬렉션의 이름을 지정하여


    Document, 그 안의 필드를 지정하는 것으로 데이터를 채워 갑니다.


    우선 클라이언트로부터의 데이터 액세스



    프로젝트에 대한 액세스는 개인 키를 생성하여 수행할 수 있습니다. 서비스 계정으로 새로운 비공개 키를 생성하면, 키나 DB 액세스처 URL등의 정보가 들어간 json 파일을 취득할 수 있습니다.


    나중에 이것을 사용하여 액세스 코드를 작성하기 만하면됩니다. 사용법은 여기 . 각 언어에 맞춘 튜토리얼을 공식으로 준비해 줍니다.
    예를 들어 Golang이라면 이런 식으로 데이터를 추가, 참조, 삭제할 수 있습니다.

    main.go
    package main
    
    import (
        "context"
        "fmt"
        "log"
        "time"
    
        firebase "firebase.google.com/go"
        "google.golang.org/api/iterator"
        "google.golang.org/api/option"
    )
    
    func main() {
        // Firebase接続
        sa := option.WithCredentialsFile("path/to/key.json")
        ctx := context.Background()
        app, err := firebase.NewApp(ctx, nil, sa)
        if err != nil {
            log.Fatalln(err)
        }
    
        // Firestore用のクライアント生成
        client, err := app.Firestore(ctx)
        if err != nil {
            log.Fatalln(err)
        }
        defer client.Close()
    
        //書き込み
        docRefs, _, err := client.Collection("users").Add(ctx, map[string]interface{}{
            "first": "Ada",
            "last":  "Lovelace",
            "born":  time.Now(),
        })
        if err != nil {
            log.Fatalf("Failed adding alovelace: %v", err)
        }
    
        //読み込み
        iter := client.Collection("users").Documents(ctx)
        for {
            doc, err := iter.Next()
            if err == iterator.Done {
                break
            }
            if err != nil {
                log.Fatalf("Failed to iterate: %v", err)
            }
            fmt.Println(doc.Data())
        }
    
        //削除。ここでは書き込みをした新Documentを削除する
        _, err = docRefs.Delete(ctx)
        if err != nil {
            return
        }
    }
    
    

    Firebase의 snippet에도 링크되어 있지만 다양한 언어로 샘플 코드가 github에 공개되어 있습니다.
    htps : // 기주 b. 코 m / 푹 빠져? U tf8 = % 2 % 9C % 93 & q = s Nip ts & ty Pe = & Penguge =

    좋은 웹페이지 즐겨찾기