Кіріспе

Серверсіз реляциялық деректер қорын басқару жүйесі (RDBMS)

SQLite ( /ɛs/, /kjuː/, /ɛlˈaɪt/, /siːkwəˌlaɪt/) – C бағдарламалау тілінде жазылған деректер қоры тетігі. Бұл жеке қолданба емес, ол бағдарламалық жасақтама жасаушылардың өз қолданбаларына енгізетін кітапхана. Осылайша, ол кіріктірілген деректер қоры отбасына жатады. Бұл ең көп тараған деректер қоры қозғалтқышы, себебі оны көптеген жетекші веб-браузерлер, операциялық жүйелер, ұялы телефондар және басқа кіріктірілген жүйелер пайдаланады. Көптеген бағдарламалау тілдерінде SQLite кітапханасына қосылымдар бар. Ол көбінесе PostgreSQL синтаксисін қолданады, бірақ әдепкі бойынша типтік тексеруді міндетті етпейді. Яғни, мысалы, бүтін сан ретінде анықталған бағанға мәтіндік жол енгізуге болады.

Тарих

Д. Ричард Хипп 2000 жылдың көктемінде АҚШ Әскери-теңіз күштерімен келісімшарт бойынша General Dynamics компаниясында жұмыс істеген кезде SQLite-ті жасады. Хипп басқарылатын зымырандық кемелердегі зардаптарды бақылау жүйесі үшін қолданылатын бағдарламалық құралды жобалаған; бұл зардаптарды бақылау жүйесі бастапқыда IBM Informix дерекқорының артқы бөлігімен HP UX-ты пайдаланған. SQLite Tcl кеңейтімі ретінде бастау алды. 2018 жылы SQLite Сент-Бенедикт ережесіне негізделген Мінез кодексін қабылдады, бұл кейбір пікір қақтығыстарына әкелді және кейін Этика кодексі деп өзгертілді. SQLite – Конгресс кітапханасы қолданылатын деректер жиынтығын ұзақ мерзімді сақтау үшін ұсынатын төрт форматтың бірі.

Дизайн

