Engellemeyen ORM sorunları


9

SO ile ilgili bir soru sordum ve en sevdiğim web çerçevesi için engellemeyen ORM olmadığını buldum. Engellemeyerek, eşzamansız erişim için geri arama desteği olan bir ORM'yi kastediyorum. ORM, veri alındığında yürütülecek bir geri arama veya benzeri bir yöntemle sağlanacaktır.

Bir tane oluşturmak istiyorum, ancak geliştirmeye başlamamı engelleyen bazı sorularım var:

  • ORM geliştirilirken hangi sorunlarla karşılaşılabilir?
  • Engellemeyen erişimin desteklenmesi bir ORM'nin karmaşıklığını önemli ölçüde artırır mı?
  • Neden bu kadar az engellemeyen ORM var?

Güncelleme: Görünüşe göre sorumu geliştirmem gerekiyor. Veriyi engellemeyen bir şekilde almamıza izin veren çözümlerimiz var ve bu çözümleri kullanan şirketlerin çoğunun ham SQL kullandığına inanıyorum. Gelecekteki projelerde tekrar kullanabileceğimiz daha genel bir çözüm yaratmak istiyoruz. Ne gibi zorluklarla karşılaşabiliriz?

Güncelleme 2: Tercih edilen dil python, ancak ilkelerle ilgileniyorum. Bu soru aslında benim için, çünkü zaten engellemeyen ORM'ye sahip platformlara bakacağım.


2
"Engellemeyen ORM" nedir? Verileri almadan önce nasıl görüntüleyebilirsiniz ?
Robert Harvey

6
@RobertHarvey: eşzamansız erişim aslında kulağa hoş geliyor. ORM, veri alındığında "etkinleştirmek" için bir geri arama veya benzeri bir yöntemle sağlanacaktır. Aksi takdirde, kullanıcı arayüzü yanıt hızını garanti etmek için ORM'nizin ayrı bir iş parçacığında bölünmesi gerekir.
Marjan Venema

@ BremenanVenema, evet, geri arama desteği ile ORM istiyorum.
Nikolay Fominyh

1
Öyleyse neden sadece en sevdiğiniz senkron ORM ile asenkron geri çağrıları kullanmıyorsunuz? stackoverflow.com/q/1239035
Robert Harvey

@RobertHarvey, çünkü senkron ORM senkronize olmayan sunucuyu engeller.
Nikolay Fominyh

Yanıtlar:


2

ORM geliştirilirken hangi sorunlarla karşılaşılabilir?

Nesne İlişkisel Empedans Uyuşmazlığını köprülemek için gereken sorunların çamaşır listesinin yanı sıra her RDBMS satıcısı tarafından sağlanan SQL deyimlerini ele almanız gerekir . Gereksinimleriniz ne kadar gelişmiş olursa, sorunlarınız bu bölümde o kadar kötü olur: örneğin, sonuç sayfalaması uygulamak için oluşturduğunuz SQL, Oracle, SQL Server ve mysql arasında önemli ölçüde farklılık gösterir. Neyse ki, bu engelleme ve engellemeyen ORM uygulamaları arasında farklı değildir, bu nedenle Python için açık kaynaklı bir ORM varsa, neredeyse tüm bu sorunları ele almak için ondan büyük ölçüde ödünç alabilirsiniz.

Engellemeyen erişimin desteklenmesi bir ORM'nin karmaşıklığını önemli ölçüde artırır mı?

Karşılaşacağınız en büyük sorun, RDBMS'nin kendisine erişmek için bağlantı kütüphanesinin engelleme olmasıdır. Bu, ele almanız gereken başka bir farktır. Kullanıcılarınız tarafından görülmeyen konuları yönetmek sizin için ek bir zorluk olacaktır. Buna ek olarak, isteğe bağlı bağımlılıkların yüklenmesi zordur, çünkü işlem çerçevenizdeki kullanıcılar tarafından eşzamanlı olarak algılanır: sonuçta, nesnelerinin bir koleksiyon özelliğine erişmenin ne zaman uygun olduğu konusunda normalde bir bildirim beklemezler.

Neden bu kadar az engellemeyen ORM var?

Sadece bu son nokta üzerinde spekülasyon yapabilirim, ancak bence bu tür çerçeveler için düşük talep ile ilgili: çünkü uygulama kodunuza gerektiği gibi başka bir iş parçacığı düzeyi ekleyerek kısmen engellemeyen ORM'yi simüle edebilir ve düzenli engellemeyi koruyabilirsiniz başka her yerde, bunun için özel bir çerçeve geliştirmek yetersiz görünüyor.


Emin değilim, bu sorunun cevabı daha iyi olabilir. Teşekkürler.
Nikolay Fominyh

6

Hangi dili kullandığınızı söylemediniz, bu yüzden Node.js'yi ve bunun için bir ORM'yi önereceğim: Düğüm ORM , düğümdeki her şey zaman uyumsuz, bu farklı değil.


Soru güncellendi.
Nikolay Fominyh
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.