SQLite - SQLite

SQLit
SQLite370.svg
Geliştirici(ler) D. Richard Hipp
İlk sürüm 17 Ağustos 2000 ;
21 yıl önce
 ( 2000-08-17 )
kararlı sürüm 3.36.0  Bunu Vikiveri'de düzenleyin(18 Haziran 2021 ; 3 ay önce ) [±] ( 18 Haziran 2021 )
depo
Yazılmış C
İşletim sistemi Çapraz platform
Boy 699  KiB
Tip RDBMS ( gömülü )
Lisans Kamu malı
İnternet sitesi sqlite .org Bunu Vikiveri'de düzenleyin
SQLite Veritabanı Dosya Biçimi
Dosya adı uzantısı
.sqlite3, .sqlite, .db
İnternet medya türü application/vnd.sqlite3
sihirli sayı 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00(sıfır sonlandırılmış ASCII "SQLite formatı 3")
İlk sürüm 2004-06-18
Açık biçim ? evet ( Public Domain )
İnternet sitesi www .sqlite .org / fileformat2 .html

SQLite ( / ˌ ɛ s ˌ k ju ˌ ɛ l t / , / s Ben bir k ağırlık ə ˌ l t / ) a, ilişkisel veritabanı yönetim sistemi (RDBMS) bir içerdiği kütüphanesi . Diğer birçok veritabanı yönetim sisteminin aksine, SQLite bir istemci-sunucu veritabanı motoru değildir. Bunun yerine, son programa gömülüdür.

SQLite genellikle PostgreSQL sözdizimini takip eder . SQLite , etki alanı bütünlüğünü garanti etmeyen dinamik ve zayıf yazılmış bir SQL sözdizimi kullanır . Bu, örneğin, bir tamsayı olarak tanımlanan bir sütuna bir dize eklenebileceği anlamına gelir . SQLite, uygun olduğunda formatlar arasında verileri, bu durumda "123" dizesini bir tamsayıya dönüştürmeye çalışır, ancak bu tür dönüştürmeleri garanti etmez ve böyle bir dönüştürme mümkün değilse verileri olduğu gibi depolar.

SQLite, web tarayıcıları gibi uygulama yazılımlarında yerel/istemci depolaması için gömülü veritabanı yazılımı olarak popüler bir seçimdir . Bugün diğerlerinin yanı sıra birkaç yaygın tarayıcı, işletim sistemi ve gömülü sistemler (cep telefonları gibi) tarafından kullanıldığı için tartışmasız en yaygın olarak kullanılan veritabanı motorudur . SQLite'ın birçok programlama diliyle bağlantısı vardır .

Tasarım

İstemci-sunucu veritabanı yönetim sistemlerinden farklı olarak, SQLite motorunda uygulama programının iletişim kurduğu bağımsız süreçler yoktur . Bunun yerine, SQLite kütüphane olup bağlanmış ve böylece uygulama programının bir parçası haline gelir. Bağlama statik veya dinamik olabilir . Uygulama programı, veritabanı erişimindeki gecikmeyi azaltan basit işlev çağrıları aracılığıyla SQLite'ın işlevselliğini kullanır : tek bir süreç içindeki işlev çağrıları, süreçler arası iletişimden daha verimlidir .

SQLite, tüm veritabanını (tanımlar, tablolar, dizinler ve verilerin kendisi) bir ana makinede tek bir platformlar arası dosya olarak depolar . Bu basit tasarımı, yazma sırasında tüm veritabanı dosyasını kilitleyerek uygular . SQLite okuma işlemleri çok görevli olabilir, ancak yazma işlemleri yalnızca sıralı olarak gerçekleştirilebilir.

Sunucusuz tasarım nedeniyle SQLite uygulamaları, istemci-sunucu veritabanlarından daha az yapılandırma gerektirir. SQLite, hizmet yönetimi (başlangıç ​​komut dosyaları gibi) veya GRANT ve parolalara dayalı erişim kontrolü gerektirmediğinden sıfır konf olarak adlandırılır . Erişim kontrolü, veritabanı dosyasının kendisine verilen dosya sistemi izinleri aracılığıyla gerçekleştirilir. İstemci-sunucu sistemlerindeki veritabanları, veritabanı dosyalarına yalnızca daemon işlemine erişim sağlayan dosya sistemi izinlerini kullanır.

Sunucusuz tasarımın başka bir anlamı, birkaç işlemin veritabanı dosyasına yazamayabilir. Sunucu tabanlı veritabanlarında, birkaç yazarın tümü, kilitlerini dahili olarak işleyebilen aynı arka plan programına bağlanır. SQLite ise dosya sistemi kilitlerine güvenmek zorundadır. Veritabanına aynı anda erişen diğer işlemler hakkında daha az bilgiye sahiptir. Bu nedenle SQLite, yazma yoğun dağıtımlar için tercih edilen seçenek değildir. Ancak, çok az eşzamanlılığa sahip basit sorgular için SQLite performansı, verilerini başka bir işleme geçirme ek yükünü ortadan kaldırarak kazanç sağlar.

