LogStore LogStore LogStore LogStore Class

Definition

Stellt einen protokollstrukturierten Speicher dar.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
Vererbung
LogStoreLogStoreLogStoreLogStore
Implementiert

Beispiele

Das folgende Beispiel zeigt, wie ein LogStore in einem XML-Dokument archiviert wird.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

Hinweise

Die LogRecordSequence-Klasse stellt eine Implementierung der Datensatzsequenzschnittstelle auf einem CLFS-Protokoll (gemeinsames Protokolldateisystem) bereit.The LogRecordSequence class provides an implementation of the record sequence interface on top of a Common Log File System (CLFS) log. Die Funktionsweise erfolgt in Kombination mit der LogStore-Klasse, die eine Schnittstelle für die direkte Bearbeitung und Verwaltung einer CLFS-Protokolldatei bereitstellt.It works with the LogStore class, which provides an interface for directly manipulating and managing a CLFS log file. Ein Protokollspeicher stellt einen nur erweiterbaren Speicher für einen Satz Datenträgerwertebereiche bereit.A log store provides append-only storage across a set of disk extents. Die LogStore-Klasse stellt diesen Speicher dar und bietet Methoden zum Hinzufügen und Entfernen von Containern, Festlegen von Richtlinien und Erstellen von Archiven.The LogStore class represents this storage, and provides methods for adding and removing containers, setting policy, and creating archives. Sie bietet keine Methoden zum Lesen oder Schreiben im Speicher; diese Methoden werden von der LogRecordSequence-Klasse bereitgestellt.It does not provide methods for reading from and writing to the storage; these methods are provided by the LogRecordSequence class.

Die Beziehung zwischen der LogStore-Klasse und der LogRecordSequence-Klasse ähnelt der Beziehung zwischen einer Datenträgerdatei und einem FileStream-Objekt.The relationship between the LogStore class and the LogRecordSequence class is similar to the relationship between a disk file and a FileStream object. Die Datenträgerdatei stellt den Speicherplatz bereit und weist Attribute wie die Länge und den letzten Zugriff auf, während das FileStream-Objekt eine Ansicht der Datei bereitstellt, über die in der Datei gelesen und geschrieben werden kann.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. Die LogStore-Klasse weist Attribute wie eine Richtlinie und eine Auflistung von Datenträgerwertebereichen auf, und die LogRecordSequence-Klasse bietet einen datensatzorientierten Mechanismus zum Lesen und Schreiben von Daten.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.

Anders als die Dateidatensatzsequenz, die von der FileRecordSequence-Klasse dargestellt wird, speichert eine LogStore-Instanz ihre Daten in einer Auflistung von Datenträgerwertebereichen, die von LogExtent-Instanzen dargestellt werden.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. Die Wertebereiche in einer bestimmten LogStore-Instanz weisen eine einheitliche Größe auf. Speicherplatz wird einer LogStore-Instanz in Wertebereichsschritten hinzugefügt oder daraus gelöscht.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. Verwenden Sie zum Hinzufügen und Entfernen von Protokollwertebereichen die Add-Methode und die Remove-Methode des LogExtentCollection-Objekts, die von der Extents-Eigenschaft zurückgegeben werden können.To add and remove log extents, use the Add and Remove methods of the LogExtentCollection object, which can be returned by the Extents property.

Eine LogStore-Instanz kann zugeordnete Richtlinien aufweisen.A LogStore instance can have policies associated with it. Diese werden durch LogPolicy-Instanzen dargestellt, die von der Policy-Eigenschaft zurückgegeben werden.These are represented by LogPolicy instances that can be returned by the Policy property. Eine Richtlinie schreibt bestimmte Regeln vor, die das Protokoll zu befolgen versucht, beispielsweise die Maximal- und die Mindestanzahl an Wertebereichen oder Anweisungen zum Erweitern oder Verkleinern der LogStore unter bestimmten Bedingungen.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. Außerdem können Sie angeben, ob eine LogStore-Instanz archiviert werden kann.In addition, you can specify whether a LogStore instance can be archived. Richtlinien werden pro Protokoll festgelegt und sind flüchtig, das heißt, sobald jedes Handle für das Protokoll geschlossen wurde, existiert die Richtlinie nicht mehr.Policies are set per log and are volatile, which means that once every handle to the log is closed, the policy no longer exists.

Konstruktoren

