THT DUYURU

Web & Server Güvenliği Doğru web ve veritabanı sunucusu güvenliği sağlanmadan, bilgisayar korsanları hassas verilerinize erişebilir. Web, Sunucu ve veritabanı güvenliğini nasıl sağlayacağınızı buradan öğrenebilirsiniz.

chat
Seçenekler

SQLite Veritabanı ve Güvenliğine Genel Bir Bakış - 1

CmcEagle - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
06/2013
Nereden:
Spain
Yaş:
33
Mesajlar:
136
Konular:
111
Teşekkür (Etti):
1
Teşekkür (Aldı):
12
Ticaret:
(0) %
23-06-2013 18:07
#1
SQLite Veritabanı ve Güvenliğine Genel Bir Bakış - 1
Tabletlerin, akıllı telefonların ve PDA’lerin yaygınlaşmasıyla birlikte çok daha sık duyduğumuz bir terim, SQLite. Bilgigüvenliği kapısında daha önce yayınlanan bazı makalelerde de (Tarayıcılardaki Gizli Pencere Gizliliği Sağlar mı? II [1],Takip (mi) Ediliyoruz !(?) [2] ) geçen bu terim, yeni nesil ve taşınabilir sistemlerin veritabanı motorları için kullandıkları olmazsa olmaz bir teknoloji haline gelmiş durumda.
Peki, nedir SQLite? Yeni neler getirmektedir? Kullanım alanları, artıları-eksileri nelerdir? 2 bölümlük bu yazı dizisinde işte bu soruların cevaplarını arayacak ve SQLite veritabanını inceliyor olacağız.
İlk bölümde SQLite’ın temel özellikleri, güçlü yanları, yaygın kullanım alanları ve yetersiz kaldığı alanlardan bahsederken; daha sonra yayınlanacak ikinci bölümde, örnek SQLite veritabanı oluşturulması, kullanımı, yönetimi, ara yüzleri ve örnek bir mobil cihazın SQLite veritabanı kopyasının incelenmesiyle ilgileneceğiz.
SQLite - Küçük, Hızlı, Güvenilir


SQLite; sunucusuz çalışan, yapılandırma ihtiyacı olmayan, müstakil bir veritabanı motorudur. Açık kaynak kodlu ve ücretsiz olarak dağıtılan SQlite veritabanı, günümüzde mobil cihazların yaygınlaşmasıyla çok fazla alanda karşımıza çıkmaktadır ve her geçen gün daha fazla kullanıcıya hizmet etmektedir.


Şekil 1. SQLite’ın mottosu. Küçük, Hızlı ve Güvenilir.
SQLite gömülü çalışan bir veritabanı motorudur. Diğer birçok SQL veri tabanının aksine, SQLite’ın sunucuda işlem yapan ayrıca bir süreci bulunmamaktadır. SQLite, sıradan disk dosyalarına doğrudan erişim sağlayıp okuma ve yazma işlemlerini yapabilmektedir. Tablolar, sorgular ve indeksler gibi bir veri tabanında bulunabilecek bütün öğeleri tek bir dosyada saklayıp işlem yapabilmesi, SQLite en güçlü yanlarından biridir. Platformlar arası çalışabiliyor olması, 32-bit ya da 64-bit makineler arası kopyalanıp çalıştırılmasına da olanak sağlamaktadır. Bu yetenekleriyle etkili bir Uygulama Dosya Formatına dönüşen SQLite, Oracle’ın muadili olamasa da fopen()’ın yerini alan bir teknolojidir.
Niçin SQLite?





SQLite’ı diğer veritabanı motorlarından ayıran başlıca özellikle basit olmasıdır.

  • Basit Yönetim
  • Basit İşletim
  • Daha büyük programların içine Basit entegrasyon
  • Basit sürdürülebilirlik
SQLite birçok kullanıcı için küçük ve hızlı olması nedeniyle tercih edilmektedir. Aslında bir diğer etkin özelliği SQLite’ın güvenilir olmasıdır. Bunun altında yatan neden ise aslında, SQLite’ın basit olmasıdır. Daha az karışıklık, daha az işin hatalı gitmesine sebep olmaktadır.





Burada tartışılabilecek bir nokta, dosya sisteminde tek bir dosya halinde bulunan bir veri tabanı motorunun aslında zayıf ya da güçlü olup olmadığıdır. Bu sorunun cevabını aslında kullanıcının ihtiyacı belirler. SQLite, basitliği sağlama adına bazı kullanıcılar için oldukça elzem görülen paralel işlem yürütme, ayrıntılı erişim kontrolü, zengin dâhili fonksiyonlar, kayıtlı prosedürler, XML ve/veya Java desteği vs. özelliklerden feragat etmek zorunda kalmıştır. Eğer kullanıcının sistemi için bu özellikler olmazsa olmaz kategorisindeyse, SQLite doğru bir tercih olmayacaktır.

