2017-05-10 3 views
1

Meine Firma entwickelt eine iOS-App für die Auftragsannahme, die Daten mit einer Cloud-basierten API synchronisieren muss. Die Daten sind relational und wir haben Schwierigkeiten, eine Lösung zu finden, die ein ORM verwendet, das schnell synchronisieren kann. Es dauert zu lange, um die Download-Daten zu durchlaufen, Modelle zu erstellen/abrufen und Beziehungen aufzubauen. Ein einzelner Bestelldatensatz kann Beziehungen zu Bestellposten, Kunden, Lieferungen, Produkten und anderen Entitäten enthalten, und der Synchronisierungsprozess muss alle diese verbundenen Entitäten für jeden neuen/aktualisierten Datensatz abrufen/erstellen und er ist sehr langsam.SharkORM großer Datensynchronisationsprozess

Wir haben bereits eine Java-Version der Anwendung, die ActiveJDBC als ORM verwendet. Wir können Daten direkt in die zugrunde liegende SQLite-Datenbank einfügen, und ActiveJDBC kann die IDs und Fremdschlüssel verwenden, die bereits in unserer API-Datenbank vorhanden sind. Dies ermöglicht uns, die heruntergeladenen Daten viel schneller als das Erstellen von Modellobjekten einzufügen.

Soweit ich das sagen kann, SharkORM erlaubt uns nicht, eine alternative Datenbankspalte für IDs und Fremdschlüssel zu verwenden. Gibt es eine Möglichkeit etwas Ähnliches mit SharkORM (oder mit einem anderen iOS ORM) zu machen?

Vielen Dank für Ihre Hilfe.

Antwort

1

Leider ist die ID-Spalte derzeit nicht festgelegt und kann nicht geändert werden.

Sie können die Raw-Execute-Funktion verwenden, um einen SQL-Block zu liefern, aber es wird eine ganze Menge Aufwand sein, dies zu erreichen.

, um die Dinge schneller gehen, könnten Sie dies versuchen:

  1. Batch Transaktionen
  2. das Ereignismodell deaktivieren (macht viele Dinge .... viel schneller)
  3. die Indizes löschen vorübergehend
  4. Führen Sie eine Pragma, die synchronen Funktionen aus (sehr schnell, aber potenziell gefährlich)

auch Drehen Sie kann ignorieren Sie einfach die Id Spalte und erstellen Sie Ihre eigenen und indizieren es, es gibt sehr wenig Unterschied in der zugrunde liegenden Art und Weise es würde funktionieren.

+0

Sie sagen, dass es in SharkORM eine rohe Ausführungsfunktion gibt? Wie gehst du damit um? Ich sehe es nicht in der Dokumentation erwähnt, aber vielleicht übersehe ich es. Vielen Dank. –