Ana İçeriğe Atla

Nesne-İlişkisel Eşleme (ORM) nedir?

Nesne-ilişkisel eşleme (ORM), programlama dili varlıkları (nesneler) ve karşılık gelen veri tabanı öğeleri arasındaki bağlantıyı soyutlama işlemidir.

Programcılar, uygulamaları oluştururken, gerçek dünya kavramlarına karşılık gelen koddaki nesneleri tanımlar. Nesne verileri kodda değiştirilir ancak veri sistemi tasarımı tarafından tanımlandığı gibi bir veri tabanında saklanır. Örneğin, kodunuzda müşteri bilgilerini içeren bir müşteri nesneniz olabilir ancak temel veri tabanı bu verileri birden fazla tabloda depolayabilir.

Nesne-ilişkisel eşleme, nesne verilerini temel veri tabanına çeviren ve veri tabanı ayrıntılarını programcıdan soyutlayan bir yazılım katmanıdır. Bu şekilde, temel veri tabanları yeni veya farklı tasarımlarla değiştirilse bile kod değişmeden kalır. Nesne-ilişkisel eşleme, yönetimi ve bakımı kolay modüler uygulamaların oluşturulmasına izin verir.

Nesne-ilişkisel eşlemeler nasıl çalışır?

Nesne-ilişkisel eşlemeler (ORM), nesne odaklı programlama (OOP) dilinde yazılmış uygulamaları temel bir veri tabanına bağlar. Bu tür uygulamalar ve veri tabanları genellikle birlikte kullanılır ancak her biri verileri farklı şekilde işler. Aralarına bir nesne-ilişkisel eşleme eklemek, her birinin diğerinin anladığı bir biçimde veri göndermesine olanak tanır. Bunlar arasında birbirini etkilemeden değişiklik yapabilirsiniz.

Nesne odaklı programlama dili

OOP dilleri, verileri bir veya daha fazla özniteliğe sahip kod yapıları olan nesneler halinde düzenler. Örneğin, bir OOP uygulamasında, marka, model, VIN, renk ve kilometre gibi niteliklere sahip bir otomobil gibi kalıcı veri sınıfı olarak temsil edilen bir nesneyi tanımlayabilirsiniz.

En popüler nesne odaklı programlama (OOP) dilleri arasında Python, Java, JavaScript ve .NET/C# yer alır.

İlişkisel veri tabanları

İlişkisel veri tabanları, bir dizi bağlı elektronik tabloya benzer şekilde verileri tablolar halinde yapılandırır. Her tablo, her satırda benzersiz kayıtlara sahip bir dizi sütundan oluşur.

Örneğin, araç veri tabanınızda birkaç tablo olabilir. Bu tablolardan biri marka, model ve VIN gibi marka verilerini içerebilir. Başka bir tablo ise otomobillerin sahip, renk ve kilometre gibi bireysel özelliklerini depolayabilir. En popüler ilişkisel veri tabanlarından bazıları MySQL, PostgreSQL ve SQL Server'dır.

Web geliştirmede, bir Nesne-İlişkisel Eşleme (ORM) aracı, uygulamanın bu verilerin veri tabanında nasıl yapılandırıldığını bilmesini gerektirmeden nesne odaklı bir uygulamadan gönderilen verileri ilişkisel bir veri tabanına dönüştürür.

Nesne-ilişkisel eşlemeler

Her yapı verilerini farklı bir şekilde depolamasa da veri tabanınıza bir uygulama tarafından istenen tüm verilerin nerede bulunacağını söyleyen, bazen nesne-ilişkisel yöneticisi olarak da adlandırılan bir nesne-ilişkisel eşleme oluşturabilirsiniz. Uygulamanız tek bir aracın tüm özelliklerini istediğinde, ORM, veri tabanına tüm bu verilerin birden fazla tablodan nasıl alınacağını söyler.

Eşlemeler soyutlandığından, veri tabanı yapısı değişirse veya yeni bir veri tabanına geçerseniz ORM yine de minimum güncellemelerle doğru verilere işaret edebilir.

Yaygın ORM çerçeveleri

