2015-08-26 14 views
9

Tüm veritabanının yerel olarak saklandığı çevrimdışı yeteneklere sahip bir parse.com tabanlı uygulamaya sahibim (web istemcisinde localStorage ve mobil istemcilerde parse.com yerel veritabanı). Uzak veritabanındaki en son değişikliklerle yerel veritabanını verimli bir şekilde güncellemek için bir tasarım çözümü arıyorum. Aklıma gelen seçenekler şunlardır: koduylaYerel parse.com veritabanını aşamalı olarak nasıl güncellerim?

  1. Günlük Tutma tetikler. Kurulum bulut kodu, her nesne için tetikler (AfterSave, afterDelete) ve nesne kaydedildiğinde veya yok edildiğinde günlük tablosuna bir kayıt ekler. İstemciler güncellemeler için tabloyu sorgulayacak ve sonraki istekler için lastUpdateTime'u hatırlayacaktır.

    Artıları: a) neyin değiştiğini ve kimin değişiklik yaptığını çok ayrıntılı bir özetimiz olabilir. masanın

  2. Günlük Tutma a) olabilir çok fazla girişleri: b) tüm değişiklikleri (örneğin masa çağrı küçük gecikmeler gerçek zamanlı)

    Eksileri içinde bildirimler için Çağrılmaya diğer istemciler için anında kullanılabilir arka plan işi ile. Tüm tabloları updatedAt ile sorgulayan bir arka plan işi kurun, günlük tablosunu doldurur ve sonraki istekler için lastUpdateTime kaydeder.

    Artıları: dergi tablosunda bir) daha az girişleri

    Eksileri:? Değişiklikler öngörülemeyen gecikme (gerçek zamanlı bildirimler için uygun değildir ile kullanılabilir) b) silmektedir izleyemez vardır a) kurulumunu hâlâ başka bir ihtiyaç var tablo günlüğüne) daha az ayrıntı siler izleyebilir veya yumuşak silme c uygulamak için (nesne bir kullanıcı tarafından oluşturulan ve başka bir kullanıcı tarafından silindiğinde, biz) bir nesne kimin oluşturduğu bilmez mesela

  3. yok dergi. Tüm istemciler tüm tabloları updatedAt ile sorgular ve sonraki istekler için lastUpdateTime'u depolar.

    Artıları: a) uygulanması kolay, b) değişiklikler

    Eksileri anında kullanılabilir: gibi siler bir) aynı sorun, b) verimsiz i tüm müşteriler tarafından 20+ tabloları sorgulama inanıyoruz (iyi bir fikir

Ayrıca kullanıcı son etkinliği aracılığıyla bakabilirsiniz bir UI sahip değil (kim ne değişti), bu yüzden tür sayısının doğru 1 yaklaşımı yalın, ama tablonun potansiyel büyüklüğü beni endişelendiriyor

+0

Eğer ayrıştırma pimini kullanıyorsunuz (kurtarmak ve bu verileri sorgulamak için kullanarak sunucudaki istemci için durum bilgisini saklamak ve Modifiye)? https://parse.com/tutorials/using-the-local-datastore –

+0

Herhangi bir kütüphaneyle sınırlı mısınız yoksa yerel javascript'i kullanmaya hazır mısınız? –

+0

@RichardGrant herhangi bir kütüphaneyle sınırlı değil – Dziamid

cevap

1

İstemcinin, mevcut durumdan bağımsız olarak kurtarma yeteneği olması gerekir. Kullanıcı tarafından silinebilecek yerel depolama alanı kullanıyorsanız, bu çok önemlidir. Bu durumda, kurtarılabilir bir duruma ihtiyacınız var. Ek olarak, müşterinin yalnızca gerekli/ilgili işleme alabilmesi gerekir. localStorage çevrimdışı koduyla

  • Günlük Kaydının bozuk durumda bir iyileşme mekanizmasını oluşturma arka uç
  • bir işlem mağaza uygulanması

    1. tetikler veya komple bir geçmişi var ve can böylece olay kaynağı db tipi mekanizmasının kullanılması İstemci için tablo oluşturmak için bunu kullanın.Sonuç olarak

    - Kod Tetikleyiciler ile Modifiye Günlüğü Kaydı