Комментарии 17
Не используйте SQLite просто потому, что это «модно». Продумайте альтернативы: XML, например. За использование SQLite нужно платить тратой ресурсов.Хорошо, тогда вопрос: а когда следует использовать SQLite?
Я во многих проектах использую базу:
1) В играх храню информацию о всех покупках внутриигровых.
2) В бизнес-приложениях храню кэши данных, чтобы с сети не тягать постоянно.
Лучше так не делать? В xml под Android я вообще почти ничего храню, к примеру; только небольшие данные через SharedPreferences.
Этот совет предостерегает от использования SQLite «на все случаи жизни». Ваши сценарии как раз подходят хорошо.
Контрпример: какой-то небольшой справочник. Его проще положить и использовать в виде XML.
Контрпример: какой-то небольшой справочник. Его проще положить и использовать в виде XML.
А чем проще-то?
Ну, например, справочник уже есть и он в XML формате. Стоит вопрос — переводить это все в SQLite или оставить как есть? На платформе Андроид получить данные из XML файла довольно просто.
>Продумайте альтернативы: XML, например. За использование SQLite нужно платить тратой ресурсов.
Если разделить индексный файл и блоб-файл, то в SQLite можно хранить все что угодно, так же как и в файловой системе, практически без оверхеда.
Если разделить индексный файл и блоб-файл, то в SQLite можно хранить все что угодно, так же как и в файловой системе, практически без оверхеда.
В принципе, лучше перед советами почитать документацию сайте SQLite, там все доступно описано, полезные вещи для себя можно приметить.
А потом обязательно почитать, какой используется SQLite на вашей платформе, какие есть дополнительные функции, что поддерживает, а что отключено. Если что, всегда можно посмотреть план запроса.
А потом обязательно почитать, какой используется SQLite на вашей платформе, какие есть дополнительные функции, что поддерживает, а что отключено. Если что, всегда можно посмотреть план запроса.
Позвольте дополнить ваш пост ссылками:
- How do I improve the performance of SQLite? [closed]
Автор замерил производительность различных способов вставки данных. Принципиально ничего нового. Сам процесс тестирования не указан, что снижает уровень достоверности, но все же полезная информация.
- SQLite WAL performance improvement
Один странный тип решил переаллоцировать базу, а затем обновлять записи. Решение — увеличить размер единицы роста/уменьшения базы за один шаг (1MB например), используяsqlite3_file_control()
иSQLITE_FCNTL_CHUNK_SIZE
- Write-Ahead Logging, Enabling Shared-Cache Mode, In-Memory Databases
Без комментариев, просто надо знать.
- Механизм атомарного коммита в SQLite
Ликбез с картинками.
- Что нового в SQLite (2013)?
- Планировщик Запросов Следующего Поколения (NGQP, с версии 3.8.0)
- Частичные индексы (partial indexes, с версии 3.8.0)
- Ввод/вывод с использованием отображения в память (memory-mapped I/O, с версии 3.7.17)
- Multi-threaded Access to an SQLite3 Database
Рассматриваемые случаи: 'Connection sharing', 'Message passing', 'Thread-local connections', 'Connection pooling'. Ничего нового, просто еще раз для каждого случая расписаны важные моменты, которые нужно учитывать.
- Оптимизация выражения LIKE при использовании Sqlite в iOS приложении
Было:dictionary.word LIKE 'абакан%'
Стало:dictionary.word >= 'абакан' AND dictionary.word < 'абаканяяя'
Подходит не всем.
Как быстро добавить много записей (bulk insert)?
Обернуть кучу инсертов в транзакцию.
А никто не подскажет, как правильно организовать работу с серверной базой? То есть я предполагаю, что на устройстве должна быть практически полная копия базы на сервере (чтобы не гонять туда-сюда информацию постоянно). С другой стороны возникает куча всяких проблем с синхронизацией тогда. Вроде как проще постоянно держать всё только на сервере и брать только когда надо и что надо.
www.sqlite.org/cvstrac/wiki?p=SqliteNetwork
но вообще, может стоить использовать что-то боле подходящее.
но вообще, может стоить использовать что-то боле подходящее.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Рекомендации по использованию SQLite на мобильных устройствах