저의 출시된 프로젝트의 데이터구조가 뒤죽박죽인 상태여서 구조를 다시 짜는 상황에서 했던 고민들을 정리해보았습니다.
현재 프로젝트는 의류브랜드의 상품들을 웹에서 크롤링하여 보여주는 형태이며, ios 앱에서 크롤링을 진행시 새로운 브랜드를 추가하게 되면 코드를 건드려야하는 문제점이 있었기때문에 데이터 크롤링을 앱으로부터 분리하고 모든 데이터는 Firestore에서 읽어오는 방식으로 변경하고있습니다.
웹크롤링은 친구가 python을 사용해 하며 크롤링한 데이터는 firestore에 업로드하고 저는 앱에서 firestore의 데이터를 받아 씁니다.
친구는 firestore를 처음 사용했기 때문에 일반적인 JSON형식의 데이터를 업로드 하였고 데이터를 받아쓰는 입장에서는 firestore의 쿼리기능을 사용하기 힘들고 JSON데이터를 한번더 파싱해야한다는 번거로움이 있었기때문에 Firestore에 데이터를 저장하는 표준적인 방법을 정리 해보았습니다.
Firestore란?
Firestore 데이터베이스는 NoSQL 데이터베이스로. Firestore에서는 데이터를 문서(Document)라는 단위로 저장하며, 각 문서는 필드(Field)와 값(Value)의 쌍으로 구성됩니다.
NoSQL 데이터베이스란?
NoSQL 데이터베이스는 기존의 관계형 데이터베이스(SQL 데이터베이스)와는 다른 형태의 데이터 저장과 관리를 위한 데이터베이스 시스템을 말합니다. NoSQL은 "Not Only SQL"의 약자로, 오직 SQL만이 아니라는 의미입니다.
NoSQL 데이터베이스는 일반적으로 수평적 확장이 가능하며, 대용량 데이터를 처리하거나 빠른 읽기/쓰기 처리를 위해 설계되었습니다. 이는 빅 데이터와 실시간 웹 어플리케이션 등 현대의 몇몇 새로운 유형의 데이터 사용 사례에 적합합니다.
따라서, Firestore에 데이터를 저장하는 표준적인 방법은 필드를 키(Key)로 사용하고, 해당 필드에 대한 데이터를 값(Value)으로 저장하는 것입니다.
아래의 첫번째 사진은 표준적인 방식으로 저장한 방식이고 두번째사진은 post라는 배열을 타입으로 가지는 필드에 여러 news가 들어가 있는 형태입니다.
오른쪽의 방식은 2차원배열의 형태이기때문에 앱의 입장에서 사용하기 번거로울수 있었습니다. 따라서 받아쓰는 입장에서 쿼리기능을 최대한으로 활용하고자 한다면 각 post별로 문서를 만드는 방법이 더 적합하다고 할 수 있습니다.
'IT' 카테고리의 다른 글
SQL - SELECT문 실행 순서 정리 (0) | 2024.01.31 |
---|---|
WebBrowser의 실행 과정 (0) | 2023.11.15 |
REST API (0) | 2023.05.02 |