LogStore Класс

Определение

Представляет хранилище, структурированное журналом.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
Наследование
LogStore
Реализации

Примеры

В следующем примере показано, как архивировать хранилище LogStore в документ 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

Комментарии

Класс LogRecordSequence предоставляет реализацию интерфейса последовательности записей на базе журнала CLFS.The LogRecordSequence class provides an implementation of the record sequence interface on top of a Common Log File System (CLFS) log. Он работает с классом LogStore, который предоставляет интерфейс для прямого управления файлом журнала CLFS.It works with the LogStore class, which provides an interface for directly manipulating and managing a CLFS log file. Хранилище журнала предоставляет хранилище, доступное только для добавления, в наборе областей диска.A log store provides append-only storage across a set of disk extents. Класс LogStore представляет это хранилище, а также предоставляет методы для добавления и удаления контейнеров, задания политики и создания архивов.The LogStore class represents this storage, and provides methods for adding and removing containers, setting policy, and creating archives. Класс не предоставляет методы для чтения из хранилища и записи в хранилище; это методы предоставляются классом LogRecordSequence.It does not provide methods for reading from and writing to the storage; these methods are provided by the LogRecordSequence class.

Отношение между классом LogStore и классом LogRecordSequence аналогично отношению между файлом на диске и объектом FileStream.The relationship between the LogStore class and the LogRecordSequence class is similar to the relationship between a disk file and a FileStream object. Файл на диске предоставляет фактическое хранилище, он имеет атрибуты длины и времени последнего обращения, тогда как объект FileStream предоставляет структуру файла, которая нужна для чтения и записи в файл.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. Аналогично, класс LogStore имеет атрибуты политики и коллекции областей диска, а класс LogRecordSequence предоставляет механизм для чтения и записи данных.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.

В отличие от последовательности записей файла, представленной классом FileRecordSequence, экземпляр LogStore хранит данные в коллекции областей памяти, представленных экземплярами 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. Области памяти конкретного экземпляра LogStore все одинакового размера, пространство экземпляра LogStore увеличивается или уменьшается с шагом в размер области памяти.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. Чтобы добавить и удалить области журнала, используйте методы Add и Remove объекта LogExtentCollection, возвращаемого свойством 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.

С экземпляром LogStore могут быть связаны политики.A LogStore instance can have policies associated with it. Они представлены экземплярами LogPolicy, возвращаемыми свойством Policy.These are represented by LogPolicy instances that can be returned by the Policy property. Политика диктует правила, которым должен следовать журнал, например, максимальное число областей памяти и минимальный размер. Также политика задает правила увеличения и сжатия хранилища LogStore в определенных условиях.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. Кроме того, можно указать, допускается ли архивирование экземпляра LogStore.In addition, you can specify whether a LogStore instance can be archived. Политики задаются для каждого журнала и являются неустойчивыми, это означает, что когда все дескрипторы журнала закрываются, политика перестает существовать.Policies are set per log and are volatile, which means that once every handle to the log is closed, the policy no longer exists.

Конструкторы

LogStore(SafeFileHandle)

Инициализирует новый экземпляр класса LogStore для указанного дескриптора.Initializes a new instance of the LogStore class for the specified handle.

LogStore(String, FileMode)

Инициализирует новый экземпляр класса LogStore с указанным путем и режимом.Initializes a new instance of the LogStore class with the specified path and mode.

LogStore(String, FileMode, FileAccess)

Инициализирует новый экземпляр класса LogStore с указанным путем, режимом и доступом.Initializes a new instance of the LogStore class with the specified path, mode, and access.

LogStore(String, FileMode, FileAccess, FileShare)

Инициализирует новый экземпляр класса LogStore.Initializes a new instance of the LogStore class.

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

Инициализирует новый экземпляр класса LogStore.Initializes a new instance of the LogStore class.

Свойства

Archivable

Возвращает значение, которое определяет, можно ли архивировать этот экземпляр LogStore.Gets a value indicating whether this LogStore instance can be archived.

BaseSequenceNumber

Возвращает самый низкий порядковый номер, соответствующий допустимой записи в экземпляре LogStore.Gets the lowest sequence number that corresponds to a valid record in this LogStore instance.

Extents

Возвращает коллекцию областей журнала, которая содержит данные для этого хранилища журналов.Gets the collection of log extents that contain the data for this log store.

FreeBytes

Возвращает число байтов, доступных в хранилище журналов.Gets the number of bytes available in the log store.

Handle

Возвращает дескриптор файла операционной системы для файла журнала, который инкапсулирует текущий экземпляр LogStore.Gets the operating system file handle for the log file that the current LogStore instance encapsulates.

LastSequenceNumber

При переопределении в производном классе возвращает порядковый номер следующей записи, добавляемой в хранилище журналов.When overridden in a derived class, gets the sequence number of the next record to be appended to the log store.

Length

Возвращает размер хранилища журналов в байтах.Gets the size of the log store, in bytes.

Policy

Возвращает политику, связанную с данным хранилищем журналов.Gets the policy associated with this log store.

StreamCount

Возвращает количество потоков журнала в данном хранилище журналов.Gets the number of log streams in this log store.

Методы

CreateLogArchiveSnapshot()

Делает моментальный снимок состояния хранилища журналов для создания резервной копии.Takes a snapshot of the log store state for making a backup.

CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber)

Делает моментальный снимок состояния хранилища журналов для указанных порядковых номеров для создания резервной копии.Takes a snapshot of the log store state between the specified sequence numbers for making a backup.

Delete(String)

Удаляет хранилище журналов.Removes the log store.

Dispose()

Освобождает все ресурсы, занятые модулем LogStore.Releases all resources used by the LogStore.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Унаследовано от Object)
MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Унаследовано от Object)
SetArchiveTail(SequenceNumber)

Задает порядковый номер архивной цепочки.Sets the sequence number of the archive tail.

ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Унаследовано от Object)

Применяется к