LogStore(SafeFileHandle) LogStore(SafeFileHandle) LogStore(SafeFileHandle) LogStore(SafeFileHandle)

Initialisiert eine neue Instanz der LogStore-Klasse für das angegebene Handle.Initializes a new instance of the LogStore class for the specified handle.

LogStore(String, FileMode) LogStore(String, FileMode) LogStore(String, FileMode) LogStore(String, FileMode)

Initialisiert eine neue Instanz der LogStore-Klasse mit dem angegebenen Pfad und Modus.Initializes a new instance of the LogStore class with the specified path and mode.

LogStore(String, FileMode, FileAccess) LogStore(String, FileMode, FileAccess) LogStore(String, FileMode, FileAccess) LogStore(String, FileMode, FileAccess)

Initialisiert eine neue Instanz der LogStore-Klasse mit dem angegebenen Pfad, Modus und Zugriff.Initializes a new instance of the LogStore class with the specified path, mode, and access.

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

Initialisiert eine neue Instanz der LogStore-Klasse.Initializes a new instance of the LogStore class.

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

Initialisiert eine neue Instanz der LogStore-Klasse.Initializes a new instance of the LogStore class.

Eigenschaften

Archivable Archivable Archivable Archivable

Ruft einen Wert ab, der angibt, ob diese LogStore-Instanz archiviert werden kann.Gets a value indicating whether this LogStore instance can be archived.

BaseSequenceNumber BaseSequenceNumber BaseSequenceNumber BaseSequenceNumber

Ruft die niedrigste Sequenznummer ab, die einem gültigen Datensatz in dieser LogStore-Instanz entspricht.Gets the lowest sequence number that corresponds to a valid record in this LogStore instance.

Extents Extents Extents Extents

Ruft die Auflistung von Protokollwertebereichen ab, die die Daten für diesen Protokollspeicher enthalten.Gets the collection of log extents that contain the data for this log store.

FreeBytes FreeBytes FreeBytes FreeBytes

Ruft die Anzahl von Byte ab, die im Protokollspeicher verfügbar sind.Gets the number of bytes available in the log store.

Handle Handle Handle Handle

Ruft das Dateihandle des Betriebssystems für die Protokolldatei ab, die von der aktuellen LogStore-Instanz eingekapselt wird.Gets the operating system file handle for the log file that the current LogStore instance encapsulates.

LastSequenceNumber LastSequenceNumber LastSequenceNumber LastSequenceNumber

Ruft beim Überschreiben in einer abgeleiteten Klasse die Sequenznummer des nächsten Datensatzes ab, der dem Protokollspeicher angefügt werden soll.When overridden in a derived class, gets the sequence number of the next record to be appended to the log store.

Length Length Length Length

Ruft die Größe des Protokollspeichers in Byte ab.Gets the size of the log store, in bytes.

Policy Policy Policy Policy

Ruft die diesem Protokollspeicher zugeordnete Richtlinie ab.Gets the policy associated with this log store.

StreamCount StreamCount StreamCount StreamCount

Ruft die Anzahl der Protokoll-Streams in diesem Protokollspeicher ab.Gets the number of log streams in this log store.

Methoden

CreateLogArchiveSnapshot() CreateLogArchiveSnapshot() CreateLogArchiveSnapshot() CreateLogArchiveSnapshot()

Nimmt zum Erstellen einer Sicherung eine Momentaufnahme des Protokollspeicherzustands auf.Takes a snapshot of the log store state for making a backup.

CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber) CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber) CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber) CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber)

Nimmt zum Erstellen einer Sicherungskopie eine Momentaufnahme des Protokollspeicherzustands zwischen den angegebenen Sequenznummern auf.Takes a snapshot of the log store state between the specified sequence numbers for making a backup.

Delete(String) Delete(String) Delete(String) Delete(String)

Entfernt den Protokollspeicher.Removes the log store.

Dispose() Dispose() Dispose() Dispose()

Gibt alle vom LogStore verwendeten Ressourcen frei.Releases all resources used by the LogStore.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Fungiert als Standardhashfunktion.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Inherited from Object)
SetArchiveTail(SequenceNumber) SetArchiveTail(SequenceNumber) SetArchiveTail(SequenceNumber) SetArchiveTail(SequenceNumber)

Legt die Sequenznummer des Archivendes fest.Sets the sequence number of the archive tail.

ToString() ToString() ToString() ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.Returns a string that represents the current object.

(Inherited from Object)

Gilt für: