2015-11-10 7 views
12

Ich implementiere eine App, die Daten an einigen Punkten (nicht zwischen ihnen) mit Realm beharrt. Im Beispiel:Realm: Verwenden Sie ein oder mehrere Realms in einer App (und einem oder mehreren Schemas)

  1. Speichern Sie die vom Benutzer favorisierten Artikel.
  2. (Die App haben einen Chat)
  3. Implementieren eines persistenten Cache für einige Anfragen der App
  4. Speichern aktuellen Suchanfragen/form, um die automatische Vervollständigung

bereitzustellen, um die Chat-Gespräche und den letzten Konstanten zu speichern (Benennen Sie jeden dieser Punkte als ein Modul/Paket)

Jedes Modul/Paket haben einige RealmObjects zu bestehen. Wie soll ich das organisieren? Aus der Sicht des Codes Sauberkeit, Leistung oder was auch immer sollte ich

Option A Pflege: Verwenden Sie einen eindeutigen (Standard) Bereich mit einem eindeutigen Schema:

Verwenden Realm.getInstance(context)

auf den richtigen Zugriff auf RealmObjects in jedem Modul/Paket

Option B: Verwenden mehrerer Bereiche mit dem Standardschema

Geben Sie in RealmConfiguration einen anderen Namen für den Realm an, der in jedem Modul verwendet wird (mit dem Standardschema).

Da die Daten zu verschiedenen Teilen der App gehören, isoliert und nicht miteinander verbunden, verwenden Sie für jedes Modul einen anderen Bereichsnamen.

Option C: Verwenden Sie mehrere Bereiche und Umfang der Modell-Klassen mit einem Schema pro Anwendungspaket Geben Sie einen Namen und ein Schema für jedes isoliertes Paket. Beispiel:

Option D: Andere?

Antwort

9

Wenn Ihre Daten wirklich vollständig getrennt sind, würde ich mit Option C gehen) Es sorgt für eine saubere Trennung. Migrationen sind einfacher zu handhaben und es gibt auch einen sehr kleinen Leistungsgewinn, da Realm von Zeit zu Zeit alle Modellklassen in einem Realm durchlaufen muss.

Aber keine der Optionen ist "falsch".

1

Ja, Sie können, obwohl Sie in der Regel können in auf Realm mehrere Klassen haben würde

Configuring Other Reams zeigt, wie verschiedene Dateipfade angeben, zB:

RealmConfiguration myConfig = new RealmConfiguration.Builder(context) 
    .name("myrealm.realm") 
    .schemaVersion(2) 
    .modules(new MyCustomSchema()) 
    .build(); 

RealmConfiguration otherConfig = new RealmConfiguration.Builder(context) 
    .name("otherrealm.realm") 
    .schemaVersion(5) 
    .modules(new MyOtherSchema()) 
    .build(); 

Realm myRealm = Realm.getInstance(myConfig); 
Realm otherRealm = Realm.getInstance(otherConfig); 

@RealmModule(classes={Abc.class, Pqrs.class, Xyz.class}) 
class MyCustomSchema{} 

@RealmModule(classes={Abc1.class, Pqrs2.class, Xyz2.class}) 
class MyOtherSchema{} 
Verwandte Themen