SQLite, PostgreSQL'i referans platformu olarak kullanır . SQL standardını anlamak için "PostgreSQL ne yapardı" kullanılır. Önemli bir sapma, birincil anahtarlar dışında SQLite'ın tür denetimini zorlamamasıdır ; bir değerin türü dinamiktir ve şema tarafından katı bir şekilde kısıtlanmaz (ancak, böyle bir dönüştürme potansiyel olarak tersine çevrilebilirse, şema depolama sırasında bir dönüştürmeyi tetikleyecektir). SQLite, Postel'in kuralına uymaya çalışır .

Tarih

D. Richard Hipp, SQLite'ı 2000 baharında Birleşik Devletler Donanması ile sözleşmeli General Dynamics için çalışırken tasarladı . Hipp, orijinal olarak bir IBM Informix veritabanı arka ucuyla HP-UX kullanan güdümlü füze muhriplerinde bir hasar kontrol sistemi için kullanılan bir yazılım tasarlıyordu . SQLite, bir Tcl uzantısı olarak başladı .

SQLite'ın tasarım hedefleri, programın bir veritabanı yönetim sistemi kurmadan veya bir veritabanı yöneticisi gerektirmeden çalıştırılmasına izin vermekti . Hipp, sözdizimini ve anlambilimini PostgreSQL 6.5'inkilere dayandırdı. Ağustos 2000'de, gdbm'ye (GNU Veritabanı Yöneticisi) dayalı depolama ile SQLite'ın 1.0 sürümü yayınlandı . SQLite 2.0, gdbm'yi özel bir B-ağacı uygulamasıyla değiştirerek işlem yeteneği ekledi . Kısmen America Online tarafından finanse edilen SQLite 3.0, uluslararasılaştırma , bildirim yazma ve diğer önemli iyileştirmeleri ekledi .

2011 yılında, Hipp bir ekleme planlarını açıkladı NoSQL (ifade belgeleri yönetme arayüzü JSON SQLite veritabanlarına) ve geliştirmek için UnQLite bir gömülebilir belge odaklı veritabanı .

SQLite, Library of Congress tarafından kullanımı onaylanan veri kümelerinin uzun süreli depolanması için önerilen dört biçimden biridir .

Özellikleri

SQLite uygular çoğunun SQL-92 standardı SQL , ancak bazı özelliklere sahip değildir. Örneğin, yalnızca kısmen tetikleyiciler sağlar ve görünümlere yazamaz (ancak bu işlevi sağlayan INSTEAD OF tetikleyicileri sağlar). ALTER TABLE deyimlerinin desteği sınırlıdır.

SQLite, SQL uyumlu bir VTYS için alışılmadık bir tür sistemi kullanır : çoğu SQL veritabanı sisteminde olduğu gibi bir sütuna bir tür atamak yerine , türler ayrı ayrı değerlere atanır; dil açısından dinamik olarak yazılır . Ayrıca, Perl ile aynı yollardan bazılarında zayıf yazılmıştır : bir tamsayı sütununa bir dize eklenebilir (her ne kadar sütunun tercih edilen türü tamsayı ise SQLite önce dizeyi bir tamsayıya dönüştürmeye çalışacaktır). Bu, özellikle dinamik olarak yazılmış bir komut dosyası diline bağlı olduğunda, sütunlara esneklik katar. Ancak, teknik diğer SQL ürünlerine taşınabilir değildir. Yaygın bir eleştiri, SQLite'ın tür sisteminin diğer ürünlerde statik olarak yazılan sütunlar tarafından sağlanan veri bütünlüğü mekanizmasından yoksun olmasıdır. SQLite web sitesi "katı yakınlık" modunu açıklar, ancak bu özellik henüz eklenmedi. Ancak, gibi kısıtlamalarla uygulanabilir . CHECK(typeof(x)='integer')

Tablolar normalde daha hızlı erişim sağlayan gizli bir satır dizini sütunu içerir. Bir veritabanı bir Tamsayı Birincil Anahtar sütunu içeriyorsa, SQLite tipik olarak onu rowid için bir takma ad olarak ele alarak , içeriğin kesinlikle yazılan 64 bitlik işaretli bir tamsayı olarak depolanmasına neden olarak ve davranışını bir şekilde bir otomatik gibi olacak şekilde değiştirerek optimize eder. artan sütun SQLite'ın gelecekteki sürümleri, bu sütunları zayıf yazılmış, otomatik artmayan Tamsayı Birincil Anahtarlarından ayırt etmek için bir sütunun rowid'deki gibi bir davranışa sahip olup olmadığını incelemek için bir komut içerebilir .

Tam Unicode işlevine sahip SQLite isteğe bağlıdır.

Birkaç bilgisayar işlemi veya iş parçacığı aynı veritabanına aynı anda erişebilir. Paralel olarak birkaç okuma erişimi sağlanabilir. Bir yazma erişimi, yalnızca şu anda başka erişim sağlanmıyorsa karşılanabilir. Aksi takdirde, yazma erişimi bir hata koduyla başarısız olur (veya yapılandırılabilir bir zaman aşımı süresi dolana kadar otomatik olarak yeniden denenebilir). Bu eşzamanlı erişim durumu, geçici tablolarla uğraşırken değişecektir. Bu kısıtlama, önceden yazma günlüğü (WAL) açıldığında 3.7 sürümünde gevşetilerek eşzamanlı okuma ve yazma işlemleri sağlanır.

