2009-02-07 26 views
6

Được cung cấp một tập hợp các tệp có siêu dữ liệu liên quan, các phương pháp được đề xuất để lưu trữ siêu dữ liệu này là gì?Phương pháp lưu trữ siêu dữ liệu được liên kết với các tệp riêng lẻ?

Một số định dạng tệp hỗ trợ lưu trữ siêu dữ liệu nội bộ (EXIF, ID3, v.v.), nhưng không phải tất cả các định dạng tệp đều hỗ trợ điều này, vì vậy các tùy chọn chung hơn là gì?

Một số siêu dữ liệu gần như chắc chắn sẽ là duy nhất (tiêu đề/mô tả/v.v), trong khi một số sẽ lặp lại các mức độ khác nhau (danh mục/thẻ/v.v).
Cũng có thể hữu ích khi nhóm siêu dữ liệu, nếu các loại thuộc tính khác nhau được yêu cầu.

Lý tưởng nhất, giải pháp phải bao gồm các khái niệm, thay vì triển khai ngôn ngữ cụ thể.

Trả lời

1

Một lựa chọn có thể là một cơ sở dữ liệu quan hệ, có cấu trúc như thế này:

FILE 
f_id 
f_location 
f_title 
f_description 

ATTRIBUTE 
a_id 
a_label 

VALUE 
v_id 
v_label 

METADATA 
md_file 
md_attribute 
md_value 

thi này có một số thông tin duy nhất (tiêu đề/mô tả), nhưng chủ yếu nhắm mục tiêu vào các nhóm lặp đi lặp lại của dữ liệu.

Đối với một số yêu cầu, các bảng ít chung chung khác có thể hữu ích hơn.


này có những ưu điểm của việc này là rằng cơ sở dữ liệu quan hệ là rất phổ biến, và rõ ràng rất giỏi xử lý các mối quan hệ và lưu trữ nhiều dữ liệu.

Tuy nhiên, đối với một số người sử dụng máy chủ cơ sở dữ liệu sẽ mang lại chi phí không thể mong muốn. Ngoài ra, máy chủ cơ sở dữ liệu khác với các tệp - chúng không được đặt cùng nhau và yêu cầu các phương thức tương tác khác nhau.

Cơ sở dữ liệu không (dễ) ngồi dưới sự kiểm soát phiên bản - có thể là điều tốt hay xấu, tùy theo quan điểm của bạn và nhu cầu cụ thể.

1

Văn bản thuần túy có một số lợi thế rõ ràng hơn bất kỳ điều gì khác. Một cái gì đó như

FileName = 'ferrari.gif' 
Title = 'My brand new car' 
Tags = 'cars', 'cool' 
Related = 'michaelknight.mp3' 

Tệp Picasa.ini của Picasa là một ví dụ điển hình cho loại siêu dữ liệu này. Ngoài ra, thay vì phát minh ra định dạng của riêng bạn, XML có thể đáng xem xét. Có rất nhiều bộ xử lý DOM sẵn có để xử lý định dạng này.

Sau đó, một lần nữa, nếu số lượng tệp và quan hệ giữa chúng rất lớn, cơ sở dữ liệu có thể tốt hơn.

+0

