Почему основные данные так сложно предварительно заполнить? - PullRequest
11 голосов
/ 02 августа 2010

Это скорее философский вопрос о дизайнерских решениях Apple, чем вопрос о базовых данных.

Почему в мире полезно иметь модельную систему, которую так сложно предварительно заселить? Каковы преимущества? Я знаю, что ваша программа может сгенерировать файл sqlite и отредактировать его вручную, но, насколько я могу судить, вы не сможете этого сделать, если у вас вообще есть какие-либо отношения.

Я сравниваю это с парадигмой MVC, используемой в рельсах, которая, кажется, имеет больше смысла. Модели в рельсах обеспечивают уровень абстракции, аналогичный базовым данным (из того, что я могу сказать), но они также позволяют вам вводить все, что вы хотите, в свою базу данных вручную (или через скрипт).

Проблема, с которой я столкнулся с Core Data, заключается в том, что, поскольку rails, кажется, доказывает (мне), что вы можете получить отличную абстракцию модели из базы данных, сохранив при этом несколько удобных методов для ее предварительного заполнения, какие возможные преимущества делает удаление этой возможности ? Являются ли Core Data более эффективными? Является ли трудность, связанная с предпопуляцией, просто побочным эффектом других вариантов дизайна, и если да, то почему предпопуляция не была принята во внимание?

(Отказ от ответственности, что я искренне заинтересован в обосновании этих выборов, и, хотя мой пост мог бы предложить это, я на самом деле не ищу дебаты "Модели в Rails против базовых данных".)

1 Ответ

11 голосов
/ 02 августа 2010

Поскольку базовые данные НЕ база данных.Это граф объектов, который сохраняется на диске, и один из этих форматов сохранения - это база данных.Это означает, что вам нужно смотреть на это с обратной точки зрения.

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

Мое мнение о предварительном заполнении заключается в том, что Core Data спроектирована как система с замкнутым циклом.Вы можете использовать Core Data, чтобы легко заполнить файл данных.Заполнить файл Core Data SQLite не сложнее, чем написать скрипт для перевода данных Oracle в формат CSV.

Если вы остаетесь в Какао и Core Data, то это совсем не сложно.Вы пишете приложение командной строки или приложение для редактирования и импортируете данные.От PoV ​​программиста Какао, это тривиальная задача, которая занимает всего несколько минут.

...