24 Ocak 2011 Pazartesi

Object Relational Mapping

Object Relational Mapping


Her geçen gün kullanım alanı artan ve kurumsal uygulamalar için vazgeçilmez bir unsur haline gelen Object relational mapping konseptini ve temel hatları ile uygulamalarımıza getirdiği kolaylıkları anlatacağım bu yazımda. ORM nesne modellerine bağlanma işini otomatikleştiren bir yoldur ve nesnelerin tablolara, tabloların nesnelere dönüşümünü sağlayarak kodları basitleştirir böylelikle uygulama liderleri pazarlama işine daha fazla zaman ayırabilir ve daha hızlı ve etkin pazarlayabilir. Aynı zamanda ORM kullanılarak kodlama ve bakım masrafları azaltılabilir.
ORM ile gömülü SQL, stored procedürler ve interfaceler ilişkisel veri tabanlarına göre daha az kodla yazılabilir.ORM büyük veritabanları ile işlem yapılması işini kolaylaştırır ve stored prosedürlere göre çok daha hızlı bir şekilde çalışarak sorunların çözümüne hızlı bir şekilde ulaşmanızı sağlar.



Object-to-Database Mapping(Nesne- veritabanı haritalama)
Bir ORM tolunun yerine getirmesi gereken en önemli konu nesne ve veritabanını ilişkilendirerek haritalama üzerinden işlemleri hızlı bir hale getirmesidir. Bir ORM aracı iş objelerini veritabanına başından sonuna bazı metadata haritalamalarını kullanarak haritalayabilmelidir. Bu nesne tabanlı ilişkisel haritalamanın temel unsurlarından biridir.
ORM yapılarının bize kazandırması gereken işlevleri sıralayacak olursak
Object Caching
İsminden de anlaşılacağı gibi nesnesel veri önbellekleme yaparak persistence katmanının performansını arttırır.
GUI Mapping
IT dünyasındaki bir çok konu gibi bu konuda tartışılmaktadır. Graphical user interface arayüzü kolaylaştırır LINQ to SQL ve EF GUI dizaynı visual studio ile yapılabilirler.
Multiple database-Platform Support(Çoklu veritabanı ve platform desteği)
İyi bir ORM bir ilişkisel veritabanı sisteminden diğerine taşınabilir olmalıdır.
Dynamic Querying(Dinamik Sorgulama)
ORM’in bir başka özelliği de dinamik sorgulama işlevidir ve DBAlerin korkulu rüyasıdır. Dinamik sorgulama desteği
ORM araçları kullanıcı tarafından girilen dinamik sorgulama desteğini vermelidir. Kullanıcıya özel bir filitre veya kriter koymasına izin veren bir yapıda olmalıdır. Bu yapılar LINQ to SQL ve EF de doğal olarak vardır. Böylelikle kullanıcı girişlerine göre framework otomatik olarak sorgu üretebilir.
Lazy Loading
Lazy loading’in amacı  bir program başlatıldığında belleğe öncelikleri belirlenmiş bileşenleri yükleyerek veritabanı serverlerine aktarır böylelikle bellek kullanımı optimize edilmiş olur. Temel olarak performans artırımı için kullanılır.LINQ to SQL de hazır fonksiyonlar kullanılarak ilk erişimde hangi yapıların yükleneceği seçilebilir. EF(Entity Framework) default olarak bu yapıyı destekler.
Nonistrusive Persistence
Fonksiyon, class, interface veya herhangi bir belirli sağlayıcılardan kalıtım ya da extend almaya gerek kalmamasını sağlayan önemli bir özelliktir. LINQ to SQL bu özellikleri destekler. Belirli sağlayıcıları kullanmadan özel bir sınıf oluşturularak isterleri bu sınıfı kullanarak sağlayabiliriz. Oluşturulan bu sınıf’ın ORM yapısına katılması istenilebilir.
Code Generation(Kod generasyonu)
ORM’in belirsiz bir alınıdır. Bazı yazılımcılar ORM’de code generationa yer olmadığını iddia eder ve iyi düşünülmüş bir nesne modelinin kodlamalarının elle yapılması gerektiğini savunurlar. Static veritabanı kullanılan projelerde code generation’un kullananılması çok büyük kolaylıklar sağlar örnekleyecek olursak soyut veri nesne katmanı nesne modelinden extend alıyorsa code generation kullanılabilir.
Multiple Object Orianted Framework Support(Çoklu nesneye dayalı faramework desteği)
Bir ORM ürününün çoklu nesneye dayalı diller ve geliştirme araçlarına uygunluğu zor bulunan bir özelliktir. .NET ve JAVA ORM yapılarını destekleyebilir özelliktedir.
Stored Procedure Support(Gömülü prosedür desteği)
Bir çok büyük organizasyonlarda dinamik SQL i kullanarak işin altından kalkmak mümkün değildir.Bu yüzden DBAler ORM üzerinde kötü bir tecrübe yaşamışlardır. LINQ to SQL ve EF stored prosedürü destekler.
Miscellaneous(Çesitlilik)
Kriterleri aşağıda sıralanan şekildedir.
-              Fiyat
-              Kullanım kolaylığı
-              Dokümantasyon
-              Pazar etkinliği
-              Performans
-              Destek
Etkin uygulamalarda bütün bu kriterleri bir ORM aracının sağlayabilir olması gerekmektedir.
Bir ORM aracı seçtiğimizde bunun bütün ihtiyaçları karşılayabileceğini düşünmeyin kullandığınız mimaride herhangi bir değişiklik yapmadan önce ORM mantığını tam olarak anlamanız gerekir. ORM araçları üretimi arttırıp pazarlama sürecini azaltır ama yanlış bir kullanımda tersi ile de karşılaşılabilir.

Hiç yorum yok:

Yorum Gönder

Bu gadget'ta bir hata oluştu