파이썬, firebase-admin (라이브러리) 사용기준
firestore를 사용하다 보면 특정 컬렉션 안의 문서의 개수가 필요할 때가 있다.
크게 2가지 방법이 존재했다.
- 컬렉션 안의 문서를 모두 가져와서 count
- 별도의 count 전용 컬렉션(or 문서)을 만들고 타깃 컬렉션의 문서 수를 입력하고, 타깃 컬렉션에 문서를 추가, 삭제할 때마다 count 전용 컬렉션의 값을 업데이트하는 법
1번 방법은 컬렉션 안의 문서 수가 10~20개 수준이 아니라 1만 개 ~10만 개를 넘어간다면 시간도 오래 걸리고 읽기 사용량이 지나치게 많이 나가 요금부담도 크다는 단점이 존재한다. (요금폭탄 조심..)
2번 방법은 별도의 컬렉션(or 문서)을 만들고 관리를 해야 하고, 타깃 컬렉션의 문서 추가, 삭제에 대응하도록 만들어야 하기에 손이 많이 간다.
그런데
2023년 2월에 firebase-admin 라이브러리에 사용하는 google-cloud-firestore에서 Count query api를 지원한다고 한다.
https://firebase.google.com/support/release-notes/admin/python#authentication
따라서 위의 2가지 방법 말고 count를 사용하는 방법을 추천한다.
읽기 사용량도 문서 1000개당 1회로 청구되고, 속도도 중소 규모의 데이터 세트 기준 20~40 밀리초라고 하니 사용하지 않을 이유가 없다.
count 사용법
cred = credentials.Certificate(firestore_key)
firebase_admin.initialize_app(cred)
db = firestore.client()
documents_count = db.collection(collection_name).count().get()
print(documents_count)
print(documents_count[0][0].value)
# 출력 예시
[[<Aggregation alias=field_1, value=26220, readtime=2023-09-20 06:40:05.232107+00:00>]]
26220
# 소요시간
0.08528828620910645
중소 규모의 데이터 셋 기준 20~40밀리 초라고 했는데, 약 25000개 데이터의 count 시간이 85밀리 초면 나쁘지 않다.
firebase-admin version 6.1.0부터 count를 지원하니 혹시 안되면 업데이트해주자. (google-cloud-firestore v2.9.1 이상)
'tips' 카테고리의 다른 글
[python] torch.cuda.is_available() 이 false일 때 해결법 (0) | 2023.11.21 |
---|