Saya mengembangkan aplikasi web seluler (untuk iPhone & Android) dengan basis data lokal (menggunakan penyimpanan HTML5) sehingga aplikasi saya masih dapat digunakan ketika pengguna sedang offline.
Ini berfungsi dengan baik, tetapi saya ingin menyimpan data lokal di server. Jadi saya perlu menyinkronkan DB lokal dengan DB di server. Sinkronisasi hanya bisa satu arah, tetapi di masa depan, saya ingin menyinkronkannya dengan cara yang sama (server <-> DB lokal).
Permintaan ini terlihat sangat umum (atau akan menjadi umum di masa depan untuk aplikasi web seluler), tetapi saya tidak dapat menemukan perpustakaan melakukan hal itu.
Saya tahu Google melakukan itu di aplikasi web seluler mereka (mis. Gmail), dan saya menemukan proyek WSPL proyek google tetapi tanpa sumber untuk diunduh.
Jika saya tidak dapat menemukan solusi, saya akan membuat perpustakaan untuk melakukan itu, karena satu cara sinkronisasi tidak terlihat sulit, tetapi saya ingin tahu apakah ada solusi lain.
Jawaban:
https://github.com/orbitaloop/WebSqlSync
http://quickconnect.pbworks.com/Using-Enterprise-Synchronization
Untuk menggunakan lib ini, Anda perlu menggunakan DataAccessObject dari framework untuk mengakses DB Anda. Ia bekerja dengan menyimpan semua permintaan SQL yang diterapkan ke DB (kecuali pilih tentu saja), dan mengirimkannya ke server. Sangat bagus untuk mengelola penghapusan, tetapi agak berat jika Anda memiliki banyak pembaruan, dan server perlu menggunakan bahasa SQL yang sama ...
http://www.quickconnectfamily.org/qcdbsync/ (Saya pikir ini menyimpan juga sejarah semua permintaan SQL)
https://github.com/zefhemel/persistencejs
"persistence.js adalah pustaka mapper-relasional Javascript hubungan-asinkron yang asinkron. Anda dapat menggunakannya di browser, juga di server (dan Anda dapat berbagi model data di antara mereka)."
Mereka memiliki modul sinkronisasi DB: DOC of persistence.synch.js
(berfungsi dengan HTML5 DB SQLite atau Google Gears di klien, dan MySQL di server)
http://impel.simulacre.org/api/Impel.inTouch
http://www.sencha.com/products/io/
sumber
Saya telah mengembangkan solusi sinkronisasi umum yang disebut WebSqlSync .
Itu tidak tergantung pada kerangka apa pun. Ini tersedia di sini: https://github.com/orbitaloop/WebSqlSync
Ekstrak file README:
WebSqlSync
Secara otomatis menyinkronkan database WebSql lokal (SQLite di navigator) ke server. (Sinkronisasi 2 arah: klien <-> server)
Sangat mudah diintegrasikan ke aplikasi Anda yang sudah ada dan sangat mudah digunakan (2 fungsi untuk dipanggil: initSync dan syncNow)
Pemakaian
Inisialisasi
Anda perlu menginisialisasi lib (di setiap startup misalnya).
Secara otomatis akan membuat 2 tabel (jika belum ada, satu untuk menyimpan semua elemen baru atau yang dimodifikasi (tabel new_elem) dan satu untuk menyimpan tanggal sinkronisasi terakhir (tabel sync_info). Itu juga akan membuat pemicu SQLite di untuk menonton INSERT atau UPDATE pada tabel yang ingin Anda sinkronkan (untuk secara otomatis memasukkan elemen yang dimodifikasi di tabel new_elem):
Di mana TABLES_TO_SYNC adalah daftar tabel yang ingin Anda sinkronkan dengan server, mis:
Sinkronkan
Untuk memulai sinkronisasi, Anda perlu memanggil fungsi syncNow. Anda dapat memanggilnya setiap X detik, atau setelah beberapa perubahan misalnya:
Dan itu semua yang perlu Anda lakukan pada klien. Di sisi server, Anda perlu kode solusi Anda sendiri (tetapi tidak rumit). Dan ada beberapa contoh diPHP & Java. Sekali lagi, kontribusi diterima.
sumber