Основные ограничения данных для iOS

Существуют ли какие-либо ограничения в Базовых данных? например; сколько может быть максимум строк в таблице /сущности? Сколько данных может находиться в БД?

В целом, если какой-то документ может описать все виды ограничений, которые существуют внутри Базовых данных (для iOS)?

Обновление: с ответом @.TechZen, мой вопрос подразумевал тот факт, что I /Core Data будет использовать sqlite на сервере. Но чтобы прояснить ситуацию, я намереваюсь использовать sqlite, и когда я говорю об ограничениях Core Data, я косвенно спрашиваю об ограничении sqlite (хранилище базы данных).

Итак, существуют ли какие-либо ограничения, налагаемые основными данными, кроме ограничений sqlite, когда мы говорим о среде iOS?

12 голосов | спросил itsaboutcode 19 PMpTue, 19 Apr 2011 17:06:05 +040006Tuesday 2011, 17:06:05

2 ответа


0

Нет никаких логических ограничений для самих Core Data, кроме тех, которые накладываются ситуативной памятью, дисковым пространством и т. д. Однако, если вы используете хранилище SQLite, вы получаете ограничения по умолчанию для самого SQLite. Если вы пишете для iOS, вы никогда не достигнете этих ограничений.

Действительно, единственное практическое ограничение, с которым вы сталкиваетесь с Core Data, связано с проблемами памяти, вызванными чтение больших блогов , например пытаясь сохранить изображения или аудио в хранилище SQLite. Этого можно избежать, храня капли во внешних файлах.

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

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

ответил TechZen 19 PMpTue, 19 Apr 2011 17:25:17 +040025Tuesday 2011, 17:25:17
0

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

Большие двоичные объекты данных (BLOB)

Если ваше приложение использует большие двоичные объекты (BLOB), такие как изображения и звуковые данные, необходимо позаботиться о том, чтобы минимизировать накладные расходы. То, считается ли объект маленьким или большим, зависит от использования приложения. Общее правило состоит в том, что объекты, размер которых меньше мегабайта, являются маленькими или средними по размеру, а объекты, размер которых превышает мегабайт, являются большими. Некоторые разработчики достигли хорошей производительности с 10 МБ BLOB в базе данных. С другой стороны, если приложение имеет миллионы строк в таблице, даже 128 байтов могут быть CLOB (символьный большой объект), который необходимо нормализовать в отдельную таблицу.

В общем, если вам нужно хранить большие двоичные объекты в постоянном хранилище, используйте хранилище SQLite. Другие хранилища требуют, чтобы весь граф объектов находился в памяти, а записи хранилища были атомарными (см. «Типы и поведение постоянных хранилищ»), что означает, что они неэффективно работают с большими объектами данных. SQLite может масштабироваться для работы с очень большими базами данных. При правильном использовании SQLite обеспечивает хорошую производительность для баз данных объемом до 100 ГБ, а одна строка может содержать до 1 ГБ (хотя, конечно, считывание 1 ГБ данных в память является дорогостоящей операцией, независимо от эффективности хранилища).

BLOB часто представляет атрибут объекта - например, фотография может быть атрибутом объекта Employee. Для маленьких и скромных больших двоичных объектов (и больших двоичных объектов) создайте отдельный объект для данных и создайте отношение «один к одному» вместо атрибута. Например, вы можете создать сущности «Сотрудник» и «Фотография» с взаимно-однозначным отношением между ними, где отношение «Сотрудник» к «Фотография» заменяет атрибут фотографии сотрудника. Этот шаблон максимизирует преимущества повреждения объекта (см. Faulting и Uniquing). Любая данная фотография извлекается только в том случае, если она действительно необходима (если пересекаются отношения).

Однако лучше, если вы сможете хранить большие двоичные объекты как ресурсы в файловой системе и поддерживать ссылки (например, URL-адреса или пути) на эти ресурсы. Затем вы можете загрузить BLOB-объект по мере необходимости.

ответил Shashank Sharma 10 PM00000010000004131 2017, 13:40:41

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132