SQLite

Материал из Неолурк, народный Lurkmore
Перейти к навигации Перейти к поиску

SQLite — весьма мощная система управления базами данных на основе языка SQL.

Описание[править]

Появился проект по заказу американской армии. Встала задача управления военно-морскими эсминцами без необходимости устанавливать отдельный сервер баз данных. Хипп работал над проектом для General Dynamics по заказу ВМС США и столкнулся с проблемой, так использование сервера PostgreSQL требовало администрирования, которое занимало много времени в полевых условиях.

После реализации проект был выпущен с открытым исходным кодом и можно спокойно применяться всеми желающими.

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

SQLite использует концепцию динамической типизации, которая существенно отличается от строгой статической типизации большинства СУБД. Тип принадлежит не столбцу, а конкретному значению. За счёт этого можно невозбранно хранить в одном столбце значения разных типов. Однако в дальнейшем был восран режим STRICT, который обеспечивает строгую статическую типизацию. В режиме STRICT допускаются только типы INT, INTEGER, REAL, TEXT, BLOB, ANY. Попытка вставить значение несовместимого типа вызывает ошибку.

Он поддерживает только один записывающий процесс одновременно. В режиме WAL возможны одновременные чтение и запись, но запись по-прежнему сериализована. Из-за этого применять её в приложениях с высокой нагрузкой как бы затруднительно.

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

Movax1010h.png Глубокий смысл скрыт в этих неестественных языках
Языки программированияПромышленные: BATC#CC++JavaJavaScript (AJAX) • PascalPerlPHPPythonRubyABAPАссемблерВасикFortran (Профессор)
Эзотерические: BrainFuckHQ9++ErlangForthHaskellLISP (My other car) • PrologTclΤΕΧOracleMySQLGolangВ++ScalaH и Ё+
ПрофессииБыдлокодерПрограммистТестировщикХакерХеллоуворлдщикIT-звёздыПрограммист (существо)Тернарный операторUnreal MCPИсходный кодSingle-Page ApplicationGiteaForgejoCephIDEДжуниорРепозиторийPostgreSQLSQLite
Методы и стилиReverse EngineeringАнти-паттернВыстрелить себе в ногуГрязный хакКод (индусский) • КостыльМетод научного тыкаПомолясьСвистелки и перделкиОчередьСпортивное программированиеОбфускацияБета-тестАльфа-тестШаблоныRegReplaceФреймворкБыдлокодIndex.phpОхота за жукамиКуМирКлеточный автоматПроцедурное программированиеПоиск файлов в Unix по содержимомуPetoohФункция активации нейронаПерегрузка операторов в PythonЗерокодинг
Средства разработкиSublime TextПодсветка синтаксиса кодаUnstable DiffusionAPIPythonTutorCodeWarsDataCampUnity3DКнижный PythonMallocСвязный списокSOLIDООПУказательNULLWeLang++XenonRecompFuse.jsОптимизацияТестированиеAmbreon866Реверс-инжинирингКроссплатформенностьJSON
ЛюдиИлья КанторЮрий КлючевскийЭдуард ЛаасЭдвард СноуденСеймур ПейпертПроблемаK!ockyTypeScriptОтладчикБитЭффективный менеджер (IT)TauriReact NativeWindows APIТипPyTorchTensorFlowПарсерNode.jsFastAPIVue.jsSvelteБэкендElectronBroken Object Level AuthorizationМаппингДжастин ФранкельHex-редакторVisual Basic .NETNext.jsDocker ComposeNode modulesIndexedDB
Прочее++i + ++iДедлайн%s640 килобайтCMSDummy modeЕГГОГFoobarGod is real, unless explicitly declared as integerGOTOIfconfigKISSRegExpSICPsql.ruXyzzyДискетаИнжалид дежицеКОИ-8ЛогМанРекурсияСУБДТест ТьюрингаУмение разбираться в чужом кодеФаза ЛуныФатальный недостатокПроблема 2000ТаймстампКэшЗапись в файл без кэша (Perl)Танцы с бубномКодачХукCurl cffiВибе-кодингFlutterАппликативный оператор