[Không có không có điều đó là plaintext] (http://www.joelonsoftware.com/articles/Unicode.html). Trong thực tế, tôi đang tìm kiếm một cách để lưu trữ mã hóa ký tự thiết lập văn bản dưới dạng siêu dữ liệu về tệp. –

+0

Đối với tất cả các mục đích thực tế, [UTF-8] (http://utf8everywhere.org/) là văn bản thuần túy. –

4

Để lưu trữ siêu dữ liệu trong cơ sở dữ liệu có một số ưu điểm nhưng vấn đề chính với cơ sở dữ liệu là siêu dữ liệu không được kết nối trực tiếp với dữ liệu của bạn. Nó mạnh mẽ hơn nếu metada ở lại với dữ liệu giống như tập tin đặc biệt trong thư mục hoặc một cái gì đó như thế.

Một số hệ thống tệp cung cấp chức năng đặc biệt có thể được sử dụng cho siêu dữ liệu - như NTFS Alternate streams. Thật không may, điều này có thể được sử dụng để lưu trữ siêu dữ liệu trong các trường hợp đặc biệt, bởi vì các luồng đó có thể dễ dàng bị mất khi sao chép dữ liệu vào hệ thống lưu trữ không hỗ trợ nó. Tôi tin rằng hệ thống tập tin linux cũng có cơ chế lưu trữ tương tự.

Dù sao, giải pháp phổ biến nhất là:

  • tập tin ẩn riêng biệt (s) (mỗi thư mục) mà giữ metadata
  • một số ứng dụng sử dụng đặc biệt thư mục ẩn với siêu dữ liệu (như lật đổ, cvs v.v.)
  • hoặc cơ sở dữ liệu (các loại) cho tất cả các ứng dụng cụ thể metada - cơ sở dữ liệu này có thể được sử dụng cho các mục đích cũng nhớ đệm trong hầu hết các trường hợp

IMO không có giải pháp mục đích chung. Tôi sẽ chọn lưu trữ siêu dữ liệu trong tệp ẩn (mạnh mẽ) với việc sử dụng cơ sở dữ liệu để truy cập nhanh và lưu vào bộ nhớ đệm.

2

Tôi nghĩ rằng "giải pháp" phụ thuộc rất nhiều vào những gì bạn sẽ làm với siêu dữ liệu.

Ví dụ: hầu như tất cả siêu dữ liệu chúng tôi lưu trữ (Nhiều bộ dữ liệu của dữ liệu khoa học) đều được cắt nhỏ và lưu trữ trong cơ sở dữ liệu. Điều này cho phép chúng tôi tạo các bộ dữ liệu để bảo toàn siêu dữ liệu chung giữa các tệp (như bạn nói, danh mục và thẻ) trong khi chúng tôi có cấu trúc tệp cụ thể (tiêu đề, thời gian bắt đầu/dừng, giá trị tối thiểu/tối đa, v.v.) các tệp ẩn, chúng tôi thực hiện rất nhiều tìm kiếm và mở giao diện của chúng tôi cho người tiêu dùng bên ngoài thông qua các dịch vụ web.

Nếu bạn đang lưu trữ siêu dữ liệu sẽ không được tìm kiếm, tệp ẩn hoặc tệp .xml chuyên dụng cho mỗi tệp "thực" không phải là một tuyến đường xấu cần thực hiện. Nó có thể đọc được về cơ bản bất cứ điều gì, có thể được chuyển đổi sang các định dạng khác nhau một cách dễ dàng, và sẽ không bị mất nếu bạn quyết định thay đổi cơ chế lưu trữ của bạn.

Siêu dữ liệu sẽ giúp bạn, không cản trở bạn. Tôi đã thấy (và là một phần của) các hệ thống lưu trữ siêu dữ liệu trở nên nặng nề hơn lưu trữ dữ liệu thực tế và trở thành trách nhiệm pháp lý. Chỉ cần ghi nhớ những gì bạn đang cố gắng để làm với nó, và không quá mở rộng cho mình với "những gì nếu."

0

tôi về cơ bản sẽ làm cho một DB metadata mà tổ chức thông tin này:

RESOURCE_TABLE
RESOURCE_ID
RESOURCE_TYPE (thư mục, loại tài liệu, liên kết web, khác)
RESOURCE_URL (bất kỳ URL)

NOTES_TABLE
NOTE_ID
RESOURCE_NO
RESOURCE_NOTE (văn bản dài)

TAGS_TABLE
TAG_ID
RESOURCE_NO
TAG_TEXT

Sau đó, tôi sẽ sử dụng các ghi chú văn bản trường ghi chú để các tập tin/thư mục/tài nguyên. Chọn nếu bạn sử dụng 1: 1 hoặc 1: N cho việc này.

Trường thẻ tôi sẽ sử dụng để lưu trữ bất kỳ số tham số có thể tìm kiếm nào như YEAR, PROJECT và các giá trị khác sẽ mô tả và nhóm nội dung của bạn.

Sau đó, bạn có thể thêm bảng cho chủ sở hữu, các bên liên quan và thông tin tổ chức khác vv

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