ใช้ JPA (ไฮเบอร์เนต) VS กระบวนงานที่เก็บไว้

ฉันกำลังทำโปรเจ็กต์โดยใช้ ZK Framework, Hibernate, Spring และ Mysql

ฉันต้องสร้างแผนภูมิบางส่วนจากฐานข้อมูล Mysql แต่หลังจากที่ฉันคำนวณจำนวนออบเจ็กต์ที่ฉันต้องคำนวณค่าของแผนภูมิเหล่านั้น ฉันพบว่ามีออบเจ็กต์มากกว่า 1,400 รายการและจำนวนการสืบค้นและธุรกรรมเท่ากัน

ดังนั้นฉันคิดว่าถ้าใช้ขั้นตอนการจัดเก็บใน Mysql เพื่อคำนวณค่าเหล่านั้นและบันทึกไว้ในตารางแยกต่างหาก (โดยใช้สถาปัตยกรรมใกล้กับคลังข้อมูล) จากนั้นใช้เว็บแอปพลิเคชันของฉันเพื่ออ่านค่าของตารางเหล่านั้นและแสดงเป็นแผนภูมิ

ฉันต้องการทราบในแง่ของความเร็วและประสิทธิภาพวิธีใดดีกว่ากัน?

และขอบคุณ


person elmetni hamza    schedule 18.06.2014    source แหล่งที่มา


คำตอบ (1)


ไม่มีทางจะบอกได้จริงๆ โดยไม่มีรายละเอียดเพิ่มเติมมากมาย อย่างไรก็ตาม:

สิ่งที่คุณต้องการทำเรียกว่า Denormalization นี่เป็นเทคนิคที่ได้รับการยอมรับในการเร่งการรายงานและทำให้ง่ายขึ้น (หากไม่เป็นเช่นนั้น แสดงว่าการลดสภาวะปกติของคุณล้มเหลว!) เมื่อใช้งานได้จะมีข้อดีดังต่อไปนี้:

  • รายงานทำงานเร็วขึ้น
  • รหัสรายงานเขียนง่ายกว่า

ในทางกลับกัน:

  • ข้อมูลรายงานล้าสมัย มีเพียงข้อมูล ณ เวลาที่คุณคำนวณครั้งล่าสุด

รูปแบบที่รุนแรงในการทำเช่นนี้คือการใช้ฐานข้อมูล OLTP (ฐานข้อมูลมาตรฐาน) และส่งออกไปยังฐานข้อมูลการวิเคราะห์ (หรือที่เรียกว่าฐานข้อมูล Cube หรือ OLAP)

ปัญหาอย่างหนึ่งของ Denormalization คือ ก) โดยปกติแล้วต้องใช้ความพยายามอย่างมาก ข) เพิ่มโค้ดพิเศษซึ่งเพิ่มความซับซ้อนและทำให้ต้นทุนการสนับสนุนเพิ่มขึ้น และ ค) อาจไม่สร้างความแตกต่างเพียงพอ (หรือใดๆ) ด้วยเหตุนี้ จึงเป็นเรื่องปกติที่จะไม่ทำจนกว่าคุณจะรู้ว่าคุณมีปัญหา สิ่งนี้จะเกิดขึ้นเมื่อคุณได้ทำรายงานบนฐานข้อมูลพื้นฐานแล้ว และพบว่าการเขียนและ/หรือดำเนินการช้าเกินไปนั้นยากเกินไป ฉันขอแนะนำอย่างยิ่งว่าเมื่อคุณไปถึงจุดนั้นแล้ว คุณจะเข้าสู่ Denormalization

อาจมีหลายครั้งที่คุณไม่จำเป็นต้องทำเช่นนั้น แต่ฉันได้เห็นตัวอย่างดังกล่าวเพียง 1 ตัวอย่างเท่านั้นตลอดระยะเวลา 25 ปีของการพัฒนา และการตัดสินใจนั้นได้รับความช่วยเหลือจากความปรารถนาที่จะใช้ฐานข้อมูล OLAP โดยฝ่ายบริหารเพื่อจุดประสงค์ทางการเมือง

person simon at rcl    schedule 18.06.2014