Сколько можно хранить SQLite на iPhone? - PullRequest
8 голосов
/ 18 ноября 2009

У меня есть идея для веб-приложения для iPhone, но мне неизвестно, сколько данных можно хранить в базе данных SQLite мобильного Safari. Я пытался искать в документах Apple, но ничего не нашел:

Руководство по программированию клиентского хранилища и автономных приложений Safari: использование базы данных JavaScript

Ответы [ 12 ]

11 голосов
/ 04 марта 2010

Большинство из этих ответов совершенно неверны. Safari не позволит вам создавать базы данных SQLite размером более 50 МБ (или расширять существующие базы данных сверх этого размера).

Это ограничение, наложенное Safari - как уже отмечали другие люди, сам SQLite поддерживает гораздо большие базы данных, которые вы можете использовать из собственных приложений. Но веб-приложения ограничены до 50 МБ.

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

2 голосов
/ 18 августа 2011

Есть много людей, которые ответили, которые явно никогда не проверяли это. Я использую последнюю версию iOS (4.3.3) и настроил систему для создания нескольких баз данных и хранения их под 45 МБ, но обнаружил, что ограничение в 50 МБ предназначено для сайта в целом. Таким образом, независимо от того, сколько вы разделите данные, они все равно ограничиваются совокупным ограничением в 50 МБ.

2 голосов
/ 18 ноября 2009

Как говорят другие авторы. Вы ограничены только дисковым пространством на устройстве.

Вы также должны учитывать ваш след памяти. На iphone имеется ограниченный объем памяти, и в целом он достаточно мал, поэтому количество данных / объектов, которые вы можете иметь в памяти, - еще одно потенциальное ограничение для вашего приложения.

1 голос
/ 20 сентября 2013

Ограничение размера базы данных на мобильном телефоне safari составляет 50 МБ на сайт, а не на базу данных. Я проверил это. даже если у вас есть лишняя пустая база данных, вы не можете добавить ее, если общий размер всех баз данных на одном сайте составляет 50 МБ

Стоит также отметить, что символы сохраняются в виде двойных байтов в websql, то есть 2 миллиона символов будут 4 мегабайта, а не 2 мегабайта на диске.

0 голосов
/ 09 февраля 2017

Максимальный размер базы данных

Пожалуйста, обратитесь Официальный сайт Sqlite

Каждая база данных состоит из одной или нескольких «страниц». В пределах одной базы данных каждая страница имеет одинаковый размер, но разные базы данных могут иметь размеры страниц, равные двум, от 512 до 65536 включительно. Максимальный размер файла базы данных составляет 2147483646 страниц. При максимальном размере страницы 65536 байт это означает, что максимальный размер базы данных составляет приблизительно 1,4e + 14 байт (140 терабайт, или 128 тибибайт, или 140 000 гигабайт, или 128 000 гибибайт).

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

0 голосов
/ 26 февраля 2013

Внимание: мой iphone взломан! Но я не подозреваю, что это что-то меняет.



Ограничение в 50 МБ больше не является правильным.



На моем iPhone 4S с iOS 6.1 у меня есть база данных размером 58,66 МБ (448496 записей) для моего веб-клипа (веб-сайт, закрепленный на трамплине).

Никаких специальных приемов, только стандартное использование HTML5.

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

Давибе проделал некоторую работу по увеличению лимита до 1 Гб с помощью своего плагина PhoneGap. https://github.com/davibe/Phonegap-SQLitePlugin

Плагин вызывает собственный API sqlite3 с оболочкой на стороне Javascript.
Соответствующий код, извлеченный из sqlite.js:

update origins set quota = '999999999999' where origin = 'file__0';   
"update databases set estimatedSize = '999999999999' where name = '" + dbName + "';'";
0 голосов
/ 19 ноября 2009

Ограничение хранилища по умолчанию на iPhone составляет 5 МБ

.
0 голосов
/ 18 ноября 2009

Пределы в SQLite

«Пределы» в контексте данной статьи означают размеры или количества, которые нельзя превышать. Нас интересуют такие вещи, как максимальное количество байтов в BLOB или максимальное количество столбцов в таблице.

SQLite изначально разрабатывался с политикой избегания произвольных ограничений. Конечно, у каждой программы, работающей на машине с конечной памятью и дисковым пространством, есть определенные ограничения. Но в SQLite эти ограничения не были четко определены. Политика заключалась в том, что если он помещается в память и вы можете считать его с помощью 32-разрядного целого числа, то он должен работать.

К сожалению, политика без ограничений создает проблемы. Поскольку верхние границы не были четко определены, они не тестировались, и часто возникали ошибки (включая возможные эксплойты безопасности) при доведении SQLite до крайностей. По этой причине более новые версии SQLite имеют четко определенные ограничения, и эти ограничения тестируются как часть набора тестов. Начиная с версии 3.6.19 (все статистические данные в отчете соответствуют этой версии SQLite), библиотека SQLite состоит из приблизительно 65,7 KSLOC кода C. (KSLOC означает тысячи «строк исходного кода» или, другими словами, строк кода, исключая пустые строки и комментарии.) Для сравнения, у проекта в 690 раз больше тестового кода и тестовых сценариев - 45409,7 KSLOC.

0 голосов
/ 18 ноября 2009

Скорее всего, 32 терабайта ... что значительно превышает доступное дисковое пространство.

Я достиг этого числа, умножив максимальный размер страницы на максимальное количество страниц, указанное в нижней части Страница ограничений SQLite .

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