Ввод данных sqlite в CoreData - PullRequest
       2

Ввод данных sqlite в CoreData

0 голосов
/ 05 декабря 2011

В нашем приложении мы загружаем около 48 файлов sqlite размером около 300 КБ и сохраняем их на диск. Когда пользователь входит в модуль, подмножество данных из любого файла читается и отображается на основе некоторых условий. Когда пользователь прокручивает модуль, когда просмотр прокрутки прекращается, мы определяем позицию, в которой он остановился, и, соответственно, запрашиваем соответствующий файл sqlite, чтобы получить данные и отобразить их на экране. Это займет около 2 секунд, чтобы показать данные пользователю. Мы хотим оптимизировать это, и я прочитал, что запрос CoreData вместо файлов sqlite может сделать это быстрее.

Итак, вопрос в том, должны ли мы помещать данные из каждого sqlite-файла в CoreData, а затем всегда запрашивать CoreData. Я обеспокоен тем, что было бы слишком много данных, которые нужно было бы вставить таким образом, поскольку у нас есть 48 файлов. Другой подход заключается в загрузке в CoreData только подмножества данных, которые должны быть загружены, а не во все файлы. Но это будет означать, что перед отображением данных мы определяем, были ли они уже получены и доступны в CoreData, иначе мы запрашиваем sqlite. Любые предложения относительно того, что было бы лучше пойти?

1 Ответ

1 голос
/ 05 декабря 2011

Учитывая количество предоставленной вами информации, невозможно реально понять, будут ли основные данные иметь смысл для вашего приложения. Вам нужно было бы предоставить достаточное количество информации для того, чтобы кто-то другой имел действительно хорошо осведомленное мнение по этому вопросу, и такое решение, как это, важно.

Кстати, у вас, похоже, сложилось впечатление, что все данные должны быть помещены в гигантский файл базы данных в Core Data - это не так. Вы можете иметь много файлов управляемой объектной модели (это файлы постоянных баз данных конечного продукта для базовых данных с именем .xcdatamodeld) и открывать их выборочно.

Лучше всего провести исследование, попытаться найти принципиальные различия между базовыми данными и использованием SQLite напрямую. У них обоих есть свое место. Базовые данные хороши в правильных обстоятельствах - это не реляционная база данных, это граф объектов и диспетчер персистентности, и это имеет важные последствия. Базовые данные были оптимизированы до Луны и обратно, поэтому, если вы используете их в правильных условиях, это здорово - хорошая производительность и делает тяжелую работу, чтобы вам не пришлось. Но в других обстоятельствах прямое использование SQLite было бы лучшим вариантом. См., Например, это сообщение в блоге о ком-то, кто переключился с Core Data на SQLite.

Также ознакомьтесь с этой отличной статьей о различиях. И, конечно, прочитайте собственные руководства Apple и страницу википедии .

Нам трудно ответить на вопрос, который вы задали, но если у вас есть вопросы по определенным, более конкретным аспектам базовых данных, опубликуйте несколько новых вопросов - на такие вопросы легче ответить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...