ORM araçları veya çerçeveleri, en popüler nesne yönelimli programlama dillerinin çoğunda veri modelleme için kullanılabilir. En popüler olanlardan bazıları şunlardır:

  • Java için hazırda bekletme
  • Python için SQLAcademy
  • .NET/C# için Varlık Çerçevesi

ORM'yi ilişkisel olmayan bir veri tabanıyla kullanabilir misiniz?

Hayır. İlişkisel olmayan veri tabanları, verileri farklı biçimlerde depolar ve uygulamalarla farklı şekillerde etkileşime girer. İlişkisel olmayan veri tabanının en yaygın türü bir belge veri tabanıdır. Belgeler ayrıca nesnelere benzer birçok özellik de içerebilir ancak farklı programatik yapılara sahiptirler.

En popüler ilişkisel olmayan veri tabanları arasında MongoDB ve NoSQL yer alır.

ORM ile ORDBMS arasındaki fark nedir?

Nesne-İlişkisel Veri Tabanı Yönetim Sistemi (ORDBMS), hem ilişkisel hem de nesne odaklı çerçevelerin öğelerini kullanan bir veri tabanı türüdür. Bir OOP dilinde kodlayabileceklerinize benzer nesneler olarak yapılandırılmış kayıtları saklayabilir. Ancak bu kayıtlarda SQL benzeri ilişkisel sorgular da gerçekleştirebilirsiniz. Bu özellik kombinasyonu, standart bir ilişkisel veri tabanında mümkün olandan daha geniş bir veri türü yelpazesini depolamanıza olanak tanır.

Nesne-ilişkisel eşlemenin (ORM) uygulama düzeyinde çalışan bir veri soyutlaması olduğu durumlarda, bir ORDBMS doğrudan veri tabanı düzeyinde nesne odaklı yetenekler sağlar.

ORM'ler uygulama kodunuzda çalışır ve perde arkasında SQL oluşturur. ORDBMS, gelişmiş nesne türleri için yerel destek ile veri depolamayı ve sorgu yürütmeyi veri tabanı düzeyinde yönetir.

ORM ile SQL arasındaki fark nedir?

SQL (Yapılandırılmış Sorgu Dili), ilişkisel veri tabanlarıyla etkileşim kurmak için kullanılan standart dildir. Bildirimsel komutları kullanarak veri tabanı şemaları oluşturmanıza ve yönetmenize, veri eklemenize ve güncellemenize ve kayıtları sorgulamanıza olanak tanır.

SQL, veri tabanı üzerinde doğrudan, düşük seviyeli kontrol sağlar. ORM, genellikle geliştirmeyi daha hızlı ve kodu daha sürdürülebilir hale getirerek daha üst düzey, daha soyut bir arabirim sağlar.

ORM, yaygın veri tabanı görevlerini basitleştirmek ve uygulama koduyla uyumlu hale getirmek için idealdir ancak performans ayarlamasına, karmaşık sorgulara veya veri erişimi üzerinde tam kontrole ihtiyaç duyduğunuzda SQL gerekli olmaya devam eder.

SQL sorguları yerine neden ORM kullanmalısınız?

SQL, veri tabanıyla etkileşim kurmak için komutları manuel olarak yazmanızı gerektirirken, bir ORM nesne odaklı kodunuzu perde arkasında otomatik olarak SQL'e çevirir.

ORM'ler, birçok veri tabanı sorgusu yapması gereken nesne odaklı bir program geliştirmek için gereken kodlama miktarını azaltmaya yardımcı olur. Geliştiricileriniz, korunması gereken çok sayıda veri tabanı sorgusunu manuel olarak programlamak yerine, ORM'ye nasıl istek gönderileceğini programlar.

Daha anlaşılır bir programlama dilinde çalışmak da kodun okunmasını ve hata ayıklamayı kolaylaştırır.

Nesne-ilişkisel eşlemeyi kullanmanın avantajları nelerdir?

ORM sistemleri aşağıdaki avantajları sağlar.

Daha hızlı uygulama geliştirme

