SharkORM процесс синхронизации больших данных
Моя компания разрабатывает приложение для приема заказов iOS, которое должно синхронизировать данные с облачным API. Данные являются реляционными, и мы изо всех сил пытаемся найти решение, которое использует ORM, способный быстро синхронизироваться. Это занимает слишком много времени, чтобы просмотреть циклы загрузки данных, создать / извлечь модели и построить отношения. Одна запись заказа может иметь отношения к строке заказа, клиенту, отгрузке, продукту и другим объектам, и процесс синхронизации должен извлекать / создавать все эти связанные объекты для каждой новой / обновленной записи, и это очень медленно.
У нас уже есть Java-версия приложения, которая использует ActiveJDBC в качестве ORM. Мы можем вставлять данные непосредственно в базовую базу данных SQLite, а ActiveJDBC способен использовать идентификаторы и внешние ключи, которые уже существуют в нашей базе данных API. Это позволяет нам вставлять загруженные данные намного быстрее, чем создавать объекты модели.
Насколько я могу судить, SharkORM не позволяет нам использовать альтернативный столбец базы данных для идентификаторов и внешних ключей. Есть ли способ сделать что-то подобное, используя SharkORM (или с другим iOS ORM)?
Спасибо за любую помощь.
1 ответ
К сожалению, столбец Id в настоящее время исправлен и не может быть изменен.
Вы можете использовать необработанную функцию execute для предоставления блока SQL, но для этого потребуется немало усилий.
Чтобы сделать вещи быстрее, вы можете попробовать это:
- Пакетные транзакции
- Отключить модель событий (делает вещи намного.... намного быстрее)
- Временно удалите индексы
- Выполнить прагму, отключив синхронные функции (очень быстро, но потенциально опасно)
Кроме того, вы можете просто проигнорировать столбец Id и создать свой собственный и проиндексировать его; разница в том, как он будет работать, очень мала.