LogStore Classe

Définition

Représente un stockage structuré par journal.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
Héritage
LogStore
Implémente

Exemples

L'exemple suivant montre comment archiver un LogStore dans un document 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

Remarques

La classe LogRecordSequence fournit une implémentation de l'interface de séquence d'enregistrement sur un journal CLFS (Common Log File System).The LogRecordSequence class provides an implementation of the record sequence interface on top of a Common Log File System (CLFS) log. Cela fonctionne avec la classe LogStore qui fournit une interface pour manipuler et gérer directement un fichier journal CLFS.It works with the LogStore class, which provides an interface for directly manipulating and managing a CLFS log file. Un magasin de journaux fournit le stockage en ajout seul pour un ensemble d'étendues de disque.A log store provides append-only storage across a set of disk extents. La classe LogStore représente ce stockage et fournit des méthodes pour ajouter et supprimer des conteneurs, définir la stratégie et créer des archives.The LogStore class represents this storage, and provides methods for adding and removing containers, setting policy, and creating archives. Elle ne fournit pas de méthodes pour lire et écrire à partir du stockage. Ces méthodes sont fournies par la classe LogRecordSequence.It does not provide methods for reading from and writing to the storage; these methods are provided by the LogRecordSequence class.

La relation entre la classe LogStore et la classe LogRecordSequence est similaire à la relation entre un fichier sur un disque et un objet FileStream.The relationship between the LogStore class and the LogRecordSequence class is similar to the relationship between a disk file and a FileStream object. Le fichier sur disque fournit la mémoire physique et a des attributs tels que la longueur et le dernier temps d'accès, alors que l'objet FileStream fournit une vue sur le fichier qui peut être utilisée pour la lecture et l'écriture.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. De la même façon, la classe LogStore a des attributs tels qu'une stratégie et une collection d'étendues de disque, et la classe LogRecordSequence fournit un mécanisme orienté par enregistrement pour lire et écrire des données.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.

Contrairement à la séquence d'enregistrement de fichier représentée par la classe FileRecordSequence, une instance LogStore stocke ses données dans une collection d'étendues de disque, représentée par les instances 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. Les étendues dans une instance LogStore donnée sont toutes de taille uniforme et l'espace est ajouté et supprimé d'une instance LogStore par incréments d'étendue.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. Pour ajouter et supprimer des étendues de journal, utilisez les méthodes Add et Remove de l'objet LogExtentCollection, qui peut être retourné par la propriété 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.

Des stratégies peuvent être associées à une instance LogStore.A LogStore instance can have policies associated with it. Elles sont représentées par les instances LogPolicy qui peuvent être retournées par la propriété Policy.These are represented by LogPolicy instances that can be returned by the Policy property. Une stratégie énonce les règles que le journal tente de suivre, tel que le nombre maximal d'étendues et la taille minimale, et fournit des instructions à propos de l'agrandissement ou de la réduction de la taille du LogStore sous certaines conditions.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. De plus, vous pouvez spécifier si une instance LogStore peut être archivée.In addition, you can specify whether a LogStore instance can be archived. Les stratégies sont définies par journal et ne sont pas rémanentes, ce qui signifie qu'une fois que chaque handle du journal est fermé, la stratégie n'existe plus.Policies are set per log and are volatile, which means that once every handle to the log is closed, the policy no longer exists.

Constructeurs

LogStore(SafeFileHandle)

Initialise une nouvelle instance de la classe LogStore pour le handle spécifié.Initializes a new instance of the LogStore class for the specified handle.

LogStore(String, FileMode)

Initialise une nouvelle instance de la classe LogStore avec le chemin d'accès et le mode spécifiés.Initializes a new instance of the LogStore class with the specified path and mode.

LogStore(String, FileMode, FileAccess)

Initialise une nouvelle instance de la classe LogStore avec le chemin d'accès, le mode et l'accès spécifiés.Initializes a new instance of the LogStore class with the specified path, mode, and access.

LogStore(String, FileMode, FileAccess, FileShare)

Initialise une nouvelle instance de la classe LogStore.Initializes a new instance of the LogStore class.

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

Initialise une nouvelle instance de la classe LogStore.Initializes a new instance of the LogStore class.

Propriétés

Archivable

Obtient une valeur qui indique si cette instance LogStore peut être archivée.Gets a value indicating whether this LogStore instance can be archived.

BaseSequenceNumber

Obtient le numéro de séquence le plus bas qui correspond à un enregistrement valide dans cette instance LogStore.Gets the lowest sequence number that corresponds to a valid record in this LogStore instance.

Extents

Obtient la collection des étendues de journal qui contient les données pour ce magasin de journaux.Gets the collection of log extents that contain the data for this log store.

FreeBytes

Obtient le nombre d'octets disponible dans le magasin de journaux.Gets the number of bytes available in the log store.

Handle

Obtient le handle de fichier du système d'exploitation pour le fichier journal encapsulé par l'instance LogStore active.Gets the operating system file handle for the log file that the current LogStore instance encapsulates.

LastSequenceNumber

En cas de substitution dans une classe dérivée, obtient le numéro de séquence de l'enregistrement suivant à ajouter au magasin de journaux.When overridden in a derived class, gets the sequence number of the next record to be appended to the log store.

Length

Obtient la taille du magasin de journaux en octets.Gets the size of the log store, in bytes.

Policy

Obtient la stratégie associée à ce magasin de journaux.Gets the policy associated with this log store.

StreamCount

Obtient le nombre de flux de journal dans ce magasin de journaux.Gets the number of log streams in this log store.

Méthodes

CreateLogArchiveSnapshot()

Prend un instantané de l'état du magasin de journaux pour effectuer une sauvegarde.Takes a snapshot of the log store state for making a backup.

CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber)

Prend un instantané de l'état du magasin de journaux entre les numéros de séquence spécifiés pour effectuer une sauvegarde.Takes a snapshot of the log store state between the specified sequence numbers for making a backup.

Delete(String)

Supprime le magasin de journaux.Removes the log store.

Dispose()

Libère toutes les ressources utilisées par LogStore.Releases all resources used by the LogStore.

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.Determines whether the specified object is equal to the current object.

(Hérité de Object)
GetHashCode()

Sert de fonction de hachage par défaut.Serves as the default hash function.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.Gets the Type of the current instance.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Object actuel.Creates a shallow copy of the current Object.

(Hérité de Object)
SetArchiveTail(SequenceNumber)

Définit le numéro de séquence de la fin de l'archive.Sets the sequence number of the archive tail.

ToString()

Retourne une chaîne qui représente l'objet en cours.Returns a string that represents the current object.

(Hérité de Object)

S’applique à