SQLite или Core Data для линейной, но большой базы данных? - PullRequest
0 голосов
/ 30 августа 2011

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

Будут ли SQLite или CoreData работать лучше для этого подхода? Или не понадобится, так как это всего лишь одно поле данных?

Заранее спасибо.

Редактировать: больше информации: Все записи являются статическими и не будут редактироваться вообще

Ответы [ 3 ]

0 голосов
/ 30 августа 2011

Я думаю, что использование FMDB при поддержке SQLLite может быть лучшим решением для этого. В Базовых данных каждая строка будет представлена ​​одним экземпляром объекта, который, в свою очередь, будет содержать строку ... это много оберток и косвенных результатов.

Однако лучшей идеей было бы проверить это - так как это такая простая модель, объединяющая базу данных SQLLite и базу данных CoreData, а затем заполнение каждого из 200 тыс. Элементов и поиск времени по ним будет лучшим выбором. Возможно, более совершенное кэширование в CoreData может помочь для чего-то вроде строки прогрессивного поиска, где пользовательский ввод затем удаляет символы.

Не забудьте пометить строку как проиндексированную! Это поможет в любом случае.

0 голосов
/ 30 августа 2011

Возможно, более важным, чем выбор хранилища данных, является выбор алгоритма автозаполнения и решения, касающиеся структурирования данных в хранилище данных.

Вы не хотите, чтобы «включение» алгоритма приводило к проглатыванию нажатий клавиш пользователем или, по крайней мере, некоторых из них. Вы когда-нибудь вводили строку поиска в Google только для того, чтобы обнаружить, что первые несколько введенных вами символов отсутствуют в текстовом поле?

Возможно, вы захотите отложить совпадение строк до тех пор, пока не будет набрано не менее трех символов, и / или вы не захотите хранить свои данные в денормализованном виде, который может быть более пригоден для автозаполнения.

Например, ваш PK или ключ может быть «alt», и эта строка с разделителями может быть значением для этого ключа:

          altar,alter,alteration,altercation,alternate,alternation,alternator,although,
          altimeter,altitude,alto,altogether,altruism,altruist

вместо того, чтобы каждое из этих слов занимало свой собственный ряд.

0 голосов
/ 30 августа 2011

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

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