2012-01-11 41 views
8

Tôi đang tìm một cơ sở dữ liệu mà tôi có thể sử dụng để lưu trữ dữ liệu về một số cổ phiếu nhất định trong một số năm. Có thể sẽ có vài nghìn bản ghi. Tôi đang viết một ứng dụng trong Java và Clojure, nó sẽ lấy dữ liệu từ cơ sở dữ liệu cục bộ này khi cần để hiển thị dữ liệu.Cơ sở dữ liệu để lưu trữ cục bộ

Tôi đã tự hỏi liệu có ai biết cơ sở dữ liệu tốt để làm việc với mục đích này không? Tôi chỉ có kinh nghiệm với MySQL đang chạy ở phía máy chủ.

Cơ sở dữ liệu nào sẽ dễ dàng nhất để làm việc với Clojure và Java để lưu trữ cục bộ?

Cảm ơn,

Adam

Trả lời

13

JDK 6 và cao hơn đi kèm với Java DB đó đủ tốt đối với trường hợp sử dụng của bạn.

+1

Là Java DB giống như Apache Derby. Tôi nghĩ rằng đó là nhưng chỉ muốn xác nhận nếu có bất kỳ sự khác biệt lớn? – adamjmarkham

+1

@adamjmarkham "Sun cho biết họ sẽ kết hợp Apache Derby với các bản vá lỗi của nó và gọi nó là" Java DB. "Động thái này bổ sung thêm một cơ sở dữ liệu khác để hỗ trợ ngày càng tăng của các ứng dụng mã nguồn mở." từ http://www.internetnews.com/dev-news/article.php/3570696/Sun+Backs+Apache+Derby+With+Java+DB.htm –

3

Đối với loại ứng dụng quy mô nhỏ, nó gần như chắc chắn sẽ dễ dàng nhất nếu bạn chọn một trong số rất nhiều embedded Java databases tốt.

sự lựa chọn hàng đầu cá nhân của tôi có lẽ sẽ là:

  • H2 - có lẽ là hiệu suất tinh khiết cơ sở dữ liệu Java tốt nhất tổng thể, và nếu bạn tin rằng họ benchmarks sau đó nó là nhanh hơn đáng kể so với MySQL và cơ sở dữ liệu thực sự khác nhất khi chạy trong một môi trường máy đơn lẻ.
  • Apache Derby - tốt tròn tất cả, trưởng thành và cũng được hỗ trợ (Oracle đã bao gồm một phiên bản thương hiệu như Java DB trong JDK gần đây)

Sau đó, bạn sẽ có thể sử dụng chúng khá dễ dàng bằng cách sử dụng công cụ JDBC tiêu chuẩn, vì vậy không khác nhiều so với MySQL.

Nếu bạn sau một DSL thực sự tốt đẹp để giao tiếp với cơ sở dữ liệu SQL với Clojure, bạn chắc chắn cũng nên xem Korma.

+1

Hãy lưu ý rằng "Apache Derby" được đề cập ở đây đã được hấp thụ vào Java và đổi tên thành "Java DB"; chúng chỉ là những cái tên khác nhau cho cùng một thứ. Apache Derby từng là một sản phẩm riêng biệt. Tôi đã nghiên cứu sự khác biệt và thậm chí không thể tìm đủ về tính năng hoặc hiệu suất để biện minh cho việc thêm một tệp jar khác vào dự án, vì vậy tôi sử dụng Java DB. – arcy

+0

hmmm sửa tôi nếu tôi sai nhưng không phải là Java DB trong JDK chỉ? Nếu bạn muốn triển khai cho người dùng cuối trên JRE (hoặc cho những người đang chạy một JDK cũ hơn), thì bạn vẫn cần thêm tệp jar ...... – mikera

3

Tôi đã sử dụng Apache Derby cho một ứng dụng tương tự (mặc dù được viết chủ yếu bằng Java). Họ đã chạy nó gần bốn năm nay, và thực hiện hơn 60.000 giao dịch với nó mà không có vấn đề lớn. Chỉ có lỗi thường xuyên trên một phần của tôi.

Derby là cơ sở dữ liệu giống như JavaDB, tuy nhiên với Derby dễ dàng hơn để theo dõi các bản phát hành vì bạn chỉ có thể bao gồm nó dưới dạng phụ thuộc, chứ không phải chờ đợi khi lần xuất hiện JDK tiếp theo.

Ngoài ra, IIRC, JavaDB chỉ được bao gồm trong JDK chứ không phải JRE.

2

Tùy thuộc vào bản chất của dữ liệu và ứng dụng của bạn và sự sẵn sàng và/hoặc hạn chế của bạn khi làm việc với một phương thức cơ sở dữ liệu mới, bạn cũng có thể xem xét một trong các cơ sở dữ liệu định hướng tài liệu, MongoDB hoặc CouchDB. Nếu dữ liệu và ứng dụng của bạn theo định hướng SQL, hãy sử dụng một trong các cơ sở dữ liệu được đề xuất.

Các vấn đề liên quan