ORM'ler, geliştiricilerinizin en aşina olduğu OOP dilinde anlaşılabilir kod kullanarak karmaşık verilerin alınmasına yardımcı olur. ORM'ler kayıt oluşturma, okuma, güncelleme ve silme (CRUD) gibi rutin veri tabanı işlemlerini gerçekleştirebilir ve böylece geliştiricilerinizin bu işlemleri uygulamanızda tekrar tekrar kodlaması gerekmez.

Daha basit uygulama bakımı

Veri tabanı sorgularını bir ORM aracılığıyla soyutlayarak, geliştiriciler tek bir dilde çalışabilir ve kodlarının anlaşılmasını ve korunmasını kolaylaştırabilir.

Gelişmiş güvenlik

SQL eklemesi saldırısı, uygulamadaki kullanıcı formları aracılığıyla SQL sorguları göndererek özel verilere erişmeye yönelik kötü amaçlı bir girişimdir. ORM'ler, veri tabanınıza ilk önce gerçek veriler değil, yer tutucu değerleri olan bir sorgu gönderen parametreli sorguları kullanır. (ör.? veya :parAM). Gerçek veriler ayrı ayrı gönderilir. Bu, kullanıcı girişinin yürütülebilir SQL kodu değil, veri olarak ele alınmasını sağlar. Böylece bir ORM aracı kullanmak, SQL eklemesi yoluyla yetkisiz veri erişimini önler.

İyileştirilmiş performans

Bir ORM, uygulama katmanında saydam nesne önbelleğe almayı etkinleştirerek sistem performansını artırabilir. Daha hızlı erişim için en yaygın olarak alınan verileri uygulamaya daha yakın kaydedebilir.

Nesne-ilişkisel eşlemeleri kullanmanın zorlukları nelerdir?

ORM'ler aşağıdaki zorluklara sahiptir.

Empedans uyumsuzlukları

Karmaşık veri yapılarının nesne odaklı programlar ve veri tabanları arasında eşlenmesi zor olabilir. ORM'nizin ne kadar karmaşık olduğuna bakılmaksızın, OOP'de kodlanması mümkün olan hiyerarşilerin bir veri tabanında temsil edilmesi çok zor olabilir.

Daha yüksek karmaşıklıkta performans sorunları

Bir veri tabanını doğrudan sorgulamak, hesaplama açısından bir ORM kullanmaktan daha verimlidir. Oldukça karmaşık sorgular için, bir Nesne-İlişkisel Eşleme (ORM) aracı yerine SQL kodunu kullanmak daha verimli olabilir.

Öğrenme eğrisi

ORM'ler ile karmaşık SQL kodunu öğrenmenize gerek olmasa da geliştiricilerinizin yine de ORM araçlarını nasıl kullanacaklarını öğrenmeleri gerekecektir.

Nesne-ilişkisel eşlemeleri ne zaman kullanmalısınız?

Bir ORM aracı, veri tabanı sorgularını özetlediğinden ve otomatikleştirdiğinden, geliştiricileriniz çalışmalarını potansiyel olarak karmaşık sorguları kodlamak yerine uygulamaya daha fazla odaklayabilir. Şu durumlarda ORM'yi kullanın:

Uygulamanızın birçok nesnesi varsa

Karmaşık nesne arabirimleri ve yapıları için manuel olarak sorgular oluşturmak zaman alıcı ve yoğun çaba gerektiren bir görev olabilir. Bir ORM aracının nesneleri veri tabanınızda depolanan verilere eşlemesine izin vermek, doğru alımı daha hızlı ve daha güvenilir hale getirebilir.

Uygulamanız benzer veri tabanı sorgularını tekrarlıyorsa

ORM'ler birçok rutin CRUD işlemini (Veri Oluşturma, Okuma, Güncelleme ve Silme) kolayca otomatikleştirebilir, böylece daha az SQL kodu gerekir.

Şema gelişimi devam ediyorsa

Veri modeliniz hala gelişiyorsa bir ORM, veri tabanı şeması değişikliklerini daha kolay yönetmenize yardımcı olabilir. Birçok ORM, değişiklikleri yapılandırılmış bir şekilde sürümlendirmenize ve uygulamanıza ve ortamlar arasında tutarsızlık riskini azaltmanıza olanak tanıyan geçiş araçları içerir.

