2021년 27주차 기록
2021.07.05
google-sheets flutter android-studio
07/05 (월) ~ 07/11 (일)
이번 주 번역
원문
- #google-sheets
- Using Google Sheets as a Database: A Comprehensive Analysis, HEVO
- 2020년 8월 20일 작성
Using Google Sheeta as a Database: A Comprehensive Analysis
개요
- 당신혹은 당신조직이 구글 시트를 데이타 저장용도로 써본적이 있나?
- 구글 시트를 무료 데이타베이스로 쓸 수 있을지 궁금했던적이 있나?
- 전통적인 database를 구매하지 않고 당신의 웹서비스에 구글시트를 database로 활용할 수 있을지 생각하나?
- 위의 질문들이 모두 Yes 라면, 바로 정확한 지점에 왔다 .
- 이 포스트에서는 구글시트를 database로 사용하기 위해 data를 변환하는 방법과 사용방법에 대해 논의한다.
- 다음의 목차를 참고 해라 (목차 생략, 위의 목차를 참고하라)
Introduction to Google Sheets
- 구글 시트는 클라우드에서 spreadsheet 기능을 제공하는 구글의 서비스다.
- 구글 시트는 spreadsheet과 비슷하지만 한층 더 강력해진(on steroids) 도구다.
- 태생이 클라우드 플랫폼이라서, 기존의 spreadsheet과 비교해 더 많은 기능을 제공한다.
- 구글 시트의 몇가지 주요 특징을 살펴보면..
- 웹기반이기 때문에, 인터넷을 통해 언제 어디서든 sheets에 저장된 데이타에 접근할 수 있다
- 모든 주요 디바이스의 운영체제는 구글 시트용 앱을 가지고 있으며 막힘없는 경험을 제공한다.
- Gmail 계정과 함께 제공되며 구글 시트를 사용하기 위해 추가비용을 낼필요는 없다.
- Microsoft Excel과 사용방법이 유사하여 경험이 있다면 어려운점은 없을것이다.
- 시트의 데이타를 효율적으로 분석하기 위해 플러그인 , 애드온, 커스텀 코드를 적용할 수 있다.
Introduction to Databases
- database는 행과 열로 표현된 data collection 이다
- database는 database management system(DBMS)의 도움을 받아, 데이타의 구조적인 정보를 조정하고 구성한다.
- datatabs는 쉽게 data에 접근하고, 조회하고, 구성하고, 관리할 수 있도록 기능을 제공한다.
- 대부분의 database는 데이타를 작성하고 요청하는데에 structured query language (SQL)을 이용한다
- 몇가지 인기있는 database는 다음과 같다.
- MySQL
- PostgreSQL
- SQL Server
- MongoDB(NoSQL database)
Google Sheets as a Database
- 구글 시트는 매우 발전된 형태의 spreadsheet로 바로 사용할 수있는 많은 능력이 탑재되어있다
- 클라우드 기반 앱이기 때문에, 작은 어플리케이션이나 웹사이트의 database로도 활용할 수 있다.
- MySQL이나 PostgreSQL 처럼 많은 돈을 지불해야하는 DB들은 가볍게 무시하고..
- 구글 시트를 이용하여 실시간으로 data를 저장하거나 관리할 수 있다.
- DB의 사용처를 구글 시트가 완전히 대체할 수있다고 말하는것은 아니지만
- 작은 dataset에 한해서 옵션정도가 될 수는 있다
- 어떻게 Google Sheets를 database로 사용하는지 보자
필요한 준비물
- Google Cloud Platform Account
- Python 3.6 or later
- Excel data와 프로그래밍 언어에 대한 기본적인 이해
Google Clud Console에서 프로젝트를 시작함
- 구글 API Manager로 가서 신규 프로젝트를 생성한다
- Google Drive API를 프로젝트에 추가한다. 이것은 구글 드라이브에 저장된 spreadsheet에 접근을 허용하는 것이다.
- Python 프로그램에서 생성 될 요청을 인증(authenticate)하는 데 사용할 자격 증명(credential)을 생성한다.
- 생성된 JSON Key를 로컬머신에
keys.json
이라는 이름으로 저장한다 - 텍스트 에디터로 생성된 키를 Open하고 client_email 프로퍼티 로 언급된 이메일 주소를 복사한다.
- “Tutorial” 이름으로 시트를 생성하고 몆가지 데이터를 추가해본다
- 그 시트의 접근권한을 위 email 주소에 공유한다. 이 작업은 API를 통해 그 시트로의 접근권한을 허용한다.
Connect to Spreadsheet via Python
- 좋아하는 Python IDE를 열고 아래 패키지를 설치한다
1
> pip install gspread oauth2client
-
googleSheetToPython.py
이름으로된 파일을 생성하고 아래 코드를 적어넣자1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
# 라이브러리를 임포트한다 import gspread # oauth2client 에서 가져온 Service client credential from oauth2client.service_account import ServiceAccountCredentials # 이쁘게 프린트하기 import pprint # scope 생성하기 scope = ['https://spreadsheets.google.com/feeds'] # keys.json 내용과 scope를 이용하여 자격증명 생성하기 creds = ServiceAccountCredentials.from_json_keyfile_name('keys.json', scope) # 자격증명을 이용하여 gspread authorize를 생성하기 client = gspread.authorize(creds) # 이제 구글 시트에 대한 access가 가능하며 StartupName으로 client.open을 호출한다 sheet = client.open('Tutorial').sheet1 pp = pprint.PrettyPrinter() # 구글 시트안의 모든 record 에 access한다 result = sheet.get_all_record()
-
일단 자격증명이 setup되면, spreadsheet에 접근하는데 API를 사용할수 있으며 CRUD(Create, Read, Update, Delete) opertation을 구글시트에 적용하는 것이 가능해진다
- 아래 Python code는 구글 시트에서 data를 읽어오는 코드이다
1 2 3 4
result = sheet.row_values(5) # 각각의 row를 본다 result_col = sheet.col.values(5) # 각각의 column을 본다 result_cell = sheet.cell(5, 2) # 특정 cell을 본다 pp = pprint.PrettyPrinter()
- 시트의 값을 업데이트한다
1 2 3 4
#update values sheet.update_cell(2, 9, '500000') # 시트의 cell(2, 9) 위치의 값을 변경한다 result = sheet.cell(2, 9) pp.pprint(result)
Limitations of Using Google Sheets as a Database
- 구글 시트는 사용자가 데이타를 관리하고 분석할 수있는 훌륭한 기능들을 제공한다
- 하지만 그것이 기존 database를 완전히 대체하는 것은 아니다
- 구글 시트를 database로 사용하게 될 때 맞닥뜨리게 되는 몇가지 제약(constraints)들에 대해 알아보자
-
내결함성 부족
- 구글시트는 클라우드를 통해 이용가능하지만, 기존 database와 수준의 내결함성(fault-tolerant)은 없다
- 만약 어떤 사용자라도 spreadsheet을 지운다면, 모든 데이타는 날아갈 것이다.
- 반면에 기존 database는 데이타가 다중 노드로 복제되며 훨신 내결함성이 좋은 시스템을 제공한다.
-
스토리지 제약
- 구글시트는 5백만 레코드까지만 저장할 수있다.
- 처음에는 이것이 상당히 많은 숫자처럼 보이지만,
- medium 이나 large size의 application에 충분한 숫자는 아니다
-
데이타베이스 기능이 없음
- 구글 시트는 querty,search,joins,consitency와 같은 database 기능들을 제공하지 않는다.
- 부드럽게 joins 기능을 수행하는 표준 API는 없다
- 이런 동작을 하기 위해서는 직접 복잡한 프로그래밍을 해야한다
-
내결함성 부족
결론
- 이 포스트에서 구글 시트와 그 특징들, 구글시트를 어떻게 database로 사용하는지를 배웠다
- 하지만 특정 기능들의 부족으로 database를 완전히 대체할 수는 없다
- 당신이 다른 대체품을 찾고있다면,
Hevo Data
를 한 번 써보길 권한다, - 여기서 부터는 Hevo 홍보 ( 유료 서비스임)
Flutter Tutorial - Google Sheets API
- #flutter
개요
내용정리
- google sheets에 있는 데이터의 CRUD가 가능한 android, ios, web 앱을 지원하는 api를 배움
Android Studio 업데이트중 에러
- #android-studio
참고링크
- 첫번째 링크: Android Emulator Hypervisor Driver for AMD Processors
- 두번째 링크: Is Hyper V really disabled?
- 첫번째 링크에서 Prerequiste를 맞추도록 해야함.
Javascript 개념 설명 사이트
- 클로저의 개념, Polemaweb? : 클로저의 개념 설명, 모던 자바스크립트 Deep Dive의 저자?