Salı, Mayıs 31, 2011

SambaPOS Text Veritabanı

Zaman zaman bazı arkadaşlarım SambaPOS'un neden Text dosya bazlı bir veritabanı kullandığını soruyorlar. Öncelikle söyleyim SambaPOS SQL Server, SQL Server Express ve SQL Compact ile çalışabilmekte. İlgili veritabanın bilgisayara kurulup bağlantı ayarlarının yapılması yeterli. Bununla ilgili birçok bilgi sambapos.com dökümantasyonunda var.

Text dosya bazlı veritabanı sistemi ile ilgili asıl amacımız bilgisayara bir SQL tabanlı veritabanı kurulumu yapmadan programın özelliklerinin denenebilmesinin sağlanması. Elbette Text dosya veritabanımız uzun süreli kullanım için uygun değil bu nedenle kullanıcılarımız programı işyerlerinde kullanmaya karar verdiklerinde SQL tabanlı bir veritabanına geçmeliler.

Bunun dışında Text dosya veritabanının programın geliştirilmesi ile ilgili de birçok ekstra faydası var. Bilindiği gibi SambaPOS entitiy framework altyapısını kullanıyor. Entity Framework altyapısının geliştirme sırasındaki en önemli dezavantajı eğer Code First modelini tercih ettiyseniz modelde oluşan herhangi bir değişiklikte veritabanın silinip tekrar oluşturuluyor olması çünkü henüz bu modelde veritabanı yapısının otomatik güncellenmesi gibi bir imkan yok. Zaten düşünüldüğünde olmaması da gayet normal.

Text dosya veritabanımız basit anlamda "Reflection" ve "Serialization" ile çalışan bir XML tabanlı dosya yapısı olduğu için "rename" işlemi hariç modelde yaptığımız değişiklikler veritabanının baştan oluşturlmasına neden olmuyor. Ayrıca desteklediğimiz tüm veritabanı sistemlerine aynı IWorkspace arabirimi üzerinden eriştiğimiz için Text dosya veritabanı üzerinden çalışan bir yapı aynı şekilde diğer tüm veritabanlarında da çalışıyor. Bu seçenek TDD yapmak için de çok avantajlı çünkü Text dosya üzerinden çalışan veri erişim testleri aynı şekilde diğer veritabanları ile de çalışmakta. Test yazmanın çok zor olduğu veya bazı test altyapılarının kullanılmasının gerekebileceği durumlarda zaman kazandırıcı olacaktır.

Bu açıklamaları biraz daha programcılığa ilgi duyan arkadaşlar için yaptım. IWorkspace arabirimi üzerinden oluşturduğumuz veri erişim modeli her proje için faydalı bir model olabilir. Açık kaynak geliştirme konusuna ilgi duyan arkadaşlar ile bir çalışma yaparak bu katmanı daha da geliştirerek ayrı bir kütüphaneye taşırsak herkes için faydalı olur diye düşünüyorum.

Hiç yorum yok: