LogStore Sınıf

Tanım

Günlük olarak yapılandırılmış depolamayı temsil eder.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
Devralma
LogStore
Uygulamalar

Örnekler

Aşağıdaki örnek, bir XML belgesinin nasıl arşivleneceği gösterilmektedir LogStore .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

Açıklamalar

LogRecordSequenceSınıfı, ortak günlük dosya sistemi (CLFS) günlüğünün üstünde kayıt sırası arabiriminin bir uygulamasını sağlar.The LogRecordSequence class provides an implementation of the record sequence interface on top of a Common Log File System (CLFS) log. LogStoreBIR CLFS günlük dosyasını doğrudan işlemek ve yönetmek için bir arabirim sağlayan sınıfıyla birlikte kullanılır.It works with the LogStore class, which provides an interface for directly manipulating and managing a CLFS log file. Bir günlük deposu, bir dizi disk uzantısı genelinde salt ekleme depolaması sağlar.A log store provides append-only storage across a set of disk extents. LogStoreSınıfı bu depolamayı temsil eder ve kapsayıcı ekleme ve kaldırma, ilke ayarlama ve arşiv oluşturma için yöntemler sağlar.The LogStore class represents this storage, and provides methods for adding and removing containers, setting policy, and creating archives. Diskten okuma ve depolama için yazma yöntemleri sağlamaz; Bu yöntemler sınıfı tarafından sağlanır LogRecordSequence .It does not provide methods for reading from and writing to the storage; these methods are provided by the LogRecordSequence class.

LogStoreSınıfı ve sınıfı arasındaki ilişki, LogRecordSequence bir disk dosyası ile nesne arasındaki ilişkiye benzer FileStream .The relationship between the LogStore class and the LogRecordSequence class is similar to the relationship between a disk file and a FileStream object. Disk dosyası gerçek depolama alanını sağlar ve uzunluğu ve son erişim zamanı gibi özniteliklere sahiptir FileStream . nesne, dosyada okuma ve yazma için kullanılabilecek bir görünüm sağlar.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. Benzer şekilde, LogStore sınıfında bir ilke ve disk kapsamları koleksiyonu gibi öznitelikler bulunur ve LogRecordSequence sınıfı, verileri okumak ve yazmak için kayda dayalı bir mekanizma sağlar.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.

Sınıfı tarafından temsil edilen dosya kaydı dizisinin aksine FileRecordSequence , bir LogStore örnek, verileri örneklerle temsil edilen bir disk kapsamları koleksiyonunda depolar 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. Belirli bir LogStore örnekteki kapsamlar, tek biçimli boyutlardır ve bir örnekten bir yere eklenir ve bu LogStore artış, uzatma artışlarına göre kaldırılır.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. Günlük kapsamları eklemek ve kaldırmak için, Add Remove LogExtentCollection özelliği tarafından döndürülebilecek nesnesinin ve yöntemlerini kullanın 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.

Bir LogStore örnek kendisiyle ilişkili ilkelere sahip olabilir.A LogStore instance can have policies associated with it. Bunlar LogPolicy , özelliği tarafından döndürülebilecek örneklerle temsil edilir Policy .These are represented by LogPolicy instances that can be returned by the Policy property. Bir ilke, günlüğün izlenecek kuralları ve en düşük boyut sayısını ve belirli koşullar altında büyümekte veya küçülterek talimatlarını belirler 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. Ayrıca, bir LogStore Örneğin arşivlenip arşivlenmeyeceğini belirtebilirsiniz.In addition, you can specify whether a LogStore instance can be archived. İlkeler günlük başına ayarlanır ve geçici olur. Bu, günlükteki her tanıtıcı kapatıldığında ilke artık yok demektir.Policies are set per log and are volatile, which means that once every handle to the log is closed, the policy no longer exists.

Oluşturucular

LogStore(SafeFileHandle)

LogStoreBelirtilen tanıtıcı için sınıfın yeni bir örneğini başlatır.Initializes a new instance of the LogStore class for the specified handle.

LogStore(String, FileMode)

LogStoreBelirtilen yol ve mod ile sınıfın yeni bir örneğini başlatır.Initializes a new instance of the LogStore class with the specified path and mode.

LogStore(String, FileMode, FileAccess)

LogStoreBelirtilen yol, mod ve erişim ile sınıfın yeni bir örneğini başlatır.Initializes a new instance of the LogStore class with the specified path, mode, and access.

LogStore(String, FileMode, FileAccess, FileShare)

LogStore sınıfının yeni bir örneğini başlatır.Initializes a new instance of the LogStore class.

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

LogStore sınıfının yeni bir örneğini başlatır.Initializes a new instance of the LogStore class.

Özellikler

Archivable

Bu LogStore Örneğin arşivlenip arşivlenmeyeceğini gösteren bir değer alır.Gets a value indicating whether this LogStore instance can be archived.

BaseSequenceNumber

Bu örnekteki geçerli bir kayda karşılık gelen en düşük sıra numarasını alır LogStore .Gets the lowest sequence number that corresponds to a valid record in this LogStore instance.

Extents

Bu günlük deposu için verileri içeren günlük kapsamları koleksiyonunu alır.Gets the collection of log extents that contain the data for this log store.

FreeBytes

Günlük deposundaki kullanılabilir bayt sayısını alır.Gets the number of bytes available in the log store.

Handle

Geçerli örneğin sarmalayan günlük dosyası için işletim sistemi dosya tanıtıcısını alır LogStore .Gets the operating system file handle for the log file that the current LogStore instance encapsulates.

LastSequenceNumber

Türetilmiş bir sınıfta geçersiz kılındığında, günlük deposuna eklenecek bir sonraki kaydın sıra numarasını alır.When overridden in a derived class, gets the sequence number of the next record to be appended to the log store.

Length

Günlük deposunun boyutunu bayt cinsinden alır.Gets the size of the log store, in bytes.

Policy

Bu günlük deposuyla ilişkili ilkeyi alır.Gets the policy associated with this log store.

StreamCount

Bu günlük deposundaki günlük akışlarının sayısını alır.Gets the number of log streams in this log store.

Yöntemler

CreateLogArchiveSnapshot()

Yedekleme yapmak için günlük depolama durumunun bir anlık görüntüsünü alır.Takes a snapshot of the log store state for making a backup.

CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber)

Yedek oluşturmak için belirtilen sıra numaraları arasında günlük deposu durumunun bir anlık görüntüsünü alır.Takes a snapshot of the log store state between the specified sequence numbers for making a backup.

Delete(String)

Günlük deposunu kaldırır.Removes the log store.

Dispose()

LogStore tarafından kullanılan tüm kaynakları serbest bırakır.Releases all resources used by the LogStore.

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.Determines whether the specified object is equal to the current object.

(Devralındığı yer: Object)
GetHashCode()

Varsayılan karma işlevi olarak işlev görür.Serves as the default hash function.

(Devralındığı yer: Object)
GetType()

TypeGeçerli örneği alır.Gets the Type of the current instance.

(Devralındığı yer: Object)
MemberwiseClone()

Geçerli bir basit kopyasını oluşturur Object .Creates a shallow copy of the current Object.

(Devralındığı yer: Object)
SetArchiveTail(SequenceNumber)

Arşiv kuyruğu sıra numarasını ayarlar.Sets the sequence number of the archive tail.

ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.Returns a string that represents the current object.

(Devralındığı yer: Object)

Şunlara uygulanır