Logisches Pathing von Komponenten
Logische Pfade werden verwendet, um komponenten, die von einem Writer verwaltet werden, in klar definierten Gruppen zu organisieren.
Der logische Pfad entspricht in der Struktur dem herkömmlichen Dateipfad, wobei der umgekehrte Schrägstrich "\" verwendet wird, um Elemente im Pfad zu trennen. Im Gegensatz zu Dateipfaden ist der Stamm eines logischen Pfads NULL anstelle von "\".
Der logische Pfad wird als NULL-Zeichenfolge ausgedrückt, und es gibt keine anderen Einschränkungen für die Zeichen, die der Pfad enthalten kann.
Die wichtigste Verwendung des logischen Pfads ist das Definieren von Komponentensätzen, bei denen die explizite Komponenteneinschluss in einen Sicherungs- oder Wiederherstellungsvorgang einer auswählbaren Komponente die Aufnahme einer Reihe anderer Komponenten (Unterkomponenten) erfordert. Der logische Pfad der definierenden Komponente eines Komponentensatzes ist ein übergeordneter Pfad zu den logischen Pfaden seiner Unterkomponenten und:
- Unterkomponenten müssen als Stammpfad den logischen Pfad der auswählbaren Komponente freigeben, die den Komponentensatz definiert.
- Ein Stammpfad von NULL ist gültig.
- Der Name der definierenden auswählbaren Komponente muss das erste logische Pfadelement nach dem Stammpfad für jeden nicht auswählbaren Teil des Komponentensatzes sein.
- Komponentensätze können geschachtelt werden.
- Die Kombination aus logischem Pfad und Komponentenname muss für alle Instanzen einer Writer-Klasse eindeutig sein.
Das hypothetische Beispiel eines Schreibers MyWriter mit einer logischen Pfadstruktur, die unten definiert ist, veranschaulicht die logische Pfaderstellung.
Komponentenname | Logischer Pfad | Für die Sicherung auswählbar |
---|---|---|
"Ausführbare Dateien" | "" | N |
"ConfigFiles" | "Ausführbare Dateien" | N |
"LicenseInfo" | "" | J |
"Security" | "" | J |
"UserInfo" | "Security" | N |
"Zertifikate" | "Security" | N |
"writerData" | "" | J |
"Set1" | "writerData" | N |
"Jan" | "writerData\Set1" | N |
"Dez" | "writerData\Set1" | N |
"Set2" | "writerData" | N |
"Jan" | "writerData\Set2" | N |
"Dez" | "writerData\Set2" | N |
"Abfrage" | "writerData\QueryLogs" | N |
"Nutzung" | "writerData" | J |
"Jan" | "writerData\Usage" | N |
"Dez" | "writerData\Usage" | N |
Beachten Sie, dass die Komponenten "Ausführbare Dateien" und "ConfigFile" über eine Beziehung zwischen übergeordnetem und untergeordnetem Element verfügen, aber beide nicht ausgewählt werden können. Daher bilden sie keinen Komponentensatz. Wenn der Writer MyWriter gesichert oder wiederhergestellt wird, müssen diese beiden Komponenten explizit in den Vorgang einbezogen werden.
Die Komponente "LicenseInfo" kann weder mit Vorgänger noch mit Nachfolger ausgewählt werden. Es kann explizit oder nicht in einen Sicherungs- oder Wiederherstellungsvorgang nach Eigenem Ermessen des Anforderers einbezogen werden.
Die Komponente "Sicherheit" definiert einen einfachen Komponentensatz, der keine Komponentensätze darunter enthält.
Die Komponente "writerData" definiert einen Komponentensatz, der eine komplexe Auflistung von Komponenten mit mehreren klar definierten logischen Pfadhierarchien enthält.
Eine Unterkomponente, "Usage", ist auswählbar und definiert einen Komponentensatz.
Mehrere Komponenten haben den gleichen Namen und unterscheiden sich durch ihre logischen Pfade. Instanzen der nicht auswählbaren Komponenten "Dec" und "Jan" befinden sich unter den nicht auswählbaren Komponenten "Set1" und "Set2" und unter dem auswählbaren Unterkomponenten "Usage".
Wenn die Komponente "writerData" explizit in einer Sicherung oder Wiederherstellung enthalten ist, werden alle ihre Unterkomponenten – auch die im durch "Usage" definierten geschachtelten Komponentensatz – implizit in den Vorgang eingeschlossen.
Wenn der durch "writerData" definierte Komponentensatz nicht explizit in einer Sicherung oder Wiederherstellung enthalten ist, werden die Komponenten "Set1", "Set2" und "QueryLogs" (und ihre Instanzen der Unterkomponenten "Dec" und "Jan") nicht implizit in den Sicherungs- oder Wiederherstellungsvorgang einbezogen.
Auch wenn "writerData" nicht im Vorgang enthalten ist, ist die Komponente "Nutzung" weiterhin auswählbar und kann dennoch explizit in einen Sicherungs- oder Wiederherstellungsvorgang einbezogen werden. Wenn dies der Grund ist, werden die Unterkomponenten "Jan" und "Dec" implizit eingeschlossen.
Weitere Punkte, die zu beachten sind:
- Die auswählbaren Komponenten "LicenseInfo" und "writerData" sowie die nicht auswählbare Komponente "Ausführbare Dateien" befinden sich alle auf derselben Ebene in der logischen Pfadhierarchie von MyWriter: Alle haben den gleichen logischen Pfad von NULL oder "", dem logischen Stammpfad.
- Die auswählbare Komponente "Usage" sollte niemals explizit in eine Sicherung einbezogen werden, wenn ihr auswählbares übergeordnetes Element ("writerData") explizit in einen Sicherungs- oder Wiederherstellungsvorgang einbezogen wird.
- Komponenten, die Komponentensätze definieren, können einfach aus organisatorischen Gründen vorhanden sein. Für instance kann entweder die Komponente "writerData" oder die Komponente "Usage" oder beide leer sein. Das heißt, es wurden keine Dateisätze mit der IVssCreateWriterMetadata::AddFilesToFileGroup, IVssCreateWriterMetadata::AddDatabaseFiles oder IVssCreateWriterMetadata::AddDatabaseLogFiles-Methode hinzugefügt. Die Komponenten definieren weiterhin einen Komponentensatz.