Hangisi daha iyi H2 veya HSQLDB? [kapalı]


85

HSQLDB 2.0 yakında piyasaya sürülecek. Bildiğim kadarıyla çoğu kullanıcı HSQLDB'den H2'yi tercih ettiği için H2'den daha iyi performans gösterecek mi merak ediyorum. HSQLDB 2.0'ın MVCC desteğiyle ilgileniyorum. H2 üzerindeki MVCC'nin hala deneysel olduğunu öğrendim. Destek / dokümantasyon, eşzamanlılık, performans açısından ikisi arasında hangisi daha iyi?


6
Kullanım durumunuz nedir? Verilerinize karşı hangi sorguları gerçekleştireceksiniz? Verileriniz ne kadar büyük? Başvurunuz ağır okuyor veya yazıyor mu?
Matt

28
Tamamen iyi bir soru daha kapandı.
rtcarlson

Cevaplara odaklanmanın performans gibi görünmesini büyüleyici buluyorum, soru sorulduğunda sadece yönlerden biri olarak bahsediliyor. Support / doc, kullanılabilirlik (kullanım kolaylığı, sezgisellik, özellik seti), güvenilirlik vb. Gibi diğer alanlarla çok daha fazla ilgilenirim.
StaxMan

Yanıtlar:


61

Lütfen bu cevabı 2011'de verdiğimi unutmayın. Güncel olmayabilir

Şirketim , her iki veritabanını da destekleyen bir veritabanı soyutlama kitaplığı ( jOOQ ) geliştiriyor . Entegrasyon testlerimiz, saklı yordamların ve işlevlerin çağrılması, diziler, iç içe geçmiş seçimler, vb. Dahil olmak üzere birçok işlevi kapsamaktadır . DML söz konusu HSQLDB 2.1olduğunda H2 1.3, küçük veritabanlarından biraz daha hızlı olduğunu deneyimledim .

Bununla birlikte, HSQLDB, DDL işlemlerinde ve örneği başlatırken / kapatırken, küçük bir veritabanı için bile (H2'nin depolanan işlevlerini her veritabanı başlangıcında javac ile yeniden derlemesi nedeniyle!) H2'den yüksek performans gösterir . Bu, depolanan işlevleri saklama yönteminize bağlıdır. Görünüşe göre, bu oldukça jOOQ'a özgü bir "sorun", ayrıca Thomas Mueller'in yorumuna bakın.

Öte yandan, kullanıcı çöp kutusuna katılıyorum, performansı makul bir şemaya ve kullanım senaryosuna göre kendiniz için test etmelisiniz.


7
Saklanan işlevler, yalnızca HSQLDB'de bulunmayan bir özellik olan (bildiğim kadarıyla) "kaynak kodu olarak" saklanırsa yeniden derlenir. Önceden derlenmiş depolanan işlevleri kullanırsanız, böyle bir ek yük olmaz.
Thomas Mueller 20'11

2
@ThomasMueller: Teşekkürler, bunu bilmiyordum. Bu, entegrasyon testlerimi büyük ölçüde hızlandırmaya yardımcı olacak. Cevabımı buna göre uyarlayacağım. HSQLDB, daha güçlü bir IMO olan PL / SQL benzeri bir yordamsal dile sahiptir. Yine de, bu dilin önceden derlenmiş veya yorumlanmış olup olmadığından emin değilim ...
Lukas Eder 20'11

45

Hem HyperSQLve H2 Databasetest, özel bir kullanım için daha uygun olduğunu belirlemek için en iyi yaklaşım olabilir, böylece, oldukça saydamdır. Birini ve diğerini içeren karşılaştırmalar mevcuttur. Ortak bir mirası paylaşıyorlar ve her ikisi de açık kaynak .


10
"çöp kutusu önemli bir tasarım aracıdır" - loc. cit.
trashgod

3
Bu "miras" bağlantısı için teşekkürler. Tarihi harika bir şekilde özetliyorlar. Önce HSQLDB (Hypersonic SQL) geldi, sonra H2 geldi, ancak HSQLDB ve H2 aynı kodu paylaşmıyor ve bugün itibariyle ayrı projeler.
özelk1

1
@ specialk1st: Doğru, bu durumda miras ortak bir kod değil, ortak bir yazardır.
trashgod
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.