LogStore Classe

Definizione

Rappresenta un archivio organizzato in log.Represents a log-structured storage.

public ref class LogStore sealed : IDisposable
public sealed class LogStore : IDisposable
type LogStore = class
    interface IDisposable
Public NotInheritable Class LogStore
Implements IDisposable
Ereditarietà
LogStore
Implementazioni

Esempi

Nell'esempio seguente viene illustrato come memorizzare un LogStore in un documento XML.The following example shows how to archive a LogStore to an XML document.

class LogBackup
{ 
    static void ArchiveToXML(LogStore logStore, string fileName) 
    {  
        LogArchiveSnapshot snapshot = logStore.CreateLogArchiveSnapshot();
        
        XmlTextWriter writer = new XmlTextWriter(fileName, Encoding.ASCII);
        
        writer.WriteStartElement("logArchive");
        foreach(FileRegion region in snapshot.ArchiveRegions) 
        {
            writer.WriteStartElement("fileRegion"); 
            writer.WriteElementString("path", region.Path); 
            writer.WriteElementString("length", region.FileLength.ToString()); 
            writer.WriteElementString("offset", region.Offset.ToString()); 
            using(Stream dataStream = region.GetStream()) 
            { 
                byte[] data = new byte[dataStream.Length]; 
                dataStream.Read(data, 0, data.Length); 
                writer.WriteElementString("data", Convert.ToBase64String(data)); 
            }
            writer.WriteEndElement();
        }
        writer.WriteEndElement(); 
        writer.Close(); 
        logStore.SetArchiveTail(snapshot.LastSequenceNumber); 
        
    }
    static void RestoreFromXML(string fileName) 
    { 
        using(XmlTextReader reader = new XmlTextReader(fileName)) 
        {
            reader.ReadStartElement("logArchive"); 
            while(reader.IsStartElement()) 
            { 
                string path = reader.ReadElementString("path"); 
                long length = Int64.Parse(reader.ReadElementString("length")); 
                long offset = Int64.Parse(reader.ReadElementString("offset")); 
                string dataString = reader.ReadElementString("data"); 
                byte[] data = Convert.FromBase64String(dataString); 
                FileStream fileStream;
                using(fileStream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write)) 
                { 
                    fileStream.SetLength(length); 
                    fileStream.Position = offset; fileStream.Write(data, 0, data.Length); 
                }
            } 
        reader.ReadEndElement(); 
        } 
    } 
}
Friend Class LogBackup
    Private Shared Sub ArchiveToXML(ByVal logStore As LogStore, ByVal fileName As String)
        Dim snapshot As LogArchiveSnapshot = logStore.CreateLogArchiveSnapshot()

        Dim writer As New XmlTextWriter(fileName, Encoding.ASCII)

        writer.WriteStartElement("logArchive")
        For Each region As FileRegion In snapshot.ArchiveRegions
            writer.WriteStartElement("fileRegion")
            writer.WriteElementString("path", region.Path)
            writer.WriteElementString("length", region.FileLength.ToString())
            writer.WriteElementString("offset", region.Offset.ToString())
            Using dataStream As Stream = region.GetStream()
                Dim data(dataStream.Length - 1) As Byte
                dataStream.Read(data, 0, data.Length)
                writer.WriteElementString("data", Convert.ToBase64String(data))
            End Using
            writer.WriteEndElement()
        Next region
        writer.WriteEndElement()
        writer.Close()
        logStore.SetArchiveTail(snapshot.LastSequenceNumber)

    End Sub
    Private Shared Sub RestoreFromXML(ByVal fileName As String)
        Using reader As New XmlTextReader(fileName)
            reader.ReadStartElement("logArchive")
            Do While reader.IsStartElement()
                Dim path = reader.ReadElementString("path")
                Dim length = Int64.Parse(reader.ReadElementString("length"))
                Dim offset = Int64.Parse(reader.ReadElementString("offset"))
                Dim dataString = reader.ReadElementString("data")
                Dim data() = Convert.FromBase64String(dataString)
                Dim fileStream As FileStream
                fileStream = New FileStream(path, FileMode.OpenOrCreate, FileAccess.Write)
                Using fileStream
                    fileStream.SetLength(length)
                    fileStream.Position = offset
                    fileStream.Write(data, 0, data.Length)
                End Using
            Loop
            reader.ReadEndElement()
        End Using
    End Sub
End Class

Commenti

La classe LogRecordSequence fornisce un'implementazione dell'interfaccia della sequenza di record all'inizio di un log Common Log File System (CLFS).The LogRecordSequence class provides an implementation of the record sequence interface on top of a Common Log File System (CLFS) log. Questa classe viene utilizzata insieme alla classe LogStore che fornisce un'interfaccia per la modifica e la gestione diretta di un file di log CLFS.It works with the LogStore class, which provides an interface for directly manipulating and managing a CLFS log file. Un archivio di log fornisce un'archiviazione a solo accodamento in un set di extent del disco.A log store provides append-only storage across a set of disk extents. La classe LogStore rappresenta quest'archiviazione e fornisce metodi per l'aggiunta e la rimozione di contenitori, per l'impostazione di criteri e per la creazione di archivi.The LogStore class represents this storage, and provides methods for adding and removing containers, setting policy, and creating archives. Non fornisce metodi per la lettura e la scrittura nell'archivio. Questi metodi vengono forniti dalla classe LogRecordSequence.It does not provide methods for reading from and writing to the storage; these methods are provided by the LogRecordSequence class.

