Cara menyinkronkan database web HTML5 offline dengan database terpusat

Saya ingin dapat melakukan hal berikut di aplikasi web HTML5 (iPad):

  • mengunggah data ke database online (yang mungkin berukuran ‹50Mb jika saya membuat database online dalam sesuatu seperti SQLite)
  • mengekstrak subset atau salinan lengkap data ke database web offline
  • (perjalanan keluar dari jangkauan jaringan 3G)
  • melakukan banyak perhitungan tipe analitik pada data yang diunduh
  • simpan parameter untuk perhitungan saya ke database web offline
  • ulangi, simpan kumpulan parameter yang berbeda untuk beberapa sesi perhitungan tipe analitik offline yang berbeda selama jangka waktu yang lama
  • (kembali ke area dengan jangkauan jaringan 3G)
  • menyinkronkan parameter yang disimpan dari database web offline saya ke database online pusat

Aku merasa nyaman dengan setiap langkah hingga langkah terakhir...

Saya mencoba mencari informasi tentang apakah mungkin untuk menyinkronkan database web offline dengan database pusat, tetapi tidak dapat menemukan apa pun yang membahas topik tersebut. Apakah mungkin melakukan ini? Jika demikian, bisakah Anda memberikan tautan ke informasi tentangnya, ATAU jelaskan cara kerjanya dengan cukup detail untuk menerapkannya pada aplikasi spesifik saya?

Terima kasih sebelumnya


person monch1962    schedule 20.12.2010    source sumber


Jawaban (4)


Saya belum bekerja secara khusus dengan database lokal HTML5, namun saya telah bekerja dengan perangkat seluler yang memerlukan pembaruan offline dan sinkronisasi ulang ke penyimpanan data pusat.

Apakah dataset dibuat di server atau di klien offline, saya pastikan kunci utamanya adalah UUID. Saya juga memastikan untuk memberi stempel waktu pada catatan setiap kali diperbarui.

Saya juga tidak mengetahui kapan terakhir kali klien offline disinkronkan.

Jadi, ketika menyinkronkan ulang ke database pusat, pertama-tama saya menanyakan klien offline untuk catatan yang telah berubah sejak sinkronisasi terakhir. Saya kemudian menanyakan database pusat untuk menentukan apakah ada catatan yang berubah sejak sinkronisasi terakhir.

Jika belum berubah di database pusat, saya memperbaruinya dengan data dari klien offline. Jika catatan di server telah berubah sejak sinkronisasi terakhir, saya memperbaruinya ke klien.

Jika UUID tidak ada di server pusat tetapi ada di klien offline, saya masukkan, dan sebaliknya.

Untuk membersihkan catatan, saya membuat kolom "pembersihan", dan ketika kueri sysnc dijalankan, saya menghapus catatan dari setiap database (atau menandainya sebagai tidak aktif, bergantung pada persyaratan aplikasi).

Jika kedua catatan telah berubah sejak pembaruan terakhir, saya harus mengandalkan masukan pengguna untuk merekonsiliasi atau aturan yang menentukan catatan mana yang "menang".

Saya biasanya tidak mempercayai fungsi impor basis data bawaan, kecuali saya mengimpor ke basis data yang benar-benar kosong.

person CurtisMO    schedule 11.04.2011

Langkah:

  1. Simpan daftar perubahan di database lokal.
  2. Saat terhubung ke database jarak jauh, periksa perubahan apa pun sejak sinkronisasi terakhir di jarak jauh.
  3. Jika perubahan di sisi jarak jauh bertentangan dengan perubahan lokal, beri tahu pengguna tentang apa yang harus dilakukan.
  4. For all other changes, proceed with sync:
    1. download all online changes which did not change locally.
    2. unggah semua perubahan lokal yang tidak berubah dari jarak jauh.

Cara ini sebenarnya bisa bekerja pada kombinasi database apa pun, asalkan ada pengonversi data di salah satu sisinya.

person syockit    schedule 12.03.2011

Menurut saya, dari beberapa situs yang saya kunjungi, (selama Anda menggunakan SQLite untuk Server db Anda) hal itu seharusnya bisa dilakukan.

Basis data web HTML5 juga menggunakan SQLite (walaupun tidak semua browser mendukungnya dan W3C tampaknya telah menghentikan dukungannya)

so...

Jika Anda mengekspor data menggunakan perintah .dump dan kemudian mengimpor data ke database web menggunakan sintaks $sqlite mydb.db ‹ mydump.sql Anda seharusnya dapat melakukan ini dengan sedikit gelisah dengan backend php atau Java?

Kemudian ketika Anda ingin menyinkronkan data "offline" ke server Anda, lakukan saja dump sebaliknya dari database web ke file dump.sql dan impor ke database server

Situs ini menjelaskan mengekspor ke dan mengimpor dari dump SQLite

SUMBER: membuang dan memulihkan DB SQLite

person ScottC    schedule 28.01.2011
comment
jika Anda mencoba ini dan berhasil atau jika Anda menemukan solusi lain tolong beri tahu saya, saya baru tahu tentang fitur database web HTML5 ini melalui posting Anda dan saya sangat tertarik untuk mencobanya dalam proyek saya sendiri suatu hari nanti - person ScottC; 28.01.2011

HTML5 mendukung browser db SQLite, saya sudah mencoba di Mozilla dan chrome, dan berfungsi dengan baik. Saya juga memiliki persyaratan di mana saya memiliki beberapa formulir offline, pengguna memasukkan data dan mengklik simpan, itu disimpan di db browser lokal, dan kemudian ketika pengguna melakukan sinkronisasi dengan server atau online, dia dapat mengklik tombol sinkronisasi yang sebenarnya menyinkronkan data dari browser db sumber data lainnya.

person Ankur Singhal    schedule 11.04.2014