Justin Cave ถูกต้องว่าสิ่งนี้สามารถนำไปสู่ข้อมูลที่ซ้ำซ้อน แต่ขึ้นอยู่กับวิธีการออกแบบฐานข้อมูลของคุณ
วิธีการซีเรียลไลซ์วัตถุทั้งหมดให้เป็นหยดนั้นไม่เป็นเรื่องอุกอาจเหมือนคนส่วนใหญ่ที่คิดว่าเป็น ในความเป็นจริงสำหรับบางโปรแกรมนี้สามารถออกแบบที่ดีที่สุดที่คุณสามารถทำตามที่ผมอธิบายที่นี่: /programming//a/12644223/1121352
อันที่จริงการทำให้วัตถุเป็นอนุกรมทำให้เกิดประโยชน์อย่างน้อยสองอย่าง:
1- ลดความต้านทานไม่ตรงกัน : Java บางประเภทไม่สามารถใช้ได้ใน SQL โดยเฉพาะถ้าคุณใช้คลาสและประเภทที่กำหนดเองจำนวนมากดังนั้นการแปลงไปมาจากวัตถุ Java ไปเป็น SQL อาจทำให้เกิดความยุ่งยากอย่างมาก
2- ความยืดหยุ่นมากขึ้นในแบบแผน ที่จริงแล้ว schema เชิงสัมพันธ์นั้นยอดเยี่ยมมากสำหรับข้อมูลที่ใช้โครงสร้างเดียวกัน แต่ถ้าวัตถุบางอย่างของคุณในคลาสเดียวสามารถมีคุณสมบัติที่แตกต่างกันขึ้นอยู่กับเงื่อนไขที่รันไทม์ schema เชิงสัมพันธ์สามารถขัดขวางเวิร์กโฟลว์ของคุณได้อย่างมาก
ดังนั้นอย่างแน่นอนมีประโยชน์กับวิธีนี้ (อย่างน้อยสองคนนี้ แต่แน่นอนคนอื่น ๆ ที่ฉันไม่ได้อ้างถึง) แต่แน่นอนค่าใช้จ่ายมากในการจ่ายเงินคือคุณเสียผลประโยชน์เชิงสัมพันธ์เกือบทั้งหมด
อย่างไรก็ตามคุณสามารถใช้ประโยชน์จากทั้งสองโลกได้อย่างดีที่สุดถ้าคุณออกแบบฐานข้อมูลของคุณอย่างรอบคอบ: คุณยังสามารถตั้งค่าสคีมาสัมพันธ์ (เช่น: คอลัมน์คีย์ที่ไม่ซ้ำกัน) โดยใช้แอตทริบิวต์ที่ไม่ซ้ำกันสำหรับแต่ละวัตถุแล้วเก็บวัตถุใน Blob . ด้วยวิธีนี้คุณยังสามารถมั่นใจได้ว่าการดึงวัตถุของคุณอย่างรวดเร็วเนื่องจากตัวระบุเฉพาะที่กำหนดโดยแอตทริบิวต์ของวัตถุของคุณลดความซ้ำซ้อนในขณะที่คุณทำลายความไม่ตรงกันของอิมพีแดนซ์และรักษาความยืดหยุ่นเต็มรูปแบบของวัตถุ Java
ในฐานะที่เป็นบันทึกด้านข้างมีความพยายามไม่กี่ครั้งจากผู้สร้าง DB บางคนในการผสมผสานความสัมพันธ์และโมเดลวัตถุเข้าด้วยกันเช่นประเภทข้อมูล JSON ในPostSQLและ PostgreSQL เพื่อให้คุณสามารถประมวลผล JSON ได้โดยตรงเช่นคอลัมน์เชิงสัมพันธ์ใด ๆ และ SQL3 และ OQL Query Language) เพื่อเพิ่มวัตถุ (จำกัด ) ที่รองรับลงใน SQL
ในท้ายที่สุดนี่เป็นเรื่องของการออกแบบและประนีประนอมระหว่างโมเดลเชิงสัมพันธ์และโมเดลวัตถุ
/ แก้ไขหลังจากอ่านความคิดเห็น: แน่นอนถ้าข้อมูลของคุณต้องสามารถค้นหาได้ ("queryable") คุณไม่ควรจัดเก็บข้อมูลของคุณเป็นหยด แต่ถ้าบางส่วนของข้อมูลของคุณไม่ได้หมายถึงสามารถค้นหาได้แต่เป็น meta-data บางชนิดดังนั้นการจัดเก็บข้อมูลส่วนนี้เป็นวัตถุภายใน blob อาจเป็นทางออกที่ดีโดยเฉพาะถ้า meta-data มีโครงสร้างที่ยืดหยุ่น และสามารถเปลี่ยนจากวัตถุเป็นวัตถุ