H2 hay HSQLDB cái nào tốt hơn? [đóng cửa]


85

HSQLDB 2.0 sẽ sớm được phát hành. Tôi tự hỏi liệu nó có hoạt động tốt hơn H2 hay không vì theo tôi biết, hầu hết người dùng thích H2 hơn HSQLDB. Tôi quan tâm đến hỗ trợ MVCC của HSQLDB 2.0. Tôi đã biết rằng MVCC trên H2 vẫn còn đang thử nghiệm. Liên quan đến hỗ trợ / tài liệu, đồng thời, hiệu suất, cái nào tốt hơn giữa hai cái?


6
Trường hợp sử dụng của bạn là gì? Bạn sẽ thực hiện những truy vấn nào đối với dữ liệu của mình? Dữ liệu của bạn lớn đến mức nào? Ứng dụng của bạn đọc hoặc viết có nặng không?
Matt

27
Một câu hỏi hoàn toàn tốt khác đã đóng lại.
rtcarlson

Tôi thấy điều thú vị là tập trung vào câu trả lời dường như là hiệu suất, mặc dù câu hỏi chỉ đề cập đến nó như một trong những khía cạnh. Tôi sẽ quan tâm nhiều hơn đến các lĩnh vực khác từ hỗ trợ / tài liệu, khả năng sử dụng (dễ sử dụng, trực quan, bộ tính năng), độ tin cậy và những thứ khác.
StaxMan

Câu trả lời:


61

Xin lưu ý rằng tôi đã cung cấp câu trả lời này vào năm 2011. Nó có thể đã lỗi thời

Công ty của tôi phát triển một thư viện trừu tượng hóa cơ sở dữ liệu ( jOOQ ), hỗ trợ cả hai cơ sở dữ liệu. Các bài kiểm tra tích hợp của chúng tôi bao gồm rất nhiều chức năng, bao gồm việc gọi các thủ tục và hàm được lưu trữ, mảng, các lựa chọn lồng nhau, v.v. Tôi thấy HSQLDB 2.1nó nhanh hơn một chút so H2 1.3với các cơ sở dữ liệu nhỏ theo như DML.

Tuy nhiên, HSQLDB vượt trội hơn H2 trong các hoạt động DDL cũng như khi khởi động / tắt phiên bản, ngay cả đối với một cơ sở dữ liệu nhỏ (do H2 biên dịch các hàm được lưu trữ làm mới bằng javac ở mỗi lần khởi động cơ sở dữ liệu!) . Điều này phụ thuộc vào cách bạn lưu trữ các chức năng được lưu trữ. Rõ ràng, đó là một "vấn đề" khá cụ thể của jOOQ, hãy xem thêm bình luận của Thomas Mueller.

Mặt khác, tôi đồng ý với người dùng, bạn nên kiểm tra hiệu suất dựa trên lược đồ và trường hợp sử dụng hợp lý cho chính mình.


7
Các hàm được lưu trữ chỉ được biên dịch lại nếu chúng được lưu trữ "dưới dạng mã nguồn", đây là một tính năng không có trong HSQLDB (theo như tôi biết). Nếu bạn sử dụng các hàm được lưu trữ được biên dịch trước thì sẽ không có chi phí này.
Thomas Mueller

2
@ThomasMueller: Cảm ơn, tôi không biết điều đó. Điều đó sẽ giúp tăng tốc độ kiểm tra tích hợp của tôi. Tôi sẽ điều chỉnh câu trả lời của mình cho phù hợp. HSQLDB có ngôn ngữ thủ tục giống PL / SQL, là ngôn ngữ IMO mạnh hơn. Tôi không chắc chắn mặc dù, nếu ngôn ngữ đó là tiền biên dịch hoặc giải thích ...
Lukas Eder

45

Cả hai HyperSQLH2 Databaseđều khá minh bạch, vì vậy thử nghiệm có thể là cách tốt nhất để xác định cái nào phù hợp hơn cho một mục đích sử dụng cụ thể. Có sẵn các so sánh liên quan đến cái này và cái kia . Họ chia sẻ một phổ biến di sản , và cả hai đều mở nguồn .


10
"thùng rác là một công cụ thiết kế quan trọng" - loc. cit.
trashgod

3
Cảm ơn vì liên kết "di sản" đó. Họ tóm tắt lịch sử khá tuyệt vời. Đầu tiên là HSQLDB (Hypersonic SQL) sau đó đến H2, nhưng HSQLDB và H2 không chia sẻ bất kỳ mã nào giống nhau và là các dự án riêng biệt cho đến ngày nay.
Specialk1

1
@ specialk1st: Đúng vậy, di sản trong trường hợp này là của một tác giả chung, không phải mã chung.
dirtygod
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.