Nesneye Dayalı veritabanları neden İlişkisel Veritabanları kadar kullanılmıyor? [kapalı]


18

Birçok ilişkisel veritabanı yönetim sistemine (RDBMS) rastladım. Ancak son zamanlarda hazırda bekletme modunu kullandım, bu da Nesneye Dayalı veritabanlarının neden daha popüler olmadığını merak etmemi sağladı.

Java veya C # gibi nesne yönelimli diller çok popülerse, neden nesne yönelimli veritabanı yönetim sistemleri (OODBMS) de daha popüler değildir?


1
"NoSQL" yaklaşımı artık oldukça popüler. RDBMS'ler sınırlı ve sınırlayıcıdır ve neyse ki, şimdi çabucak zemini kaybediyorlar.
SK-logic

Oodb olarak adlandırdığınız şey nedir? hibernate sadece bir oo arayüzü ile rdbms ile iletişim kurmak için bir çerçevedir.
Simon Bergot

2
Benzer bir soru 2009'da SO hakkında sorulmuştur, bkz. Stackoverflow.com/questions/1350044/… IMHO verilen hemen hemen her cevap bugün hala geçerlidir.
Doc Brown

@Oonb tarafından yazılan, yani nesne odaklı veritabanları

1
@Simon: Versant bir oodb (iki farklı şirkette üretimde gördüm).
Giorgio

Yanıtlar:


11

Bunun birçok nedeni var.

  1. Birçok geliştirici yalnızca ilişkisel veri modellemesinde deneyimlidir. OO veritabanlarını kullanmak için, verileri modellemenin ve düşünmenin tamamen farklı bir yolunu öğrenmeleri gerekir. Bu ya çok zor ya da oldukça zaman alıcıdır.
  2. İlişkisel DB'lerin olgunlaşması için çok zamanları vardı. Serbest ilişkisel DB'ler bile gelişmiş optimizasyon ve indeksleme tekniklerine sahiptir. Ayrıca, ilişkisel verilerin saklanması ve dizine eklenmesi kolaydır. OO veritabanları için de aynı şey söylenemez.
  3. İlişkisel ve OO modelleri ortaya çıkmaya başladığında. İlişkisel, matematiksel olarak "doğru" olması ve veri kaydetme ve sorgulama için standart olması nedeniyle büyük bir kenara sahipti. OO'nun hiçbir şeyi yoktu.
  4. [spekülasyon] Birçok büyük oyuncu ilişkisel DB'lerini yapmak için çok fazla kaynak koydu. Bunun yerine OO DB'leri desteklemek ters etki yaratacaktır. Birçoğu bunun yerine OO ilkelerini ilişkisel modele entegre etmeye yatırım yaparak mevcut DB'lerin çoğunu nesne-ilişkisel olarak adlandırdı. IMO bu modeller saf ilişkisel veya saf OO'dan daha kötüdür. [/ Spekülasyon]
  5. Unutulmaması gereken son nokta, birçok geliştiricinin veriyi modellemek için OO yolunu gerçekten anlamadığıdır. Bu genellikle yetersiz anemik modellerle sonuçlanır. Ucuz ve deneyimsiz geliştiricilere güvenen pek çok geliştirme şirketi, tüm CS kolejlerinde sert ve kanıtlanmamış OO yaklaşımı seçmek yerine öğretilen basit, ilişkisel modeli tercih eder. [/ Rant]

5
Sonuncusu hariç tüm noktalarınıza katılıyorum. Geliştiricilerin ilişkisel veritabanlarını nesne veritabanlarından daha kolay dağıtmalarının daha kolay olduğunu düşünüyorum. Kompozit anahtarlar ve kırık ilişkiler çok yaygındır, ancak bana göre bir sınıf hiyerarşisini karıştırmak en azından biraz daha zor görünüyor.
Tjaart

@Tjaart sınıf hiyerarşilerini bozmak OO'daki çoğu geliştirici için bir norm gibi görünüyor.
Bent

10

Veritabanları ilk ortaya çıktığında, OOP hala programlamanın yolu değildi. İlişkisel veri tabanları ise çok çekiş kazandı. Ve 80'li yıllarda IBM tarafından sunulan SQL hızla tüm veritabanlarının ortak dili haline geldi .

OOP popüler hale geldiğinde bazı girişimler oldu, ancak bazı sorunlar var. İlk olarak, gerçek OODBMS'nin uygulanması gerçekten zordur. İlişkisel bir veritabanı olması durumunda, bir tablo ve ilgili dizinler oldukça basit yapılardır (örn. B-ağaçları). Başka bir neden, ilişkisel modelin arkasında çok fazla teori olması, doğrudan matematiksel küme teorisinden türetilmiş olmasıdır. İlişkisel bir veritabanını doğru şekilde tasarlamanın bilinen yolları vardır (normalizasyonu düşünün vb.). Ve son fakat aynı derecede önemli olarak, insanlar zaten SQL'e çok alıştılar.

Günümüzde NoSQL çözümleri, çoğu durumda OODBMS'ye doğru bir adım değildir. Birçoğu hala ilişkiseldir, sadeceJOINs . Bazıları aslında nesne depolarıdır, ancak nesneler arasındaki ilişkilerin farkında olmadıkları için gerçekte OODBMS değildir.

OODBMS için bu kadar güçlü bir itiş olmamasının bir başka nedeni de "fakir adamın OODBMS" çözümü - ORM'ler olmasıdır. Bu, iyi bilinen, kararlı ve test edilmiş DB motorları tarafından desteklendikleri için büyük bir popülerlik kazanmıştır, ancak nesnelerle eşleme sağlarlar. Tabii ki, bunlar gerçek OODB'ler değil.


"OODBMS için bu kadar güçlü bir itiş olmamasının bir başka nedeni de" fakir adamın OODBMS "çözümü - ORM'ler" dir: Çok iyi bir nokta! +1.
Giorgio

Bu doğru değil. MUMPS 1966'da tasarlandı ve sadece 1974'te, ilk araştırma projesi IBM tarafından dünyanın ilk RDBMS'si olan System R'yi geliştirmek için başlatıldı. Oracle, dünya çapında ilk ticari sınıf RDBM'lerini, InterSystems M'nin ortaya çıktığı aynı yıl 1979'da yayınladı. Soru bundan sonra ne olduğu. Cevap muhtemelen ODBMS'lerin raporlama için optimize edilmemesine karşın, LOB uygulamalarının kullanım vakalarının çoğunun okumalara karşı ağır okuma-yazma dengesizliği vardır.
Alexey Zimarev

-2

OODBMS karmaşık verileri depolamakta iyidir. Bununla birlikte, çoğu zaman, OO dillerini kullanırken bile, gerekli veriler nispeten basittir. Dolayısıyla geleneksel RDBMS daha uygundur.


2
Veriler neredeyse hiç basit değildir ve sanırım OODB'nin neden daha popüler olmadığını açıklayamazsınız, çünkü sonuçta ORM çok iyi gidiyor.
Tjaart
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.