Veri tabanı taşınabilirliği önemliyse

ORM, uygulamanız tarafından çağrılan işlemleri belirli bir veri tabanından kasıtlı olarak ayıran bir soyutlama katmanıdır. Tam taşınabilirlik garantisi olmasa da bu soyutlama, sistemler arasında hareket etme çabasını azaltır. Örneğin, araç uygulamanızın MySQL veri tabanı kullanmayı bırakıp PostgreSQL'e geçmesi gerekiyorsa tüm uygulamayı yeniden yazmanız gerekmez. Tablolardan herhangi biri değişirse ORM'nizde küçük ayarlamalar yapmanız yeterlidir.

Nesne-ilişkisel eşlemeleri kullanmamanız gereken durumlar nelerdir?

Güçlü araçlar olsalar da nesne-ilişkisel eşleyicilerin en iyi çözüm olmadığı durumlar hala vardır.

Basit veri tabanı etkileşimleri için

Yalnızca basit CRUD işlemlerini gerçekleştiren bir uygulama oluşturuyorsanız bir ORM'yi korumak için gereken zaman ve çaba, sorguları uygulamanızda manuel olarak tutmaktan daha büyük olabilir.

Yüksek performanslı bilgi işlem kritik olduğunda

Birçok uygulama için bir ORM tarafından eklenen ek hesaplama süresi ve kaynaklar önemsizdir. Ancak milisaniyelerin önemli olduğu gerçek zamanlı analiz gibi görevler için bu kabul edilebilir olmayabilir.

Denormalize edilmiş şemaları kullanmanız gerektiğinde

Bazı durumlarda geliştiricileriniz, normalleştirilmemiş şemalar olarak adlandırılan veri tabanı web hizmetlerinizdeki birden fazla tabloda yedekli verileri korumak isteyebilir. Bu, bir uygulamanın birçok tabloyu birleştiren karmaşık ilişkisel sorgular yapması gerektiğinde performansı artırabilir. Bu sorguları bir ORM'de eşlemek her zaman etkili değildir.

AWS, veri yönetimi gereksinimlerinize nasıl yardımcı olabilir?

AWS, veri yönetimini verimli ve uygun maliyetli hale getiren bir dizi bulut veri tabanı çözümü sunar.

Amazon Relational Database Service (Amazon RDS), bulutta ilişkisel veri tabanı için kolay kurulum, çalıştırma ve ölçeklendirme imkanı sunan bir yönetilen hizmettir. Uygun maliyetli ve yeniden boyutlandırılabilen kapasite sağlamasının yanı sıra zaman alan veritabanı yönetim görevlerini yöneterek uygulamalarınıza ve işinize odaklanma özgürlüğü sunar.

Amazon Aurora, yüksek performans ve uygun ölçekte yüksek kullanılabilirlik sunan modern bir ilişkisel veri tabanı hizmetidir. Tamamen açık kaynak MySQL ve PostgreSQL uyumlu sürümler ve ayrıca sunucusuz ve makine öğrenimi (ML) temelli uygulamalar oluşturmaya yönelik çeşitli geliştirici araçları sunar.

Amazon Redshift, büyük ölçekte modern veri analizini destekleyerek diğer bulut veri ambarlarına kıyasla 3 kata kadar daha iyi fiyat performansı ve 7 kata kadar daha yüksek aktarım hızı sağlar.

Amazon DocumentDB (MongoDB uyumlu), verileri JSON nesnelerine benzer belgelerde depolayan, hızlı, ölçeklenebilir, yüksek oranda erişilebilir, tam olarak yönetilen ve kurumsal bir belge veri tabanıdır. Yerel nesnelerden geliştirici tarafından kullanılan programlama diline döndürülen sürücüleri kullanır ve ORM araçlarına olan ihtiyacı ortadan kaldırır.

Hemen ücretsiz bir hesap oluşturun ve AWS'de veri tabanlarını kullanmaya başlayın.