ปัญหา ORM ที่ไม่ปิดกั้น


9

ฉันถามคำถามเกี่ยวกับ SO และพบว่าไม่มี ORMs ที่ไม่มีการบล็อกสำหรับเว็บเฟรมโปรดของฉัน โดยไม่ปิดกั้นฉันหมายถึง ORM ด้วยการสนับสนุนการเรียกกลับสำหรับการดึงแบบอะซิงโครนัส ORM จะมาพร้อมกับการติดต่อกลับหรือบางอย่างเพื่อดำเนินการเมื่อได้รับข้อมูล

ฉันต้องการสร้าง แต่ฉันมีคำถามบางอย่างที่ขัดขวางไม่ให้ฉันเริ่มพัฒนา:

  • อาจมีปัญหาอะไรบ้างเมื่อพัฒนา ORM
  • การสนับสนุนการดึงข้อมูลที่ไม่มีการบล็อกช่วยเพิ่มความซับซ้อนของ ORM ได้หรือไม่?
  • ทำไมถึงมี ORM ที่ไม่มีการปิดกั้นจำนวนน้อย

อัปเดต:ดูเหมือนฉันต้องปรับปรุงคำถามของฉัน เรามีวิธีแก้ปัญหาที่อนุญาตให้เรารับข้อมูลในแบบที่ไม่ปิดกั้นและฉันเชื่อว่า บริษัท ส่วนใหญ่ที่ใช้โซลูชันดังกล่าวใช้ SQL ดิบ เราต้องการสร้างโซลูชันทั่วไปที่สามารถใช้ซ้ำในโครงการในอนาคต เราอาจพบปัญหาอะไรบ้าง

อัปเดต 2:ภาษาที่ต้องการคือไพ ธ อน แต่ฉันสนใจในหลักการ คำถามนี้เป็นคำถามสำหรับฉันจริง ๆ แล้วฉันจะดูแพลตฟอร์มที่ไม่มี ORM บล็อกแล้ว


2
"ไม่ปิดกั้น ORM คืออะไร" คุณจะแสดงข้อมูลก่อนรับได้อย่างไร
Robert Harvey

6
@RobertHarvey: การดึงข้อมูลแบบอะซิงโครนัสฟังดูดีทีเดียว ORM จะมาพร้อมกับการโทรกลับหรือบางอย่างเช่น "เปิดใช้งาน" เมื่อได้รับข้อมูล มิฉะนั้น ORM ของคุณจะต้องถูกแยกออกจากเธรดแยกต่างหากเพื่อรับประกันการตอบสนองของ UI
Marjan Venema

@MarjanVenema ใช่ฉันต้องการ ORM ด้วยการสนับสนุนการโทรกลับ
Nikolay Fominyh

1
ดังนั้นทำไมไม่ใช้โทรกลับแบบอะซิงโครนัสกับ ORM ซิงโครนัสที่คุณชื่นชอบ? stackoverflow.com/q/1239035
Robert Harvey

@RobertHarvey เนื่องจากซิงโครนัส ORM บล็อกเซิร์ฟเวอร์อะซิงโครนัส
Nikolay Fominyh

คำตอบ:


2

อาจมีปัญหาอะไรบ้างเมื่อพัฒนา ORM

คุณจะต้องระบุรายการปัญหาที่ต้องใช้ในการเชื่อมโยงObject-Relational Impedance Mismatchและการจัดการกับ SQL ที่จัดทำโดยผู้จำหน่าย RDBMS แต่ละราย ยิ่งความต้องการของคุณก้าวหน้ามากขึ้นปัญหาของคุณก็จะยิ่งแย่ลงในแผนกนี้: ตัวอย่างเช่น SQL ที่คุณสร้างเพื่อใช้การจัดเพจผลลัพธ์จะแตกต่างกันอย่างมากระหว่าง Oracle, SQL Server และ mysql โชคดีที่มันไม่แตกต่างกันระหว่างการปิดกั้นและการใช้งาน ORM ที่ไม่ปิดกั้นดังนั้นหากมี ORM โอเพ่นซอร์สสำหรับ Python คุณจะสามารถกู้เงินจากมันเพื่อแก้ไขปัญหาเหล่านี้ได้เกือบทั้งหมด

การสนับสนุนการดึงข้อมูลที่ไม่มีการบล็อกช่วยเพิ่มความซับซ้อนของ ORM ได้หรือไม่?

ปัญหาที่ใหญ่ที่สุดที่คุณจะพบคือไลบรารีการเชื่อมต่อสำหรับการเข้าถึง RDBMS นั้นจะถูกบล็อก นี่คือความแตกต่างอื่นที่คุณต้องจัดการ การจัดการเธรดที่ผู้ใช้ของคุณมองไม่เห็นจะเป็นความท้าทายเพิ่มเติมสำหรับคุณ นอกจากนี้การโหลดการพึ่งพาตามความต้องการจะเป็นสิ่งที่ท้าทายเนื่องจากการดำเนินการถูกมองว่าเป็นแบบซิงโครนัสโดยผู้ใช้เฟรมเวิร์กของคุณ: โดยปกติพวกเขาไม่คาดหวังว่าจะมีการแจ้งเตือน

ทำไมถึงมี ORM ที่ไม่มีการปิดกั้นจำนวนน้อย

ฉันสามารถคาดเดาได้ในจุดสุดท้ายนี้เท่านั้น แต่ฉันคิดว่ามันเกี่ยวข้องกับความต้องการต่ำสำหรับเฟรมเวิร์กดังกล่าวเนื่องจากคุณสามารถจำลอง ORM ที่ไม่ปิดกั้นบางส่วนได้โดยการเพิ่มเธรดแอปพลิเคชันอีกระดับหนึ่งตามความจำเป็น ชนิดอื่นทุกที่การพัฒนากรอบพิเศษสำหรับมันจะดูไม่ดี


ไม่แน่ใจว่าถ้าคำตอบสำหรับคำถามนี้จะดีกว่า ขอบคุณ
Nikolay Fominyh

6

คุณไม่ได้พูดภาษาที่คุณใช้ดังนั้นฉันจะแนะนำ Node.js และ ORM สำหรับมัน: Node ORMทุกอย่างในโหนดนั้นเป็นแบบอะซิงก์ซึ่งไม่แตกต่างกัน


อัปเดตคำถามแล้ว
Nikolay Fominyh
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.