그동안 엑셀로 정리를 하다 보니 수작업이 너무 많아져서 관리가 어려운 부분이 있었습니다. 이럴 때는 데이터베이스(이하 DB)가 있었으면 하는 바램이 생깁니다. 그런데 본인 PC에 DB를 설치해서 사용할 수 있지만 아무래도 부담스럽습니다.
혹시 무료로 사용할 수 있는 DB가 있는지 질문을 하였더니 @wonsama님께서 구글에서 만든 Firebase가 있다고 알려주셨습니다. 1G까지는 공짜라고 하더군요.
그래서 바로 알아보았습니다. 관련 글을 찾아보았는데, a-z까지 자세하게 설명해 놓은 글이 없더군요. 여기 저기 찾아보면서 드디어 사용법을 파악했습니다. 아직 배워야할 내용들이 많지만 일단 제가 원하는 등록/변경/검색 방법을 확인했습니다.
Firebase란
위키피디아에 나오는 내용입니다.
2011년 파이어베이스(Firebase, Inc)사가 개발하고 2014년 구글에 인수된 모바일 및 웹 애플리케이션 개발 플랫폼이다.
내용인 즉 모바일이나 웹 애플리케이션에서 간단하게 사용할 수 있는 DB를 Firebase사가 만들었고, 이 회사를 구글이 인수하여 현재는 구글에서 서비스를 하고 있습니다.
멋지군요. 저 같은 사람도 쉽게 사용할 수 있는 DB가 필요하니, 모바일이나 웹 애플리케이션에서도 당연히 필요하겠죠. 모두가 DB 서버를 구축하여 운영하려면 비용이 많이 발생하니, 이렇게 DB를 전문적으로 서비스하는 회사가 꼭 필요한 것 같습니다. 꼭 필요한 부분을 잘 파악해서 회사를 만들었고, 이 회사와 서비스의 가치를 인정한 구글이 인수를 해서 더 확장을 했군요. 아무 바람직한 상생 비지니스 모델입니다.
Firebase 프로젝트 생성
Firebase DB를 사용하기 위해서는 아래 사이트로 가서 DB를 만들면 됩니다. 이때 구글 계정으로 로그인하시면 됩니다.
https://console.firebase.google.com/
여기서 "프로젝트 추가" 버튼을 누릅니다.
이후 나오는 메뉴에서 프로젝트 이름을 입력하고, 구글 에널리틱스 사용여부 선택(일단은 사용하지 않는 것으로 설정) 하면 프로젝트가 생성이 됩니다.
서비스 계정 설정
아래 그램과 같이 설정에 있는 프로젝트 설정으로 들어갑니다.
메뉴에 있는 서비스 계정을 선택한 후 사용할 언어를 선택하고(저는 파이썬 선택) 아래에 있는 새 비공개 키 생성 버튼을 누릅니다.
키 생성을 하면 json 파일이 다운로드가 됩니다. 이 파일을 원하는 위치에 저장을 한 후 프로그램에서 사용을 하면 됩니다.
필요한 경우에는 사용자 및 권한 메뉴에 가서 구성을 추가할 수 있습니다. 전 개인적으로 사용할 예정이라 별도로 추가하지는 않았습니다.
데이터베이스 만들기
메인 메뉴에 있는 Database를 선택한 후 데이터베이스 만들기 버튼을 누릅니다.
프로덕션 모드에서 시작을 선택하고 다음을 누릅니다.
서버 위치를 고른 후 완료를 누르면 됩니다. 저는 기본으로 나오는 us-central을 선택했습니다.
데이타베이스 준비
막상 DB는 만들었는데, 어떻게 사용하느냐가 문제죠. 인터넷에서 또 찾아봅니다.
코드는 아래와 같이 간단합니다.
import firebase_admin
from firebase_admin import credentials
from firebase_admin import db
db_url = 'https://프로젝트이름.firebaseio.com/'
# 서비스 계정의 비공개 키 파일이름
cred = credentials.Certificate("c:\\my\\서비스 계정의 비공개 키 파일이름.json")
default_app = firebase_admin.initialize_app(cred, {'databaseURL':db_url})
우선 firebase_admin을 설치합니다.
pip install firebase_admin
그런 후 Database 메뉴에서 나오는 아래 이름을 db_url의 '프로젝트이름' 부분에 입력합니다.
좀 전에 서비스 계정 메뉴에서 받은 비 공개키가 저장된 json 파일이 있는 곳의 위치도 설정해 줍니다.
여기까지 하면 DB를 사용할 수 있는 상태가 됩니다. 참 쉽죠!!
데이타베이스 사용하기
지금 DB는 아무것도 없는 상태입니다. 본인이 원하는 형태의 table을 만들고 해당 데이터를 마구 입력하면 됩니다. DB에서 table을 만드는 것이 가장 중요하고 어렵지만 간단하게 사용하는 경우에는 excel과 같이 생각하시면 됩니다. 그냥 입력할 한 줄에 대하여 정의를 잘 하시면 됩니다.
예를들면 본인 계정의 매일 스팀/스달/스파를 관리하고 싶다고 봅시다. 그럼 이런 식을 데이터를 입력하시면 됩니다.
import firebase_admin
from firebase_admin import credentials
from firebase_admin import db
# for test
db_url = 'https://testfirebase-d67a5.firebaseio.com/'
cred = credentials.Certificate("c:\\my\\비공개키파일.json")
default_app = firebase_admin.initialize_app(cred, {'databaseURL':db_url})
## 새 record 등록하기
ref = db.reference()
ref.update({'2019-11-01':{'tradingideas':{'STEEM':100, 'SBD':10, 'SPA':1000}}} )
이 코드를 실행하면 아래와 같이 실시간 데이타베이스가 만들어집니다.
![]
()
여기에 들어가보면 조금 전에 입력한 내용이 저장되어 있음을 볼 수 있습니다.
이제 저장된 데이터를 읽는 방법입니다.
코드는 간단합니다. 첫 번째 head에 해당하는 keyword를 기준으로 get() 명령어를 입력하면 그 아래에 있는 모든 데이터가 json 형태로 받을 수 있습니다.
## 읽기
ref = db.reference('2019-11-01')
row = ref.get()
print(row)
출력 결과입니다.
Firebase를 사용한 첫 번째 느낌은 "사용하기 참 쉽다"입니다. 그리고 1G까지 공짜로 사용할 수 있다고 하니 왠만한 데이터는 여기에 저장하면서 될 것 같습니다.
다음 편에서는 필드를 추가하는 방법 그리고 특정 key의 value만 update하는 방법에 대하여 알아보도록 하겠습니다.
참고사이트 :
https://firebase.google.com/docs/
https://gosmcom.tistory.com/82?category=335277
jinuking님이 tradingideas님의 이 포스팅에 따봉(2 SCT)을 하였습니다.
happyberrysboy님이 tradingideas님의 이 포스팅에 따봉(5 SCT)을 하였습니다.
@tipu curate
Upvoted 👌 (Mana: 25/30)
jcar토큰 11월 구독보팅입니다. 행복한 11월 맞이하세요. ^^
음... 하나도 모르겠군요! ㅎㅎ 즐거운 11월 되세요^^
독거님도 즐거운 11월 되세요
Posted using Partiko Android
음 배우면 이것저것 쓸일이 많을것 같는데
쩝!! 배움이 너무 느린사람이라서요
아들을 교육시키고 있습니다.
엄청나게 일 시킬 생각입니다 ㅋ
든든한 아들을 두셨군요. 강하가 키우세요. ㅎ
Posted using Partiko Android
Congratulations @tradingideas! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :
You can view your badges on your Steem Board and compare to others on the Steem Ranking
If you no longer want to receive notifications, reply to this comment with the word
STOP
To support your work, I also upvoted your post!
Vote for @Steemitboard as a witness to get one more award and increased upvotes!
트아님도 참 대단하십니다!! 이렇게 새로운 기술들에 대해서 큰 어려움 없이 잘 적응하시니 말입니다~ ㅋㅋ
저도 나이들어서도 쭈우욱~~ 개발을 해서... 아들딸을 더 잘 먹여살려야 겠습니다. ㅋㅋㅋ
힘들어요. 겨우 겨우 따라갑니다.
Posted using Partiko Android