Skip to content

Instantly share code, notes, and snippets.

@ayatmaulana
Created June 17, 2019 01:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ayatmaulana/a82f9f21b58633c5ef81dd470e0821ea to your computer and use it in GitHub Desktop.
Save ayatmaulana/a82f9f21b58633c5ef81dd470e0821ea to your computer and use it in GitHub Desktop.

PouchDB sebagai alternative LocalStorage pada Browser

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

  1. Cross Browser
  2. LightWeight
  3. Easy to learn
  4. Open Source

Browser Support

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)

Perbandingan dengan SQL Concept

SQL Concept PouchDB Concept
Table
Row Document
Column Field
Primary Key field _id
Index View

Api Overview

1. Create Database

https://gist.github.com/b66b283dec3723ff7397fb1711b862ca

2. Delete Database

https://gist.github.com/de2a947a56bc8946c7c5194bbcb87cd4

3. Create a Document

https://gist.github.com/d980af5d4a49cba2fe0f678ff001c374

4. Fetch Document

https://gist.github.com/232fba8e220e40c077ddefea06d290df

5. Delete Document

https://gist.github.com/c541d887b84f7794155de734f940b99e

Plugins

Dengan dukungan komunitas yang lumayan banyak, tak heran jika PouchDB memiliki beberapa plugins yang dapat membantu para developer menangani masalah tertentu seperti

kamu bisa melihat plugins yang tersedia disini https://pouchdb.com/external.html.

Kesimpulan

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.

Referensi

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment