2010-12-29 37 views
6

Nhiều lần tôi muốn có cấu trúc dữ liệu tương tự như Bảng SQL nơi bạn có thể chọn trên nhiều trường và nhiều trường khác nhau. Tương tự như việc thực hiện SQL trong bộ nhớ ngoại trừ việc tôi không muốn lưu trữ nhiều đối tượng đó trong cấu trúc dữ liệu.Java trong bộ nhớ SQL Bảng giống như cấu trúc dữ liệu

Tôi cũng yêu cầu đối tượng được tuần tự hóa thông qua các phương tiện Java chuẩn.

Tôi đã thực hiện việc này trước với nhiều bảng băm hoặc khóa băm tùy chỉnh nhưng kết quả là rất nhiều mã và rất cụ thể vấn đề.

Tôi cũng đã sử dụng Groovy với khả năng đóng và đường dẫn để trợ giúp nhưng tôi không luôn có sẵn (các dự án khác nhau).

EDIT: Tôi nghĩ vấn đề của tôi là nhiều hơn một vấn đề đối tượng traversal/lựa chọn Dưới đây là một số dự án thú vị:

Tuy nhiên, nhược điểm của hầu hết các dự án này là chậm hơn nhiều so với truy cập trực tiếp đối tượng (không phản chiếu) và chắc chắn chậm hơn chỉ mục (băm).

+0

Bạn sẽ truy vấn một số ảnh chụp độc lập của dữ liệu? Điều gì về đa luồng, khóa, giao dịch, chèn/cập nhật? Nếu bất kỳ điều nào ở trên có thể xảy ra - tôi sẽ đồng ý với @Alex 100%. – Osw

+0

@Osw Không có điều này hoàn toàn thuận tiện. Tôi không cần bản chất ACID của RDBMS. Tôi cần khả năng truy vấn. –

+0

nghĩ rằng các liên kết này có thể hữu ích: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html và http://almaer.com/blog/hibernate-3-testing- with-in-memory-pluggable-persistence – Osw

Trả lời

3

JavaDBHSQLDB, trong số những người khác, có cơ sở dữ liệu trong bộ nhớ đầy đủ.

+0

Vấn đề với những kẻ đó là không cho tôi cấu trúc dữ liệu mà tôi có thể sắp xếp/tuần tự hóa. Tôi đang tìm thứ gì đó mà tôi có thể XStream. –

+0

Mặc dù tôi cho rằng tôi có thể tạo một số loại đối tượng dữ liệu chung để biểu diễn một bảng và trên unmarshal được nạp vào một bộ nhớ đơn trong bộ nhớ nhưng điều này có vấn đề về an toàn luồng nếu không an toàn và nhiều luồng chặn nếu nó là. –

+0

Tôi nghi ngờ bạn sẽ tìm thấy một cái gì đó thỏa mãn cả hai yêu cầu. Đề nghị của tôi: sử dụng một POJO tuần tự hóa để chụp nhanh các bảng trong db trong bộ nhớ, và sau đó tuần tự hóa nó. Đi theo cách khác sẽ là tầm thường là tốt, chỉ unmarshall XStream vào một POJO và sau đó tải dữ liệu vào db trong bộ nhớ. – RobertB

2

Điều gì khiến bạn lo ngại về việc sử dụng bộ nhớ SQL trong bộ nhớ cho các mục đích này? Bạn sẽ tiết kiệm được rất nhiều thời gian phát triển; hiệu suất trên không thực sự không đáng kể. Bạn có nguy cơ nhiều hơn bằng cách cố gắng thực hiện điều này cho mình.

+2

Nghe có vẻ như (đối với tôi), anh ấy đang tìm kiếm một giải pháp thay thế để xây dựng cho riêng mình. Ngoài ra, đây không thực sự là một câu trả lời và có thể tốt hơn như là một bình luận về câu hỏi ban đầu. – RobertB

+0

Tôi không muốn xây dựng của riêng mình (do đó Q). Tôi không thể chỉ sử dụng một cơ sở dữ liệu trong bộ nhớ các bảng không phải là cấu trúc dữ liệu tuần tự. Nói cách khác tôi không thể gửi một bảng db toàn bộ qua dây thông qua JAXB (nhập công nghệ tuần tự yêu thích của bạn ở đây) hoặc lưu nó vào một tập tin. –

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