Salah satu limitasi pada LocalStorage pada browser adalah dia hanyalah sebuah key - value storage yang di simpan dalam browser dan juga hanya bisa menyimpan tipe data String saja, tidak bisa menyimpan data Array maupun Object, sehingga apabila developer ingin menyimpan tipe data tersebut kedalam LocalStorage, developer harus mengubahnya terlebih dahulu kedalam bentuk JSON String, dan tentunya dari hal tersebut menjadikan kita sebagai developer menjadi tidak bebas atau leluasa dalam menyimpan data pada local storage.
Dengan limitasi tersebut tentunya membuat proses development menjadi sedikit terhambat, maka dari itu kita sebagai developer membutuhkan suatu alat yang powerful, yang bisa membuat kita menjadi lebih bebas dalam urusan menyimpan data.
Dari keluh kesah diatas saya akhirnya berkenalan dengan PouchDB 🎉🎉, salah satu jenis database noSQL yang menurut saya keren dan lightweight. fitur yang ditawarkanpun lumayan OK, serta support dari komunitas yang cukup bagus juga.
PouchDB is an open-source JavaScript database inspired by Apache CouchDB that is designed to run well within the browser. PouchDB was created to help web developers build applications that work as well offline as they do online. It enables applications to store data locally while offline, then synchronize it with CouchDB and compatible servers when the application is back online, keeping the user's data in sync no matter where they next login.
(source: https://pouchdb.com)
bukan hanya itu PouchDB dapat di sinkronasikan dengan CouchDB pada sisi server dan cocok untuk diguakan untuk membuat Offline First Application, namun di tulisan kali ini kita tidak akan membahas itu dan hanya fokus pada PouchDB
salah satu good feature yang di tawarkan dari pouchDB adalah
- Cross Browser
- LightWeight
- Easy to learn
- Open Source
PouchDB mendukung hampir semua browser modern yang menjadikan IndexedDB menjadi storage utama dan WebSQL sebagai fallback nya
- Firefox 29+ (Including Firefox OS and Firefox for Android)
- Chrome 30+
- Safari 5+
- Internet Explorer 10+
- Opera 21+
- Android 4.0+
- iOS 7.1+
- Windows Phone 8+
bukan hanya itu PouchDB juga dapat berjalan pada Cordova/Phonegap, NWJS, Electron, Chrome App dan juga Nodejs ekosistem dibawah LevelDB (https://github.com/google/leveldb)
SQL Concept | PouchDB Concept |
---|---|
Table | ❌ |
Row | Document |
Column | Field |
Primary Key | field _id |
Index | View |
https://gist.github.com/b66b283dec3723ff7397fb1711b862ca
https://gist.github.com/de2a947a56bc8946c7c5194bbcb87cd4
https://gist.github.com/d980af5d4a49cba2fe0f678ff001c374
https://gist.github.com/232fba8e220e40c077ddefea06d290df
https://gist.github.com/c541d887b84f7794155de734f940b99e
Dengan dukungan komunitas yang lumayan banyak, tak heran jika PouchDB memiliki beberapa plugins yang dapat membantu para developer menangani masalah tertentu seperti
- PouchDB Authentication - adalah salah satu plugin untuk authenticasi didalam pouchDB
- Peer Pouch - salah satu plugin untuk memudahkan menggunakan PouchDB dengan webRTC
- PouchDB Quick Search - untuk membantu proses Full Text Search pada Pouch
- Crypto Pouch - membantu dalam urusan enkripsi data pada PouchDB
- Pouch Collate
kamu bisa melihat plugins yang tersedia disini https://pouchdb.com/external.html.
PouchDB adalah salah satu database bejalan diatas browser yang menurut saya lumayan powerful karena penggunaan yang mudah, API yang jelas, dan dokumentasi yang sangat lengkap, sehingga sangat cocok digunakan oleh developer dalam membangun sebuah web app, dan tak hanya itu PouchDB bisa di sinkronasi dengan CouchDB yaitu salah satu jenis database yang berjalan di sisi server sehingga cocok digunakan untuk membangun sebuah webapp yang Offline First App.