플러터(Flutter) 앱을 개발하는 중에 대량의 데이터를 클라우드 파이어스토어(Firestore)에 추가하거나 가져와야 할 때가 있습니다. 이러한 작업을 효율적으로 처리하기 위해 몇 가지 방법이 있습니다.
클라우드 파이어스토어의 벌크 데이터 작업
클라우드 파이어스토어에서 벌크 데이터 작업을 수행하는 방법에는 두 가지가 있습니다. 하나는 데이터 가져오기이고, 다른 하나는 데이터 추가하기입니다.
데이터 가져오기
클라우드 파이어스토어에서 대량의 데이터를 가져오려면 get()
메서드를 사용할 수 있습니다. 이 메서드는 한 번에 가져올 수 있는 최대 문서 수가 제한되어 있기 때문에, 대량의 데이터를 처리할 때에는 페이징(paging)이나 스트리밍(streaming)을 활용하여 여러 번에 걸쳐 데이터를 가져와야 할 수 있습니다.
QuerySnapshot snapshot = await FirebaseFirestore.instance
.collection('users')
.limit(1000)
.get();
데이터 추가하기
클라우드 파이어스토어에 대량의 데이터를 추가하려면 set()
메서드나 update()
메서드를 사용할 수 있습니다. 그러나 많은 양의 데이터를 한 번에 추가하려는 경우에는 set()
이나 update()
메서드를 반복해서 호출하는 것은 효율적이지 않을 수 있습니다.
대량의 데이터를 추가할 때에는 Transaction
을 사용하여 일괄 처리(batch)하는 것이 효율적일 수 있습니다.
WriteBatch batch = FirebaseFirestore.instance.batch();
for (int i = 0; i < 1000; i++) {
DocumentReference ref =
FirebaseFirestore.instance.collection('users').doc('user$i');
batch.set(ref, {'name': 'user$i'});
}
batch.commit();
결론
대량의 데이터 작업을 효율적으로 처리하기 위해서는 클라우드 파이어스토어의 제약사항을 고려하고, 페이징이나 스트리밍, 일괄 처리(batch) 등의 기술을 활용하는 것이 중요합니다.
이렇게 하면 클라우드 파이어스토어를 사용하는 플러터 앱에서 대량의 데이터를 효율적으로 처리할 수 있게 됩니다.
감사합니다.
참고:
- Firebase Documentation. “Get data with Cloud Firestore.” 링크
- Firebase Documentation. “Add data to Cloud Firestore.” 링크