H2 หรือ HSQLDB ไหนดีกว่ากัน? [ปิด]


85

HSQLDB 2.0 จะเปิดตัวเร็ว ๆ นี้ ฉันสงสัยว่ามันจะมีประสิทธิภาพดีกว่า H2 หรือไม่เท่าที่ฉันรู้ผู้ใช้ส่วนใหญ่ชอบ H2 มากกว่า HSQLDB ฉันสนใจการสนับสนุน MVCC ของ HSQLDB 2.0 ฉันได้เรียนรู้ว่า MVCC บน H2 ยังอยู่ในการทดลอง เกี่ยวกับ support / documentation, concurrency, performance, ระหว่างสองอย่างไหนดีกว่ากัน?


6
กรณีการใช้งานของคุณคืออะไร? คุณจะตอบคำถามใดกับข้อมูลของคุณ ข้อมูลของคุณมีขนาดใหญ่แค่ไหน? ใบสมัครของคุณอ่านหรือเขียนหนักหรือไม่?
แมท

28
อีกคำถามที่ดีอย่างสมบูรณ์แบบปิด
rtcarlson

ฉันพบว่ามันน่าสนใจที่การมุ่งเน้นไปที่คำตอบดูเหมือนจะเป็นเรื่องประสิทธิภาพแม้จะมีคำถามเพียงอย่างเดียวที่กล่าวถึงมันเป็นแง่มุมหนึ่ง ฉันจะสนใจในด้านอื่น ๆ มากขึ้นจาก support / doc, การใช้งาน (ใช้งานง่าย, ใช้งานง่าย, ชุดคุณสมบัติ), ความน่าเชื่อถือและอื่น ๆ
StaxMan

คำตอบ:


61

โปรดทราบว่าฉันได้ให้คำตอบนี้ในปี 2011 มันอาจจะล้าสมัย

บริษัท ของฉันพัฒนาไลบรารีนามธรรมฐานข้อมูล ( jOOQ ) ซึ่งรองรับทั้งสองฐานข้อมูล การทดสอบการรวมของเราครอบคลุมฟังก์ชันการทำงานมากมายรวมถึงการเรียกใช้โพรซีเดอร์และฟังก์ชันที่เก็บไว้อาร์เรย์การเลือกที่ซ้อนกัน ฯลฯ ฉันพบHSQLDB 2.1ว่าเร็วกว่าH2 1.3สำหรับฐานข้อมูลขนาดเล็กเล็กน้อยเท่าที่เกี่ยวข้องกับ DML

อย่างไรก็ตาม HSQLDB สูงมีประสิทธิภาพดีกว่า H2 ในการดำเนินงาน DDL เช่นเดียวกับเมื่อเริ่มต้น / ปิดอินสแตนซ์แม้สำหรับฐานข้อมูลขนาดเล็ก (เนื่องจากฟังก์ชั่นที่จัดเก็บรวบรวม H2 ของแตงกับ javac ที่เริ่มต้นฐานข้อมูลทุก!) ขึ้นอยู่กับวิธีการจัดเก็บฟังก์ชันที่จัดเก็บไว้ เห็นได้ชัดว่านั่นเป็น "ปัญหา" ที่ค่อนข้างเฉพาะเจาะจงสำหรับ jOOQ โปรดดูความคิดเห็นของ Thomas Mueller ด้วย

ในทางกลับกันฉันเห็นด้วยกับถังขยะของผู้ใช้คุณควรทดสอบประสิทธิภาพกับสคีมาและกรณีการใช้งานที่สมเหตุสมผลด้วยตัวคุณเอง


7
ฟังก์ชันที่จัดเก็บไว้จะถูกคอมไพล์ใหม่ก็ต่อเมื่อจัดเก็บ "เป็นซอร์สโค้ด" ซึ่งเป็นคุณลักษณะที่ไม่มีใน HSQLDB (เท่าที่ฉันรู้) หากคุณใช้ฟังก์ชันที่จัดเก็บไว้ล่วงหน้าจะไม่มีค่าใช้จ่ายดังกล่าว
Thomas Mueller

2
@ThomasMueller: ขอบคุณฉันไม่รู้เรื่องนั้น ซึ่งจะช่วยเร่งการทดสอบการผสานรวมของฉันอย่างหนาแน่น ฉันจะปรับคำตอบตามนั้น HSQLDB มีภาษาขั้นตอนคล้าย PL / SQL ซึ่งเป็น IMO ที่ทรงพลังกว่า ฉันไม่แน่ใจว่าภาษานั้นมีการรวบรวมหรือตีความไว้ล่วงหน้าหรือไม่ ...
Lukas Eder

45

ทั้งสองอย่างHyperSQLและH2 Databaseค่อนข้างโปร่งใสดังนั้นการทดสอบอาจเป็นแนวทางที่ดีที่สุดในการพิจารณาว่าแบบใดเหมาะสมกับการใช้งานเฉพาะมากกว่า การเปรียบเทียบที่เกี่ยวข้องกับหนึ่งและอื่น ๆที่มีอยู่ พวกเขาร่วมกันร่วมกันมรดกและทั้งสองจะเปิด แหล่งที่มา


10
"ถังขยะเป็นเครื่องมือออกแบบที่สำคัญ" - loc อ้างอิง
ถังขยะ

3
ขอบคุณสำหรับลิงก์ "มรดก" พวกเขาสรุปประวัติศาสตร์ได้อย่างน่าอัศจรรย์ HSQLDB (Hypersonic SQL) มาเป็นครั้งแรกจากนั้นก็มาถึง H2 แต่ HSQLDB และ H2 ไม่ใช้รหัสเดียวกันและเป็นโครงการแยกกัน ณ วันนี้
specialk1st

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