SQLite бағдарламаны деректер базасын басқару жүйесін орнатусыз немесе деректер базасының әкімшісін қажет етпей жұмыс істеуге мүмкіндік беру үшін жасалды. Клиент-серверлік деректер қорын басқару жүйелерінен айырмашылығы, SQLite қозғалтқышында қолданбалық бағдарламамен байланысатын дербес процестер жоқ. Оның орнына, сілтеме жасаушы SQLite кітапханасын SQLite-тің функционалдығын қарапайым функцияларды шақыру арқылы пайдаланатын қолданба бағдарламасына статикалық немесе динамикалық түрде біріктіреді, бұл деректер базасының операцияларындағы кідіріс уақытын азайтады; аз қатарлас қарапайым сұраныстар үшін SQLite өнімділігі процестер арасындағы байланыстың үстіртінен аулақ болудан пайда көреді. Серверсіз дизайнға байланысты SQLite қосымшалары клиент-сервер деректер қорына қарағанда аз конфигурацияны қажет етеді. SQLite нөлдік конфигурация деп аталады, өйткені оған қызмет көрсетуді басқару (мысалы, бастау скрипттері) немесе GRANT және парольдерге негізделген кіруді басқару қажет емес. Кіруді басқару деректер базасының файлына берілген файл жүйесі рұқсаттары арқылы жүзеге асырылады. Клиент-сервер жүйелеріндегі деректер қорлары файл жүйесі рұқсаттарын қолданады, олар деректер қорына тек қана оның кілтін ішкі басқарушы процеске ғана қол жетімділік береді, бұл бірнеше процестерден бір мезгілде жазуға мүмкіндік береді. SQLite бүкіл деректер қорын (анықтамалар, кестелер, индекстер және деректердің өзі) хост машинасында бір платформааралық файл ретінде сақтайды, бұл бірнеше процестерге немесе жіптерге бір уақытта бір деректер қорына кіруге мүмкіндік береді. Бұл қарапайым дизайнды жазу кезінде деректер қорының файлын бұғаттау арқылы іске асырады. Жазу қатынасы қате кодымен сәтсіз болуы мүмкін немесе ол конфигурацияланатын уақыт біткенше қайталап сыналуы мүмкін. SQLite оқу операцияларын көп тапсырмалы түрде орындауға болады, бірақ серверсіз дизайнына байланысты жазу тек бірінен соң бірі орындалуы мүмкін. Бұл бір мезгілде қол жеткізу шектеуі уақытша кестелерге қолданылмайды және 3.7 нұсқасында жеңілдетіледі, өйткені алдын ала жазу журналы (WAL) бір мезгілде оқу мен жазуды қамтамасыз етеді. SQLite файлдар жүйесінің бұғаттауына сүйенуі керек болғандықтан, жазуды қарқынды қолданатын қолданбалар үшін бұл таңдау дұрыс емес. SQLite PostgreSQL-ті анықтама платформасы ретінде пайдаланады. "PostgreSQL не істемек" SQL стандартын түсіну үшін қолданылады. Бір үлкен ауытқу - негізгі кілттерді қоспағанда, SQLite типті тексеруді талап етпейді; мәннің типі динамикалық және схемамен қатаң шектелмейді (егерде схема сақтаған кезде түрлендіруді бастаса, егер мұндай түрлендіру қайтаруға болатын болса). SQLite Postel ережесін ұстануға тырысады. SQLite SQL-ке үйлесімді ДБС үшін ерекше типтік жүйені қолданады: SQL деректер қорының көпшілігінде сияқты бағанға тип берудің орнына типтер жеке мәндерге беріледі; тілдік тұрғыдан алғанда ол динамикалық түрде типтеледі. Сонымен қатар, ол Perl сияқты әлсіз типте: бірінші, бүтін сандар бағанына тізбек енгізе аласыз (егер SQLite бірінші кезекте тізбекті бүтін санға түрлендіруге тырыса берсе, егер бағананың артықшылықты түрі бүтін сан болса). Бұл бағандарға, әсіресе динамикалық типтегі скрипт тіліне байланысты болса, икемділікті арттырады. Алайда, бұл әдіс басқа SQL өнімдеріне көшірілмейді. Жалпы сын SQLite-тің типтік жүйесіне статикалық типтелген бағандармен қамтамасыз етілген деректердің тұтастығы механизмі жетіспейді, дегенмен оны кестелер сияқты шектеулермен эмуляциялау мүмкін. Егер деректер қорында Integer Primary Key бағаны болса, SQLite оны әдетте rowid псевдонимі ретінде қарастырып, мазмұнын 64 биттік толық сан ретінде сақтап, оның мінез-құлқын автоматты түрде көбейетін бағанаға ұқсатып өзгертеді. SQLite-тің болашақ нұсқаларында бағанның rowid сияқты мінез-құлқы бар ма, жоқ па, оны тексеруге арналған команда болуы мүмкін. Бұл бағандарды әлсіз типтелген, автоматты түрде көбеймейтін бүтін сандар негізгі кілттерінен ажырату үшін. 2009 жылдың 14 қазанында шыққан 3.6.19 нұсқасы шетелдік кілт шектеулерін қолдауға қосылды. Сақталған процедуралар қолдау таппайды; бұл SQLite-тің типтік пайдалану жағдайы деректер базасы бойынша өз процедураларын анықтай алатын хост қосымшаға еніп отыруды білдіретіндіктен, бұл қарапайымдылықты жақтыратын әзірлеушілердің айқын таңдауы. Юникодты толық қолдау опционалды кеңейту арқылы іске қосылуы мүмкін. SQLite 3.7.4 нұсқасында алғаш рет FTS4 (толық мәтіндік іздеу) модулі қосылды, ол ескі FTS3 модуліне қарағанда жетілдірілген. FTS4 пайдаланушыларға толық мәтіндік іздеулерді құжаттар бойынша жүргізуге мүмкіндік береді, бұл іздеу жүйелерінің веб-беттерді іздеуіне ұқсас. 3.8.2 нұсқасы rowidсыз кестелерді жасауға қолдау қосты, бұл орын мен өнімділік жақсартуларын қамтамасыз етуі мүмкін. 3.8.3 нұсқасында жалпы кесте өрнегінің қолдауы қосылды. 3.8.11 нұсқасы FTS5 деп аталатын жаңа іздеу модулін қосты, FTS4-ке қарағанда радикалды өзгерістер нұсқаның өсуін қажет етті. 2015 жылы json1 кеңейтуімен және жаңа қосалқы түр интерфейстерімен SQLite 3.9 нұсқасы JSON мазмұнын басқаруды енгізді. 3.33.0 нұсқасының мәліметі бойынша, қолдау көрсетілетін деректер базасының максималды көлемі 281 ТБ құрайды.