O zaman şöyle bir tanımlama ile SQLite’ın doğru kullanım alanı belirlenebilir; eğer ihtiyacımız yönetim kolaylığı, entegrasyon ve bakım işlemlerinin basitliği ise ve bu özellikler için diğer veri tabanı motorlarının sunduğu sayısız kompleks yetkinlikten vazgeçebiliyorsak SQLite doğru bir tercih olacaktır.
SQLite Veritabanının Güçlü Olduğu Alanlar

Uygulama Dosya Formatı




SQLite disk dosya formatını kullanan masaüstü uygulamalarında büyük başarı yakalamıştır. Finansal analiz ürünleri, CAD paketleri, kayıp saklama programları vs. bunlara örnek verilebilir. Geleneksel Dosya/Aç operasyonu yerine sqlite3_open() ve BEGIN TRANSACTION komutları veritabanı içeriğine erişim sağlamaya yeterlidir. Dosya/Kaydet işlemi ise COMMIT ile sağlanmaktadır. Bu yapıda çalışan dosya bazlı SQLite veri tabanları; atomik, dayanaklı, izole edilmiş ve tutarlı şekilde operasyonunu devam ettirmektedir.


Şekil 2. Örnek bir SQLite Veritabanı ve Hex Editor ile Başlık İncelemesi
Gömülü Cihazlar ve Uygulamalar



SQLite veritabanı çok az ve hatta 0 yönetim ihtiyacı duyduğundan, insan desteği olmadan çalışması gereken sistemler için güzel bir çözümdür. Bu nedenle cep telefonları, tablet bilgisayarlar, PDAler ve hazır kurulu gelen sistemler vb. için tercih sebebidir.


Şekil 3. Akıllı Telefonlar ve SQLite

Web Siteleri


SQLite, düşük-orta trafik yoğunluklu web siteleri için –ki bu bütün web sitelerinin %99,9’udur – sorunsuz çalışacak yetkinliktedir. Sitenin ne kadar trafik çektiği ve bu trafiğin ne yoğunlukta veritabanı işlemi gerektirdiği ile değişmekle birlikte, günlük 100.000’den az hit alan sayfalar için SQLite’ın problemsiz çalışacağı söylenebilir. Bu rakamı net şekilde ifade etmek doğru olmayacaktır, çünkü bunun 10 katı trafik oluşturan web siteleri için bile SQLite’ın sorunsuz çalıştığı görülmüştür.
Ad Hoc disk dosyalarının yerine kullanımı



Günümüzde birçok program, çalışması esnasında fopen(), fread(), fwrite() işlemleri ile dosya oluşturur, okur, yazar, siler ve özet olarak yönetir. SQLite işte bu tür disk dosya işlemlerinin de yerini alabilecek pozisyondadır.
Geçici veya Dahili Veritabanları



İşleyecek, sıralayacak veya ayıklayacak çok fazla veri üreten programlar için de SQLite güzel bir seçenektir. Normalde bu operasyonları program seviyesinde kodlayarak gerçekleştirmek yerine, SQLite’ın sorguları ve filtreleriyle hızlıca yapmak birçok programcı için işlerini hızlandıracak bir alternatiftir. Bunun yanı sıra, yeni sütun ve indekslerin her bir satırı tekrar kodlamaya gerek duymadan ekleyebilmesi, SQLite kullanan programlara üstün bir esneklik getirmektedir.
Komut satırı veri setleri analiz aracı



SQL dilinde deneyimi olan kullanıcılar, sqlite komut satırı programını[3] kullanarak çeşitli veri setlerini analiz edebilirler. Ham veriyi sqlite veri tabanından CSV dosyası olarak çıkartan kullanıcı, veriyi gruplara ayırarak ve parçalayarak arzu edilen istatistiklere ve analizlere ulaşabilir.

Bu özelliği istemci/sunucu mimarisinde çalışan veri tabanlarında da pek tabi bulmak mümkündür. Ancak bu noktada SQLite’ın bir avantajı vardır ki, o da bütün veriyi tek bir dosyada saklıyor olması ve raporların alınabilmesi için ekstra yazılım veya özellik bilgisi ihtiyacının minimum olmasıdır. Çok temel seviyede bilgisayar kullanım bilgisine sahip kullanıcılar bile SQLite veri tabanındaki bu bilgileri okuyup raporlayabilir.
Şekil 4. SQLite Komut Satırı Arayüzü


Kurumsal veritabanı demo ve testleri esnasında kullanım


