2010-10-11 37 views
68

Tôi đang cố gắng đánh giá các kho nội dung (JSR283) như JackrabbitModeShape nhưng tôi phải thú nhận rằng tôi không hiểu vấn đề nào được giải quyết ngay từ đầu và ngay cả khi đó là lựa chọn tốt cho dự án. Những trường hợp nào bạn nghĩ là giải pháp tốt nhất để áp dụng? Không phải là điều tương tự như cơ sở dữ liệu quan hệ, ngoại trừ kích thước? Tại sao? Thêm điểm để chỉ các ví dụ thực tế.Khi nào nên sử dụng JCR (kho lưu trữ nội dung) qua các tùy chọn khác?

Xin cảm ơn trước.

+8

Tôi nghi ngờ tôi là người duy nhất thích biết nội dung là gì và nó hoạt động như thế nào và khi nào/tại sao tôi có thể muốn sử dụng nó, chỉ trong trường hợp tôi gặp phải sự cố phù hợp với nó . – cHao

+0

Sẽ hữu ích nếu ai đó giải thích cách kho lưu trữ nội dung khác với dịch vụ thư mục (LDAP). Điều gì về nó khác với cơ sở dữ liệu NoSQL như thế nào? – Ryan

Trả lời

79

kho JCR khác với RDBMSes, bởi vì một kho lưu trữ JCR:

  • là thứ bậc, cho phép bạn để tổ chức nội dung của bạn trong một cấu trúc phù hợp với chặt chẽ nhu cầu của bạn và nơi mà thông tin có liên quan thường được lưu trữ gần nhau và do đó dễ dàng điều hướng
  • linh hoạt, cho phép nội dung thích ứng và phát triển, sử dụng hệ thống loại nút có thể hoàn toàn "sơ đồ" để hạn chế đầy đủ (ví dụ như cơ sở dữ liệu quan hệ)
  • sử dụng API Java chuẩn ví dụ: javax.jcr)
  • tóm tắt nơi thông tin thực sự được lưu trữ: nhiều triển khai JCR có thể lưu trữ nội dung trong nhiều cơ sở dữ liệu quan hệ và các cửa hàng khác, một số có thể trưng ra các cửa hàng không phải JCR thông qua API JCR và một số có thể liên kết nhiều cửa hàng thành một kho ảo duy nhất .
  • hỗ trợ các truy vấn và tìm kiếm toàn văn ra khỏi hộp
  • hỗ trợ các sự kiện, khóa, phiên bản, và các tính năng khác

Bạn chắc chắn có thể xây dựng toàn bộ hoặc một số các tính năng này trong ứng dụng của riêng mình, nhưng điều đó có thể sẽ xa hơn so với mục đích chính của ứng dụng của bạn.

Loại ứng dụng nào có thể hưởng lợi từ các tính năng này? Các hệ thống quản lý nội dung đã sử dụng kho lưu trữ trong một thời gian dài, và JCR (và Jackrabbit) thực sự phát triển ra khỏi nhu cầu về một API chuẩn chung để truy cập các kho nội dung khác nhau (xem JSR-170JSR-283).

Ví dụ khác là hệ thống quản lý tài liệu, quản lý tệp điện tử (thường là hình ảnh tài liệu giấy) và cung cấp tìm kiếm và truy vấn. DMS đã sử dụng kho lưu trữ trong một thời gian.

Hệ thống quản lý hiện vật có thể sử dụng kho lưu trữ để quản lý các tạo phẩm kỹ thuật số (thường là tệp) cùng với thông tin bổ sung (siêu dữ liệu). JCR hoạt động tốt ở đây, bởi vì bạn có thể lưu trữ siêu dữ liệu trong cùng một vị trí như các tệp: những người hiểu các thuộc tính bổ sung này có thể thấy chúng, những người không quan tâm không phải nhìn thấy chúng. Tôi biết Artifactory là triển khai kho lưu trữ Maven sử dụng JCR. Cũng có các kho lưu trữ để quản lý các tạo tác dịch vụ web, các tạo tác dịch vụ dữ liệu và các tạo phẩm thử nghiệm.

Nhưng kho lưu trữ JCR không dành cho quản lý tệp. JCR sử dụng một khái niệm đơn giản về một hệ thống phân cấp các nút, trong đó các nút có thể chứa các thuộc tính được đặt tên (với một hoặc nhiều giá trị) và trẻ em. Các thuộc tính và nút con được cho phép được quyết định hoàn toàn bởi các kiểu nút, có thể được thay đổi và trộn lẫn khi cần trên cơ sở từng nút. JCR xác định trước một số kiểu nút dựng sẵn thường cần thiết, giống như các kiểu được sử dụng để biểu diễn các tệp và thư mục trong kho lưu trữ. Bạn có thể sử dụng lại các loại được cài sẵn này, mở rộng chúng hoặc viết của riêng bạn. Nhiều người ủng hộ việc sử dụng mixins gần như là các khía cạnh hoặc các khía cạnh, để nếu một nút cần thực hiện trên một khía cạnh, bạn có thể chỉ cần thêm một mixin vào nút.

JCR được thiết kế để dễ dàng hỗ trợ nhập nội dung XML vào kho lưu trữ, trong đó mỗi phần tử được ánh xạ tới một nút và mỗi thuộc tính được ánh xạ tới một thuộc tính. Và rất nhiều thứ được biểu diễn bằng cách sử dụng XML (hoặc YAML hoặc JSON), và tất cả điều này có thể dễ dàng được biểu diễn và lưu trữ trong một kho lưu trữ JCR. Ví dụ, hãy xem xét một kho lưu trữ JCR lưu trữ thông tin cấu hình (thông thường có thể được lưu trữ trong nhiều tệp XML). JCR có thể phiên bản thông tin đó, cho phép truy cập vào nó từ nhiều quy trình, cho phép truy vấn và tìm kiếm và thông báo cho (các) ứng dụng khi nội dung thay đổi.

Có một số tổng quan tốt về JCR với nhiều chi tiết và ví dụ hơn. Một vài trong số này là:

+0

Giới thiệu API kho lưu trữ nội dung Java của Titus Barik <- liên kết bị hỏng. –

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