Justin Cave, bunun gereksiz veriye yol açabileceği konusunda doğrudur, ancak bu gerçekten veritabanınızı nasıl tasarladığınıza bağlıdır.
Bütün bir nesneyi bir blob içine serileştirme yaklaşımı, buradaki çoğu insanın düşündüğü kadar çirkin değildir. Aslında, bazı uygulamalar için, burada açıkladığım gibi, yapabileceğiniz en iyi tasarım olabilir: /programming//a/12644223/1121352 .
Aslında, bir nesneyi seri hale getirmek en az iki fayda sağlar:
1- Impedence uyumsuzluğunu azaltmak : Bazı Java tipleri SQL'de mevcut değildir, özellikle de çok sayıda sınıf ve özel tip kullanıyorsanız, Java nesnelerinden SQL'e ileri geri dönüştürme büyük bir güçlük olabilir ve hatta belirsizliklere yol açabilir.
2- Şemanızda daha fazla esneklik . Aslında, ilişkisel şemalar aynı yapıyı paylaşan veriler için gerçekten harikadır, ancak tek bir sınıftaki nesnelerinizden bazıları çalışma zamanındaki koşullara bağlı olarak farklı özelliklere sahipse, ilişkisel şemalar iş akışınızı önemli ölçüde engelleyebilir.
Bu nedenle, kesinlikle bu yaklaşımın faydaları vardır (en azından bu ikisi, ama kesinlikle bahsetmediğim diğerleri), ama elbette, ödenmesi gereken büyük maliyet, neredeyse tüm ilişkisel şemaların yararlarını kaybetmenizdir.
Bununla birlikte, veritabanınızı dikkatlice tasarlarsanız her iki dünyanın en iyisini elde edebilirsiniz: yine de her nesne için benzersiz olan öznitelikleri kullanarak bir ilişki şeması (yani benzersiz anahtar sütunlar) ayarlayabilir ve ardından nesneyi blob içinde saklayabilirsiniz. . Bu şekilde, nesnenin özniteliklerine göre tanımlanmış benzersiz bir tanımlayıcı verildiğinde nesnenin hızlı bir şekilde alınmasını sağlayabilirsiniz, ayrıca fazlalık oranını azaltıp, çarpışma uyumsuzluğunu yok edip Java nesnelerinin tam esnekliğini koruyabilirsiniz.
Yan not olarak, bazı DB üreticileri tarafından ilişkisel ve nesne modellerini birlikte harmanlama denemeleri, PostSQL ve PostgreSQL'deki JSON veri türü gibi, böylece JSON'yu doğrudan herhangi bir ilişkisel sütun gibi işleyebilmeniz ve SQL3 ve OQL (Nesne Sorgu Dili) eklemek (sınırlı) nesneleri SQL içine destekler.
Sonunda, tüm bunlar ilişkisel model ile nesne modeli arasında bir tasarım ve uzlaşma sorunudur.
/ Yorumları okuduktan sonra EDIT : tabii ki, eğer verileriniz aranabilir ise ("sorgulanabilir"), verilerinizi blob olarak saklamamalısınız. Ancak verilerinizin bazı bölümlerinin aranabilir olması yerine, bir tür meta-veri olması gerekiyorsa, bu veri bölümünü bir blob içindeki bir nesne olarak saklamak, özellikle de bu meta-veri esnek bir yapıya sahipse, iyi bir çözüm olabilir. ve nesneden nesneye değişebilir.