Декабрь 19, 2019 Просмотры 7 просмотров

Подходящее применение для SQLite

SQLite отличается от большинства других движков баз SQL тем, что в основу его конструкции положена простота:

  • Простота администрирования
  • Простота работы
  • Простота внедрения в большую программу
  • Простота обслуживания и настройки

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

Простота движка баз данных может быть силой или слабостью в зависимости от того, что вы собираетесь делать. Ради достижения простоты SQLite жертвует другими характеристиками, которые некоторые люди находят полезными. Жертвует полным параллелизмом, подробным контролем доступа, богатым набором функций, хранимыми процедурами, сложными аспектами языка SQL, XML и/или Java расширениями, тера- и пента-байтной расширяемостью и так далее. Если вам нужны некоторые из этих особенностей и не беспокоят связанные с ними сложности, то, наверное, SQLite не для вас. SQLite не предназначался быть промышленным движком баз данных. Он не собирается конкурировать с Oracle или PostgreSQL.

Основное правило для определения, когда следует использовать SQLite, есть следующее: Используйте SQLite, когда простота администрирования, разработки и сопровождения более важны, чем многочисленные сложные фичи, предоставляемые промышленными движками баз данных. Ситуация, когда простота есть лучший выбор, более распространена, чем многие представляют.

Ситуации, в которых SQLite работает хорошо

  • Вебсайты

    Обычно SQLite великолепно работает как движок баз для вебсайтов с малым и средним трафиком (каковыми, видимо, являются 99.9% всех вебсайтов). Величина веб-трафика, который может обслуживать SQLite, конечно же, зависит от того, как активно вебсайт пользует свою базу данных. Но, как правило, любой сайт с посещаемостью меньшей, чем 100000 хитов в день, может нормально работать с SQLite. 100000 хитов в день - это умеренная оценка, а не жесткий верхний предел. SQLite может быть продемонстрирован в работе с 10 такими объемами трафика.

  • Встроенные устройства и приложения

    Так как база данных SQLite мало или не требует администрирования, SQLite является хорошим выбором для устройств или сервисов, которые должны работать без сопровождения и техподдержки. SQLite хорошо приспособлен для использования в сотовых телефонах, КПК, игровых приставках и/или приборах. Он также хорошо работает в качестве базы данных, встроенной в пользовательские приложения.

  • Прикладной формат файла

    SQLite может с большим успехом использоваться как дисковый формат файла для настольных приложений, таких как средства финансового анализа, пакеты CAD, программы для ведения учета и так далее. Традиционная операция File/Open осуществляется как sqlite3_open() а выполнение "BEGIN TRANSACTION" предоставляет исключительный доступ к контенту. Сохранение файла осуществляется как "COMMIT" после "BEGIN TRANSACTION". Использование транзакций гарантирует, что изменения прикладного файла являются атомарными, надежными, изолированными и непротиворечивыми.

    В базу данных могут быть добавлены временные триггеры на запись любого изменения во (временной) таблице логов отмены/повтора. Затем эти изменения могут быть отыграны назад, когда пользователь жмет кнопки "Отмена" и "Повтор". Использование этой техники позволяет удивительно малым кодом реализовать поддержку неограниченного числа отмен/повторов.

  • Замена для специальных файлов на диске

    Многие программы, использующие fopen(), fread(), и fwrite() создают и управляют файлами данных в доморощенных форматах. SQLite в высшей степени хорошо работает как замена этих специальных файлов данных.

  • Внутренние и временные базы данных

    Для программ, которые должны разными способами просеивать и сортировать серии данных, чаще легче и быстрее загрузить данные в базу SQLite в памяти и использовать запросы с объединениями и инструкциями "ORDER BY" для извлечения данных в нужном виде и сортировки. Это лучше, чем вручную в коде реализовывать те же самые операции. Использование в таких случаях внутренней базы SQL, дает программе дополнительную гибкость, так как новый столбец или индекс могут быть добавлены без переписывания каждого запроса.

  • Средство анализа набора данных из командной строки

    Опытные пользователи SQL могут использовать программу sqlite из командной строки для анализа разнообразных наборов данных. Сырые данные могут быть импортированы из файлов CSV, а затем рассортированы в несметное множество итоговых отчетов. Возможное использование включает анализ логов вебсайтов, анализ спортивной статистики, компиляцию метрик программирования и анализ экспериментальных данных.

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

  • Замещение промышленных баз данных в ходе демонстрации или тестирования

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

  • Учебная база данных

    Так как SQLite прост в инсталляции и использовании (инсталляция тривиальна: достаточно скопировать исполняемый sqlite или sqlite.exe на целевую машину и запустить его), он является хорошим движком базы данных для изучения SQL. Студенты могут создать столько баз, сколько хотят, и могут отослать на e-mail инструктора для комментирования или оценки. Для более продвинутых студентов, которые интересуются реализацией РСУБД, модульный и хорошо комментированный код SQLite может послужить хорошей основой. Это не означает, что SQLite - точная модель других движков баз данных, но в дальнейшем студент, который интересуется устройством SQLite, сможет быстрее понять принципы, работающие в других системах.

  • Экспериментальные расширения языка SQL

    Простой модульный дизайн SQLite делает его хорошей платформой для проектирования новых экспериментальных аспектов или идей языка баз данных.

