Dự án của tôi cần RandomAccessFile
và tôi đã thực hiện nó.Nhưng khi thử nghiệm Truy cập Mutiple, nhiều vấn đề được tìm thấy. Nó không thể đảm bảo an toàn truy cập tệp, không có ngữ nghĩa ACID. Tôi cần một khung dựa trên RandomAccessFile
để giải quyết vấn đề này .Có bất kỳ công cụ hoặc khung công tác nguồn mở nào về giao dịch I/O, ngôn ngữ Java không?
Trả lời
Nếu mô hình của bạn ở mức trừu tượng phù hợp, việc khai báo một số phương pháp đồng bộ nên đảm bảo tính toàn vẹn.
Nếu bạn hoàn toàn cần phải chia sẻ ổ khóa tập tin giữa các JVM hoặc các quá trình nặng, bạn có thể muốn xem xét java.util.concurrent.locks.ReentrantReadWriteLock hoặc java.nio.channels.FileLock (từ javadoc):
API khóa tệp này nhằm mục đích ánh xạ trực tiếp tới khóa cơ sở gốc của hệ điều hành cơ bản . Do đó, các khóa được lưu giữ trên tệp sẽ hiển thị cho tất cả các chương trình mà có quyền truy cập vào tệp, bất kể ngôn ngữ trong đó các chương trình được viết.
Ồ, và Java: thread-safe RandomAccessFile chắc chắn xứng đáng được chú ý.
Chính xác những vấn đề bạn gặp phải là gì? Bạn có cần hỗ trợ đầy đủ ACID, với cách ly giao dịch đồng thời, rollback, vv Hay bạn "chỉ" cần một chút mạnh mẽ hơn để đối phó với một số loại thất bại? Giải pháp sẽ phụ thuộc vào yêu cầu của bạn.
Đây là danh sách các khung công tác giải quyết vấn đề của hệ thống tệp giao dịch.
Nếu ứng dụng của bạn chạy trong một Java EE máy chủ ứng dụng, bạn có thể có một cái nhìn tại
- JBoss Transactional File I/O, trông đầy hứa hẹn.
- Filera: File resource adapter, nhưng tôi không nghĩ đó là giao dịch
- JCA connector: a file system adapter, thực hiện của riêng tôi
Đối đồng bằng Java, bạn có thể có một cái nhìn tại
- commons-transactions, nhưng tôi cảm thấy giống như dự án đã chết
- có thể Java Content Repository (JSR-170 và JSR-283), nhưng đó là API cấp cao
Nói chung, việc có hệ thống tệp giao dịch rất phức tạp. Nếu không, bạn có thể tự mình tạo ra một thiết kế để cung cấp một số độ mạnh mẽ. Đây là an answer nơi tôi phác thảo một thiết kế cung cấp thường là đủ độ mạnh. Đảm bảo bạn cũng hiểu cách xả (ví dụ: FileOutputStream.flush
) hoạt động với API java File
để tăng cường độ mạnh mẽ. Nếu bạn muốn toàn bộ ACID độ bền thì việc lưu trữ dữ liệu trong cơ sở dữ liệu trở nên dễ dàng hơn nhiều.
Một lần nữa, giải pháp sẽ phụ thuộc vào mức độ mạnh mẽ chính xác mà bạn cần.Một số vấn đề có thể được giải quyết ở cấp thiết kế (ổ khóa, tuôn ra, vv), một số sẽ yêu cầu thư viện của bên thứ ba có giao dịch thực.
liên quan:
Khi bạn đang tìm kiếm có giao dịch (với thuộc tính ACID) trên các file hệ thống, XADisk có thể hữu ích cho bạn . Thay vì RandomAccessFile mà bạn đã đề cập, nó sử dụng FileChannel (Java NIO) trong nội bộ.
Vui lòng cho tôi biết nếu bạn có bất kỳ câu hỏi nào.
Xin cảm ơn, Nitin
- 1. Bất kỳ khung công tác NIO nào cho .NET?
- 2. Công cụ dịch mã nguồn mở?
- 3. Nguồn mở hoặc công cụ khung dây miễn phí
- 4. Có bất kỳ công cụ DRYer mã nào không?
- 5. Bất kỳ bộ công cụ web C/C++ nào tốt?
- 6. Có bất kỳ công cụ dòng lệnh nguồn mở nào để cấu trúc lại mã java không?
- 7. Có bất kỳ khung công tác web MVC nào hỗ trợ nhiều loại yêu cầu không?
- 8. Có bất kỳ khung công tác web hiện đại nào (Moose/PSGI) ngoài Catalyst không?
- 9. Có bất kỳ khung công tác web Haskell gốc, chức năng hơn nào không?
- 10. Có bất kỳ khung công tác web mục tiêu-C nào không?
- 11. Có bất kỳ khung công tác ORM nào cho Web SQL (javascript) không?
- 12. Xoắn (máy chủ asynch) vs Django (hoặc bất kỳ khung công tác nào khác)
- 13. Bất kỳ hướng dẫn nào về khung công tác GWT MVP chính thức?
- 14. Có bất kỳ khung công tác Java nào để phân tích cú pháp tệp nhị phân không?
- 15. Có bất kỳ công cụ nào có thể nội tuyến css không?
- 16. Có công cụ lint cho Ngôn ngữ Shading OpenGL không?
- 17. Có bất kỳ công cụ XSL Lint nào không?
- 18. Có bất kỳ khung công tác web MVC nào cho Haskell không?
- 19. Xác định khung công tác mở hoặc stagefright cho mediaplayer?
- 20. Có bất kỳ công cụ hoặc dự án nào để tạo tệp AZW không?
- 21. Những khung công tác và ngôn ngữ nào có thời gian phát triển thấp nhất?
- 22. Có bất kỳ công cụ tạo biểu đồ lớp nào cho mã nguồn python không?
- 23. Tìm kiếm khung công tác Flipbook. Bất kỳ lựa chọn thay thế nào cho Turn.js?
- 24. Mẫu mã nguồn mở/Công cụ khảo sát
- 25. Các khung công tác web Java
- 26. Bạn có biết bất kỳ công cụ phát hiện trực quan SQLite nào không?
- 27. Có bất kỳ khung công tác duy nhất nào để viết iOS, Android (và thậm chí cả Windows Phone) không?
- 28. Công cụ trực quan hóa nguồn mở
- 29. Tổng quan về thư viện và khung công tác Java
- 30. Kivy có phải là một khung công tác GUI không?