Даму және тарату

SQLite коды Fossil жүйесінде орналасқан, ол SQLite-ді реляциялық емес деректер базасы форматы үшін жергілікті кэш ретінде және SQLite-дің SQL тілін іске асыру тілі ретінде пайдаланатын таратылған нұсқаны басқару жүйесі. SQLite – қоғамдық доменде, бірақ «ашық үлес» емес, веб-сайтта «жоба өз үлесін қоғамдық доменге беруге ант берген мәлімдемесіз адамдардан түзетулерді қабылдамайды» делінген. Мінез кодексінің орнына, негізін қалаушылар қасиетті Бенедикт ережесіне негізделген этика кодексін қабылдады. SQLite таратуында sqlite3 деп аталатын жеке командалық қабық бағдарламасы бар. Оны деректер базасын құру, кестелерді анықтау, қатарларды қосу және өзгерту, сұрауларды орындау және SQLite деректер базасының файлымен басқару үшін пайдалануға болады. Сондай-ақ, ол SQLite кітапханасын пайдаланатын қосымшаларды жазу үшін мысал ретінде қызмет етеді. SQLite әр шығарылым алдында автоматты регрессиялық сынақтан өтеді. Шығарылымды тексеру барысында 2 миллионнан астам сынақ жүргізіледі. 2009 жылдың 10 тамызында шыққан SQLite 3.6.17 нұсқасынан бастап, SQLite шығарылымдары кодты қамтудың бір бөлігі болып табылатын 100% тармақ сынағын қамтиды. Сынақтар мен сынақ құралдарының бір бөлігі қоғамдық доменде, ал қалғаны жеке меншікте.

Ортаңғы құралдар

АДО. NET адаптері, бастапқыда Роберт Симпсон әзірлеген, 2010 жылдың сәуір айынан бері SQLite әзірлеушілерімен бірлесіп қолдауға алынып келеді. ODBC драйверін Christian Werner жеке әзірлеген және оны дербес басқарады. Werner-дің ODBC драйвері OpenOffice.org-тан SQLite дерекқорына қосылудың ұсынылатын әдісі болып табылады. COM (ActiveX) wrapper Windows жүйесінде JScript және VBScript сияқты скрипт тілдері арқылы SQLite-ге қол жеткізуді қамтамасыз етеді. Бұл HTML қолданбаларына (HTA) SQLite дерекқорының мүмкіндіктерін қосады.

Веб-браузерлер

Google Chrome, Opera, Safari және Android браузерлері браузер ішіндегі SQLite деректер қорында ақпаратты сақтауға және оны алуға мүмкіндік береді, ресми SQLite Wasm (WebAssembly) жинағын немесе Web SQL Database технологиясын пайдаланады, бірақ соңғысы қолданудан шығып барады (яғни SQLite Wasm немесе IndexedDB ізбесімен алмастырылуда). Ішкі тұрғысынан, бұл Chromium негізіндегі браузерлер сайтқа кіру тарихы, cookie файлдары, жүктеу тарихы сияқты конфигурациялық деректерді сақтау үшін SQLite деректер қорын пайдаланады. Mozilla Firefox және Mozilla Thunderbird әртүрлі конфигурациялық деректерді (қоймалар, cookie файлдары, контактілер және т.б.) ішкі басқарылатын SQLite деректер қорында сақтайды. Firefox 57 ("Firefox Quantum") нұсқасына дейін, осы мүмкіндікті қолдайтын API-ді пайдаланып, кез келген SQLite деректер қорын басқаруға арналған пайдаланушы интерфейсін ұсынатын үшінші тараптың қосымшасы болды. Көптеген үшінші тараптың қосымшалары SQLite деректер қорын басқару үшін JavaScript API-ларын пайдалана алады.