빅쿼리를 장기적으로 운영하다보면 많은 데이터가 쌓이고 결국 비용 최적화를 진행하게 된다.이 때, 두 가지 관점에서 비용 최적화를 진행할 수 있다. 빅쿼리 비용 최적화 비교쿼리 관점 비용 최적화첫 번째는 쿼리 관점에서 비용 최적화를 진행할 수 있다.빅쿼리는 컬럼 기반 스토리지를 사용하기 때문에 컬럼의 수에 따라서 비용이 달라진다. 불필요한 컬럼은 제거하고 필요한 컬럼만 가져와서 사용하도록 최적화를 진행해준다. 그리고 파티셔닝과 클러스터링을 통해 데이터를 조회하는 비용을 줄이게 된다. 아래의 이미지를 통해서 더 쉽게 이해할 수 있다. 스토리지 관점 비용 최적화두 번째는 스토리지 관점에서 비용 최적화를 진행할 수 있다.빅쿼리에서 데이터 세트를 생성할 때 고급 옵션을 보면 스토리지 청구 모델을 설정할 수 있다...
원인 분석google cloud storage 라이브러리를 사용하다가 버전을 업데이트했는데 업로드하는 과정에서 문제가 발생했다.TypeError: a bytes-like object is required, not 'str' 보는 것과 같이 타입 에러가 발생했는데 String 타입이 아니라 bytes-like object 를 요구하고 있다. 그래서 왜 그런지 확인해보니 기존에는 google-cloud-storage 라이브러리 버전을 2.19를 사용하고 있었는데 3.9로 업데이트 되었고버전이 업데이트 되면서 google-cloud-storage 에서 checksum 이 None 에서 auto 로 변경이 되었다고 한다. 아래의 문서를 참고하면 좋을 것 같다.https://pypi.org/project/goog..
빅쿼리를 사용하다보면 데이터 조회를 최적화하기 위해서 여러가지 설정을 하게 되는데 그 분 파티셔닝과 샤딩을 많이 사용하게 된다.파티셔닝과 샤딩 모두 대용량 테이블을 보다 효율적으로 다루기 위한 방법이라고 볼 수 있다. 빅쿼리를 사용함에 있어 쿼리를 최적화하게 되면 비용을 줄일 수 있고 성능을 올릴 수 있기 때문에 내가 만든 테이블에 효율적으로 파티셔닝 또는 샤딩을 적용하는 것이 중요하다. 추가로 빅쿼리 문서를 보면 더 쉽게 이해할 수 있을 것 같다.https://docs.cloud.google.com/bigquery/docs/partitioned-tables?hl=ko 파티션을 나눈 테이블 소개 | BigQuery | Google Cloud DocumentationBigQuery의 파티션을 나눈 ..
BigQuery 에서 시간을 저장하려는데 데이터 타입이 이상하다.BigQuery 에 테이블을 생성해서 데이터를 저장하는 과정에서 테이블 스키마를 정의하지 않으면 빅쿼리 자체적으로 컬럼 타입을 파싱해서 데이터를 저장하게 된다. 이러한 경우 내가 원하지 않는 컬럼 타입으로 저장되기 때문에 스키마를 정의해주어야 할 필요를 느끼게 되었다. 내가 겪은 경험으로는 Python 을 사용해서 Postgresql 에 있는 데이터를 가져와 빅쿼리에 데이터를 저장하려고 하는데 시간과 관련된 테이블을 저장하는 과정에서 내가 원하는지 않는 데이터 타입으로 파싱되어 테이블이 생성되는 것을 보게 되었다. 예를 들어, Postgresql 에서 생성일시와 수정일시를 가져와서 빅쿼리에 저장하려고 하는데 DATETIME 으로 저장되거나 ..