È una cattiva pratica memorizzare le informazioni sui metadati nei nomi dei file? Soluzioni migliori?

11

Ho notato dove lavoro le persone sono desiderose di archiviare informazioni nei nomi di file e analizzare i nomi dei file.

Per me questa non sembra essere una pratica particolarmente buona. Ho già visto i problemi occasionali con gli script che si aggirano per un file, e si sbagliano perché un altro file corrisponde per primo. Stiamo anche discutendo su come aggirare i problemi con i separatori per i campi.

È considerata una cattiva pratica o no?

Quali sono le altre soluzioni accettate per il recupero di file da un file system basato su alcuni tipi di metadati?

    
posta wobbily_col 02.10.2013 - 11:40
fonte

5 risposte

10

Sì, penso che sia una cattiva pratica. È soggetto a tutti i tipi di problemi, ad esempio limiti di lunghezza, problemi di codifica e conflitti dovuti a dati duplicati.

Meglio usare un "file master" (a volte chiamato manifest o indice) che contiene metadati e percorsi ai file. O qualcosa di simile in un database, registro o quant'altro. O per mettere i metadati all'interno dei file effettivi, al livello più alto di alcune infrastrutture dati contenute nel file, ad esempio JSON o XML.

Questo è in qualche modo analogo al concetto di mettere le informazioni, o chiavi dello spazio dei nomi negli archivi di valori-chiave. Penso che questo sia ok se lo si utilizza solo nello spazio dei nomi e si fa una ricerca rapida - i componenti chiave non sono lì per fornire informazioni analizzabili. Se hai bisogno di queste informazioni, duplicale nel valore (file nel caso precedente).

    
risposta data 02.10.2013 - 12:42
fonte
4

Innanzitutto, metadata è un concetto sfocato.

Detto questo, esistono già molti casi di metadati nei file:

  • numeri di versione delle librerie
  • data e ora delle immagini o almeno indice di sequenza
  • tipo di file, che attiva quale applicazione deve aprire il file
  • nome della tua home directory, che deve essere il tuo nome utente di sessione

Tuttavia, quella breve lista non è un argomento a favore della pratica.

Le alternative sono:

  • gestisci i metadati nel livello di FS, come ad esempio il vecchio HFS di Apple
  • inserisce i metadati nel file stesso, come Exif per immagini o ID3 per suoni
  • inserisce i metadati in un altro file o in un database, come la maggior parte dei gestori dei media.
risposta data 03.10.2013 - 09:13
fonte
3

Sembra che tu abbia bisogno di un database.

Ci sono molti problemi di sicurezza nel mettere i dati utente nei nomi dei file. Diciamo che hai un file per ogni utente ("username.txt"). Quello che succede ciò che qualcuno registra il nome utente "../../../../etc/passwd" dipende da come si sta filtrando l'input dell'utente.

I framework di database a volte ti assisteranno nel sanitizzare l'input dell'utente.

    
risposta data 03.10.2013 - 02:21
fonte
1

No ... beh .. non necessariamente.

Finché disponi di una convenzione rigorosa e di strumenti di analisi e convalida comuni (script, librerie, ecc.) prontamente disponibili, sei a posto.

Prendiamo ad esempio i sistemi di gestione delle confezioni e delle dipendenze (Maven, NuGet e simili). Sebbene molti utilizzeranno file specifici per i metadati per archiviare le informazioni più avanzate, le informazioni di base fanno spesso parte del nome del file stesso. Basandosi su stringenti convenzioni, il nome del file può contenere le informazioni più pertinenti sul pacchetto: è il venditore, il suo nome, la sua versione, il suo tipo. A volte è tutto ciò di cui hai bisogno ... 4 o 5 brevi informazioni.

Se i metadati sono semplici, una convenzione di denominazione dei file ha perfettamente senso che non richiede nulla da mettere in atto. Può essere rafforzato con strumenti e script molto semplici, nessun database necessario, nessuna infrastruttura specializzata solo pochi script e una convenzione di denominazione.

Se nulla di ciò che ti serve è abbastanza semplice e le tue esigenze sono semplici, inizierei con questo.

le tue esigenze superano questa convenzione? estenderlo con un file di metadati appropriato. Hai più tardi bisogno di una migliore ricerca per questo? Ci sono già buone soluzioni là fuori per la ricerca di file che ti portano dove vuoi.

Non è che non mi piacciano i database, al contrario sono davvero potenti e utili ma richiedono un po 'di overhead per andare avanti. Devono essere installati, sottoposti a backup, mantenuti, avrete bisogno di personale che, se non completamente dedicato, dovrà dedicare parte del proprio tempo a questa infrastruttura. Sono anche più complessi e criptici per i laici, perdono gli sviluppatori che ti mettono a punto e il tuo sistema rimarrà bloccato in tempo finché non trovi un sostituto.

Non sottovalutare mai il potere della bassa tecnologia con la dovuta supervisione, il che può farti fare molto.

E quando diventerai troppo grande per la tua soluzione low tech avrai raccolto tutta l'esperienza e i requisiti necessari per implementare il sistema perfetto per le tue esigenze.

    
risposta data 07.12.2017 - 15:48
fonte
0

Per prima cosa, concordiamo su cosa un file è . Un file è un pacchetto dati con un nome che può essere trasmesso, ricevuto, creato ed eliminato con operazioni atomiche molto simili.

Molti file system (Mac OS e più recenti file system Linux) implementano "fork", spesso usati per memorizzare risorse e metadati. Questo approccio alla memorizzazione dei metadati era problematico in quanto i metodi tradizionali di trasferimento di rete, i metodi di backup e ripristino e i metodi di copia dei file erano incoerenti, specialmente quando i file system di origine e di destinazione comprendevano i file in modo diverso.

Il nome del file è usato per contenere i metadati perché a) è sempre lì, b) i metadati sono sempre stati presenti nel nome del file (almeno nell'uso delle estensioni di file) e c) il nome del file subisce pochissimo traduzione quando si spostano tra i sistemi (distinzione tra maiuscole e minuscole, limiti di caratteri, limitazioni di caratteri a parte).

Quindi, il nome del file è visibile, portatile e gestibile. Questa non è una brutta cosa per la memorizzazione di alcuni metadati.

Probabilmente la soluzione migliore per indirizzare i metadati di file generali è utilizzare un repository di contenuti , dove è possibile configurare il repository di contenuti con lo schema dei metadati da utilizzare per i file. In molti casi questo è eccessivo, ma, IMHO, è la strada da percorrere per una seria gestione dei metadati.

    
risposta data 07.12.2017 - 15:24
fonte

Leggi altre domande sui tag