Ситуации, в которых другие РСУБД могут работать лучше

  • Клиент-серверные приложения

    Если вы имеете много клиентских программ, обращающихся по сети к общей базе данных, вам следует рассмотреть использование клиент-серверного движка вместо SQLite. SQLite будет работать через сетевую файловую систему, но в силу задержки доступа через сеть его производительность может быть невысокой. Кроме того, многие сетевые файловые системы содержат баги в реализации логики захвата файла (как в Unix-е, так и в Windows-е). Если захват файла не работает должным образом для двух или более клиентских программ, модифицирующих одну и ту же часть одной и той же базы данных в одно и то же время, база данных может быть испорчена. Поскольку эта проблема - результат багов в реализации фундаментных файловых систем, SQLite ничего не может с ней поделать.

    Хороший совет: избегайте использовать SQLite в случаях, когда к одной и той же базе данных одновременно будут обращаться по сети много компьютеров.

  • Высокоуровневые вебсайты

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

  • Очень большие наборы данных

    Когда вы стартуете транзакцию в SQLite (это происходит автоматически перед любой операцией записи, даже если она не вложена в "BEGIN...COMMIT"), движок должен распределить побитовое отображение недействительных страниц в дисковом файле, чтобы помочь себе управлять журналом повторных прогонов. SQLite требует 256 байт RAM на каждый 1MB базы данных. Для маленьких баз количество памяти не проблемно, но когда база разрастается на много гигабайт, оперативной памяти может потребоваться довольно много. Если вы должны хранить и модифицировать свыше нескольких дюжин GB данных, вы должны рассмотреть использование других движков баз данных.

  • Высокий параллелизм

    Для чтения/записи SQLite захватывает весь файл базы данных. Это значит, что если какой-то процесс читает какую-то часть базы, все другие процессы не могут писать в какую-либо часть базы. Аналогично, если какой-то один процесс пишет в базу, все другие процессы не могут читать из какой-либо части базы. Для многих ситуаций это не проблематично. Всякое приложение, использующее собственную базу данных, работает быстро, и блокировка длится не дольше нескольких дюжин миллисекунд. Но некоторые приложения нуждаются в большем параллелизме, и для них следует рассмотреть другие решения.

Перевод с английского - Дмитрий Скоробогатов, 17.12.2006.

Оригинальный текст доступен по адресу http://sqlite.org/whentouse.html


Просмотры 7 просмотров

Статистика просмотров страницы:

  • за прошлый месяц (Март 2021) - 2;
  • за последние 3 месяца (Январь 2021 - Март 2021) - 7;
  • за последний год (Апрель 2020 - Март 2021) - 7;

Отзывы

Админ
Отлично!
Март 28 Админ

Статьи и обзоры Все статьи

Современный бизнес вынужден работать в непростых условиях регулярных перегрузок и ...
Разработка веб сайтов – одна из самых востребованных услуг в ...
В прошлом году многие впервые попробовали работать удалённо — такой ...
Уже более 70 десятилетий телевизор является наиболее популярным бытовым прибором ...