Sunucu/istemci mimarisinde çalışacak bir kurumsal veritabanı uygulamasının hazırlanışı esnasında SQLite kullanılabilir. Ürün hazırlandığından sunucuya bağlanıp veri çekecek uygulama, henüz bu yapı hazır olmadığı için istemci üzerindeki SQLite veritabanı uygulamasından yardım alabilir. Bu sayede test ve örnek kullanım sunumları sadece istemci üzerinde yapılabilir.
Veritabanı Eğitimi



Kurulumu ve kullanımı çok basit olan Sqlite ( kurulum için sqlite/sqlite.exe dosyalarını kopyalamak ve çalıştırmak yeterli – bu konuda detaylı bilgi sonraki yazıda verilecektir) SQL dili eğitimi için de güzel bir fırsattır. Eğitmenin istediği sorguları yazan öğrenciler, bu SQL kodlarıyla diledikleri veri tabanlarını oluşturabilir ve dosya boyutunun da küçük olması sayesinde e-posta ile bu veri tabanlarını eğitmenlerine gönderebilir. Veritabanı eğitimi almış okuyucuların hatırlayacağı üzere, birkaç satırlık basit SQL komutlarının yazılabilmesi için bile laboratuvar ortamında bazen saatler süren ortam kurulumunun bu sayede önüne geçilebilir.
Deneysel SQL dili çalışmaları



SQLite’ın basit, modüler dizaynı sayesinde yeni veritabanı dilleri veya SQL dili üzerinde geliştirmeler SQLite platformunda yapılabilir.


Teknik becerinin zirvesi karmaşıklık, üretkenliğin zirvesi ise sadeliktir. (Erik Christopher Zeeman)
SQLite’ın zayıf, diğer İlişkisel Veritabanı Yönetim Sistemlerinin güçlü olduğu alanlar




SQLite’ın bu kadar güçlü yanlarını saydıktan sonra zayıf alanlarından da bahsetmekte fayda var. Sonuç itibariyle tek bir dosya üzerinde koşan veritabanı sistemi birçok kapsamlı ihtiyacı da karşılayamayacaktır. Şimdi de bu özelliklere değinelim.
Sunucu/İstemci Uygulamaları



Tek bir merkezi veri tabanına erişen ve işlem yapan birden çok istemci uygulamanız varsa, SQLite’ın bu noktada yetersiz kalacağı aşikâr. Aslında SQLite ağ üzerinde de erişilip işlem yapılabilmesi olanak tanımakta. Ancak ağ dosya sistemlerinde sıkça karşılaşılan gecikme sıkıntısı, SQLite’ın da performansı ciddi ölçüde etkileyecek bir durumdur. Bunun yanı sıra, erişim sağlanan dosyanın kilitlenmesi, veritabanı sunucusuna sadece tek bir istemcisinin bağlanabilmesi anlamına geldiği için, çoklu kullanıcılı sistemlerde bu noktanın gözden kaçırılmaması gerekmektedir. SQLite veritabanı dosyasına aynı anda yazma hakkıyla erişim sağlanabilmesi durumunda bile, hem Unix hem de Windows sistemlerdeki bazı kod hataları nedeniyle dosyanın bozulabilmesi mümkündür.

Bu nedenle kural olarak, birden çok kullanıcının merkezi tek bir veri tabanına erişmesi gereken yapılarda SQLite’dan kaçınmak gerekir.
Yüksek Yoğunluklu Web siteleri



Bir önceki bölümde de belirtildiği gibi, düşük yoğunluklu web siteleri için SQLite çözüm olabilir. Ancak web sitenizin arkasında çalışan veri tabanını ayrıca bir makineye kurmayı düşüneceğiz kadar yoğun kullanımlı sistemler için SQLite çare olmayacaktır.
Çok Büyük Veri Kümeleri



Dosya sistemindeki ön tanımlı sayfa boyutu değerlerini düşündüğümüzde, ki bu değer 1024 bayttır, SQLite Veritabanının maksimum hacminin 2 terabayt olacağını görebiliriz. (241 bayt) Bazı dosya sistemlerinde bir dosyanın alabileceği değer, doğal olarak daha düşük seviyelerdedir. Örnek olarak FAT32 için bu değer 4 gigabayttır[4].

Bu nedenlerle ihtiyacımız olan ve kaydedeceğimiz veri hacim bu değerlerden büyükse, SQLite’ı tercih listesinden çıkarmak mantıklı olacaktır.
Yüksek Paralel Kullanım İhtiyacı



SQLite, işlem yaptığı esnasında bütün veritabanı dosyasına erişir. Yazma veya okuma hakkıyla yaptığı bu işlem, işletim sistemi seviyesinde başka bir işlemin veri tabanına erişimini engeller. Paralel işlem yürütme ihtiyacı duyulan sistemler için bu durum büyük bir handikaptır. Eğer ihtiyaç duyulan sistemde çeşitli paralel işlemlerin yürütüleceği düşünülüyorsa, SQLite kullanımı doğru bir tercih olmayacaktır.

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler