로컬DB
sqlite3는 로컬DB이다.
외부 통신 없이 간단히 DB를 사용하고 싶을 때 유용하다.
in memory에 객체나 배열로 정보를 저장하게 될 경우 RAM의 휘발성 때문에 다 날아가서 어디에 정보를 저장하긴 해야하는데, 네트워크 통신은 부담스러울 때 이용한다.
혹은 Offline Caching와 같은 기능을 위해서 로컬 DB를 사용하기도 한다.
네트워크 통신 자체가 어렵다기보다는 간단한 서비스이고, DB 서버 운용 자체가 부담이 되는 경우에 유용하다.
데이터 웨어 하우스에서 유저들의 정보들을 모두 관리해야 한다면, 간단한 서비스 운영자 입장에서는 비용이 더 나갈 것이다. 유저들의 각 컴퓨팅 시스템 내에서 DB를 처리하는 것이 낫기 때문에 사용한다.
물론 MySQL, PorstgreSQL, MongoDB 등과 같은 DB에 비교했을 때 담을 수 있는 정보의 형식이나 그런 것이 부족하지만 용량이 적고, 로컬DB라는 점에서 모바일 앱, 데스크탑 앱과 같이 유저 개개인이 독립적으로 사용하는 경우에 종종 쓰인다고 한다.
개략적인 설명은 아래 기사를 읽어보자.
로컬 DB 분야서는 sqlite(RDBMS) 와 realm(NoSQL)가 자주 사용되는 편이라고 한다.
SQLite3 설치 및 환경 변수 세팅
sql 설치
Precompiled Binaries for Windows의 zip을 받아주면 된다. 굉장히 가볍다.
환경 변수 설정
다운로드 받은 파일을 환경 변수로 지정하여 globally하게 접근할 수 있도록 하자
이제 접근할 수 있게 되었다.
sqlite3
* sqlite도 DB이다 보니 사용하기 편리한 ORM Library가 별도로 존재한다. ORMLite, requery ... 등등
sqlite3 shell
www.sqlitetutorial.net/sqlite-commands/
많은 것들이 있지만 필요할 때 찾아보면 된다.
.open [경로] // 보통 프로젝트 경로에서 .open을 하기 때문제 굳이~ 절대 경로로 입력할 필요 없다.
.database
.tables
.schema [table 이름]
select * from [table 이름]
delete from [table 이름] WHERE [조건식]
Realm?
성능을 보아하니 SQLite를 쓰는 이유가 단순히 업계에서 오랫동안 사용되었기 때문이지, 성능이 좋아서는 아닌 것 같다고 느낀다...
모바일 앱에 관심이 있다면 장기적으론 realm을 배워두는 것이 좋을 것 같다.
Realm is a mobile database that runs directly inside phones, tablets or wearables. This project hosts the JavaScript versions of Realm. Currently we only support React Native (both iOS & Android) and Node.js (on MacOS and Linux) but we are considering adding support for Cordova/PhoneGap/Ionic as well.
다루는 곳은 udemy나 youtube 등 여러 곳에 많으니 각자 찾아봐서 공부를 시작하면 되겠다.
egghead.io/lessons/node-js-use-realm-object-database-with-node-js
www.udemy.com/topic/realm/?persist_locale&locale=ko_KR