Denominazione dei nodi nel repository del contenuto
-
20-12-2019 - |
Domanda
Cosa dovrebbero essere nominati i nodi in un deposito di contenuti come Jackrabbit?Non capisco se li nomina dopo un ID, un testo ecc.
Lascia dire che stavi per memorizzare pagine del blog.Dovresti usare il titolo o cosa?
Soluzione
Non importa ciò che vengono nominati. Se possibile, nominarli qualcosa che significa qualcosa per la tua applicazione: nome del cliente, ID ordine, nome utente, file allegato, ecc. Ma è difficile da fare in tutte le situazioni (ad esempio, domande su un sito Q & A), quindi potresti aver bisogno di ricorrere per nominare i nodi da una chiave o identificatore generato.
Non importa cosa nomina i nodi, assicurati che la tua struttura del nodo sia una gerarchia e non una struttura piatta (ad esempio, con decine di migliaia di nodi figli sotto un singolo genitore). I repository JCR sono intrinsecamente gerarchici e funzionerà sempre meglio quando la struttura è gerarchica.
Ad esempio, "/orders/{id}
" funzionerà con un piccolo numero di clienti, ma lotterà quando il numero di clienti è più di diverse migliaia. Se possibile, utilizzare gli strati aggiuntivi che suddivideremo lo spazio del valore {id}
in porzioni gestibili. Le date a volte funzionano:
/orders/yyyy/mm/dd/{id}
.
o se i valori id
sono sufficientemente casuali e ben distribuiti (ad esempio, UUIDS o SHA1), è possibile suddividere utilizzando le porzioni del id
:
/orders/{id-chars1-2}/{id-chars3-4}/{id}
.
Inoltre, con JCR stesso-nome-fratelli, funziona bene quando garantiscono i non duplicati è difficile. Generalmente, i fratelli dello stesso nome sono problematici perché i percorsi possono cambiare, rendendo difficile per le applicazioni che fanno affidamento sui percorsi (anche per un breve periodo di tempo, ad esempio e.g., tra richieste). Tuttavia, se l'applicazione legge sempre i bambini SNS e li elabora immediatamente, allora i fratelli dello stesso nome potrebbero essere accettabili per la tua applicazione.
Spesso, i percorsi sono utilizzati in posizione di riferimento o proprietà di debolezza, e in questi casi i nodi SNS sono davvero cattivi poiché i "Percorsi di riferimento" non sono durevoli. Se usi i nodi SNS, quindi prendi in considerazione l'utilizzo di una sorta di proprietà di riferimento. Riferimento e deboleferenza sono bidirezionali, ma le implementazioni possono offrire alternative. Ad esempio, il ModeShape offre proprietà "simple_reference" che non sono standard ma uni-direzionali, il che significa che è possibile avere un numero qualsiasi di valori di proprietà Simple_Reference che punta a un singolo nodo di riferimento senza problemi di scalabilità.