La relazione tra la classe LogStore e la classe LogRecordSequence è simile alla relazione tra un file del disco e un oggetto FileStream.The relationship between the LogStore class and the LogRecordSequence class is similar to the relationship between a disk file and a FileStream object. Il file del disco fornisce l'archivio effettiva e dispone di attributi quali la lunghezza e l'ora dell'ultimo accesso, mentre l'oggetto FileStream fornisce una visualizzazione del file che può essere utilizzata per operazioni di lettura o scrittura su di esso.The disk file provides the actual storage and has attributes such as length and last access time, while the FileStream object provides a view on the file that can be used to read from it and write to it. Analogamente, la classe LogStore dispone di attributi quali i criteri e una raccolta di extent del disco e la classe LogRecordSequence fornisce un meccanismo orientato ai record per la lettura e la scrittura di dati.Similarly, the LogStore class has attributes like a policy and a collection of disk extents, and the LogRecordSequence class provides a record-oriented mechanism for reading and writing data.

Diversamente dalla sequenza di record di file rappresentata dalla classe FileRecordSequence, un'istanza LogStore memorizza i relativi dati in una raccolta di extent del disco, rappresentati da istanze LogExtent.Unlike the file record sequence represented by the FileRecordSequence class, a LogStore instance stores its data in a collection of disk extents, represented by LogExtent instances. Gli extent di una determinata istanza LogStore sono tutti della stessa dimensione e lo spazio viene aggiunto e rimosso da un'istanza LogStore per incrementi di extent.The extents in a given LogStore instance are all of uniform size, and space is added to and removed from a LogStore instance in extent increments. Per aggiungere e rimuovere extent del log, utilizzare i metodi Add e Remove dell'oggetto LogExtentCollection che può essere restituito dalla proprietà Extents.To add and remove log extents, use the Add and Remove methods of the LogExtentCollection object, which can be returned by the Extents property.

A un'istanza LogStore possono essere associati criteri.A LogStore instance can have policies associated with it. Questi criteri sono rappresentati da istanze LogPolicy che possono essere restituite dalla proprietà Policy.These are represented by LogPolicy instances that can be returned by the Policy property. I criteri specificano le regole che il log tenterà di seguire, ad esempio il numero massimo di extent e la dimensione minima, nonché le istruzioni sull'aumento o la riduzione dell'istanza LogStore in determinate condizioni.A policy dictates rules that the log will attempt to follow, such as maximum number of extents and minimum size, and instructions on growing or shrinking the LogStore under certain conditions. In inoltre possibile specificare se un'istanza LogStore può essere archiviata.In addition, you can specify whether a LogStore instance can be archived. I criteri vengono impostati per ogni singolo log e sono volatili. Ciò significa che, dopo la chiusura dell'ultimo handle del log, i criteri non esistono più.Policies are set per log and are volatile, which means that once every handle to the log is closed, the policy no longer exists.

Costruttori

LogStore(SafeFileHandle)

Inizializza una nuova istanza della classe LogStore per l'handle specificato.Initializes a new instance of the LogStore class for the specified handle.

LogStore(String, FileMode)

Inizializza una nuova istanza della classe LogStore con il percorso e la modalità specificati.Initializes a new instance of the LogStore class with the specified path and mode.

LogStore(String, FileMode, FileAccess)

Inizializza una nuova istanza della classe LogStore con il percorso, la modalità e l'accesso specificati.Initializes a new instance of the LogStore class with the specified path, mode, and access.

LogStore(String, FileMode, FileAccess, FileShare)

Inizializza una nuova istanza della classe LogStore.Initializes a new instance of the LogStore class.

LogStore(String, FileMode, FileAccess, FileShare, FileSecurity)

Inizializza una nuova istanza della classe LogStore.Initializes a new instance of the LogStore class.

Proprietà

Archivable

Ottiene un valore che indica se questa istanza LogStore può essere archiviata.Gets a value indicating whether this LogStore instance can be archived.

BaseSequenceNumber

Ottiene il numero di sequenza più basso che corrisponde a un record valido in questa istanza LogStore.Gets the lowest sequence number that corresponds to a valid record in this LogStore instance.

Extents

Ottiene la raccolta di extent del log che contengono i dati per questo archivio dei log.Gets the collection of log extents that contain the data for this log store.

FreeBytes

Ottiene il numero di byte disponibili nell'archivio dei log.Gets the number of bytes available in the log store.

Handle

Ottiene l'handle di file del sistema operativo per il file di log incapsulato nell'istanza LogStore corrente.Gets the operating system file handle for the log file that the current LogStore instance encapsulates.

LastSequenceNumber

Quando sottoposto a override in una classe derivata, ottiene il numero di sequenza del record successivo da accodare all'archivio dei log.When overridden in a derived class, gets the sequence number of the next record to be appended to the log store.

Length

Ottiene la dimensione, in byte, dell'archivio dei log.Gets the size of the log store, in bytes.

Policy

Ottiene i criteri associati a questo archivio dei log.Gets the policy associated with this log store.

StreamCount

Ottiene il numero di flussi di registrazione in questo archivio dei log.Gets the number of log streams in this log store.

Metodi

CreateLogArchiveSnapshot()

Crea uno snapshot dello stato dell'archivio dei log per eseguire un backup.Takes a snapshot of the log store state for making a backup.

CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber)

Crea uno snapshot dello stato dell'archivio dei log tra i numeri di sequenza specificati per l'esecuzione di un backup.Takes a snapshot of the log store state between the specified sequence numbers for making a backup.

Delete(String)

Rimuove l'archivio dei log.Removes the log store.

Dispose()

Rilascia tutte le risorse usate da LogStore.Releases all resources used by the LogStore.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.Determines whether the specified object is equal to the current object.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.Serves as the default hash function.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Ereditato da Object)
SetArchiveTail(SequenceNumber)

Imposta il numero di sequenza della coda di archiviazione.Sets the sequence number of the archive tail.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(Ereditato da Object)

Si applica a