14 Ekim 2009'da yayınlanan 3.6.19 sürümü, yabancı anahtar kısıtlamaları için destek ekledi.

SQLite sürüm 3.7.4 ilk olarak, eski FTS3 modülü üzerinde geliştirmeler içeren FTS4 (tam metin arama) modülünün eklenmesini gördü. FTS4, kullanıcıların, arama motorlarının web sayfalarını aramasına benzer şekilde, belgeler üzerinde tam metin araması yapmalarına olanak tanır. Sürüm 3.8.2 , alan ve performans iyileştirmeleri sağlayabilecek rowid içermeyen tablolar oluşturmak için destek ekledi . SQLite'a 3.8.3 sürümünde ortak tablo ifadeleri desteği eklendi. 3.8.11, FTS5 adlı daha yeni bir arama modülü ekledi, sürümde bir artış gerektiren daha radikal değişiklikler (FTS4'e kıyasla).

2015 yılında, json1 uzantısı ve yeni alt tür arayüzleri ile SQLite sürüm 3.9, JSON içerik yönetimini tanıttı .

3.33.0 sürümüne göre, desteklenen maksimum veritabanı boyutu 281 TB'dir.

Geliştirme ve dağıtım

SQLite'nın kod ile barındırılan Fosil , bir dağıtılmış sürüm kontrol sisteminin kendisi SQLite veritabanına üzerine inşa edilmiştir.

SQLite'ın dağıtımında bağımsız bir komut satırı programı sağlanır. Bir veritabanı oluşturmak, tabloları tanımlamak, satır eklemek ve değiştirmek, sorguları çalıştırmak ve bir SQLite veritabanı dosyasını yönetmek için kullanılabilir. Ayrıca SQLite kitaplığını kullanan uygulamalar yazmak için bir örnek teşkil eder.

SQLite, her sürümden önce otomatik regresyon testi kullanır . Bir sürümün doğrulamasının bir parçası olarak 2 milyondan fazla test gerçekleştirilir. SQLite 3.6.17'nin 10 Ağustos 2009 sürümünden itibaren, SQLite sürümleri, kod kapsamı bileşenlerinden biri olan %100 dal testi kapsamına sahiptir . Testler ve test koşum takımları kısmen kamu malı ve kısmen tescillidir .

Önemli kullanımlar

ara katman yazılımı

  • Başlangıçta Robert Simpson tarafından geliştirilen ADO.NET adaptörü, Nisan 2010'dan beri SQLite geliştiricileri ile ortaklaşa sürdürülmektedir.
  • ODBC sürücüsü, Christian Werner tarafından ayrı olarak geliştirilmiş ve bakımı yapılmıştır. Werner'ın ODBC sürücüsü, OpenOffice.org'dan SQLite'a erişmek için önerilen bağlantı yöntemidir .
  • COM ( ActiveX ) sarmalayıcısı, SQLite'ı Windows'ta JScript ve VBScript gibi komut dosyası dillerine erişilebilir hale getirir . Bu, HTML Uygulamalarına (HTA) SQLite veritabanı yetenekleri ekler .

internet tarayıcıları

  • Tarayıcılar Google Chrome , Opera , Safari ve Android Tarayıcı tüm bilgileri saklamak ve tarayıcı içinde bir SQLite veritabanında, onu almak, kullanmak için izin Web SQL Veritabanı bu hızla (yani yerini kaldırılmış olma rağmen, teknoloji IndexedDB ) . Dahili olarak, bu Chromium tabanlı tarayıcılar, site ziyareti geçmişi, çerezler, indirme geçmişi vb. gibi yapılandırma verilerini depolamak için SQLite veritabanlarını kullanır.
  • Mozilla Firefox ve Mozilla Thunderbird , dahili olarak yönetilen SQLite veritabanlarında çeşitli yapılandırma verilerini (yer imleri, tanımlama bilgileri, kişiler vb.) depolar. Firefox sürüm 57'ye ( "Firefox Quantum" ) kadar, rastgele SQLite veritabanlarını yönetmek için bir kullanıcı arabirimi sağlamak üzere bu işlevi destekleyen API'yi kullanan üçüncü taraf bir eklenti vardı.
  • Birkaç üçüncü taraf eklenti, SQLite veritabanlarını yönetmek için JavaScript API'lerini kullanabilir.

Web uygulama çerçeveleri

Çeşitli

İşletim sistemleri

SQLite varsayılan olarak aşağıdakilere dahildir:

Programlama dili desteği

Aşağıdakiler de dahil olmak üzere çok sayıda programlama dili için SQLite'a dil bağlamaları mevcuttur:

Ayrıca bakınız

Referanslar

alıntılar

Kaynaklar

Dış bağlantılar