Новая сущность Core Data идентична существующей: отдельная сущность или другое решение? - PullRequest
2 голосов
/ 20 июля 2010

Обзор: я разрабатываю приложение для управления рестораном, и у меня есть объект под названием Order, в котором есть элементы. Поскольку ресторан может работать в течение многих лет, имея тысячи выполненных «заказов» и в интересах упрощения работы моего приложения в сети и обеспечения быстрой поддержки базы данных, я хочу представить концепцию ClosedOrder, которая является Заказ был оплачен, по сути.

У меня есть несколько вариантов сделать это: я мог бы добавить атрибут isClosed к моей сущности Order и выполнять все запросы на выборку для "открытых" ордеров с помощью предиката, но это оставляет проблему с большим количеством записей БД, через которую нужно проходить каждый раз, когда нужна выборка, что часто происходит с сущностью Order из-за рабочего процесса моего приложения. Если я правильно понимаю, создание субсубъекта 'ClosedOrder' также будет иметь ту же проблему, поскольку Core Data хранит все субэлементы в одной таблице в базе данных.

В этом случае глупо создавать совершенно отдельную сущность? Или это именно то, что мне нужно сделать? Я извиняюсь за общее отсутствие знаний о производительности базы данных. Core Data прекрасен тем, что он абстрагируется от необходимости узнавать об этом, но в то же время не может сделать это неважным, особенно в случае, когда производительность может серьезно ухудшиться, если мои пользователи слишком сильно его вытолкнут.

1 Ответ

2 голосов
/ 21 июля 2010

Если вы используете тип хранилища SQLite и атрибут «isClosed» имеет значение «Indexed» (настройка на панели редактора сущностей), вы можете иметь сотни тысяч заказов и при этом иметь хорошее и быстрое время выборки при фильтрации только для "isClosed == YES".

Создание отдельного объекта на самом деле не принесет вам значительных результатов, но будет затруднять поддержание, когда все меняется (например, два шага миграции по цене одного). Вы все еще храните все эти элементы, и SQLite - это компетентная библиотека БД, если она правильно настроена. Используйте здесь индексированный атрибут, затем сгенерируйте некоторые тестовые данные, а затем измерьте производительность. Я уверен, что вы будете удовлетворены.

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