LogStore LogStore LogStore LogStore Class

定義

ログ構造化ストレージを表します。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
継承
LogStoreLogStoreLogStoreLogStore
実装

次の例では、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 クラスは、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. CLFS ログ ファイルを直接操作および管理するためのインターフェイスを提供する LogStore クラスと共に動作します。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(SafeFileHandle) LogStore(SafeFileHandle) LogStore(SafeFileHandle)

ハンドルを指定して LogStore クラスの新しいインスタンスを初期化します。Initializes a new instance of the LogStore class for the specified handle.

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

パスとモードを指定して、LogStore クラスの新しいインスタンスを初期化します。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)

パス、モード、およびアクセスを指定して、LogStore クラスの新しいインスタンスを初期化します。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)

LogStore クラスの新しいインスタンスを初期化します。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)

LogStore クラスの新しいインスタンスを初期化します。Initializes a new instance of the LogStore class.

プロパティ

Archivable Archivable Archivable Archivable

この LogStore インスタンスがアーカイブ可能であるかどうかを示す値を取得します。Gets a value indicating whether this LogStore instance can be archived.

BaseSequenceNumber BaseSequenceNumber BaseSequenceNumber BaseSequenceNumber

この LogStore インスタンス内の有効なレコードに対応する下限のシーケンス番号を取得します。Gets the lowest sequence number that corresponds to a valid record in this LogStore instance.

Extents Extents Extents Extents

このログ ストアのデータを格納しているログ エクステントのコレクションを取得します。Gets the collection of log extents that contain the data for this log store.

FreeBytes FreeBytes FreeBytes FreeBytes

ログ ストアで使用可能なバイト数を取得します。Gets the number of bytes available in the log store.

Handle Handle Handle Handle

現在の LogStore インスタンスによってカプセル化されるログ ファイルのオペレーティング システム ファイル ハンドルを取得します。Gets the operating system file handle for the log file that the current LogStore instance encapsulates.

LastSequenceNumber LastSequenceNumber LastSequenceNumber LastSequenceNumber

派生クラスでオーバーライドされると、ログ ストアに追加される次のレコードのシーケンス番号を取得します。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

ログ ストアのサイズをバイト単位で取得します。Gets the size of the log store, in bytes.

Policy Policy Policy Policy

このログ ストアに関連付けられたポリシーを取得します。Gets the policy associated with this log store.

StreamCount StreamCount StreamCount StreamCount

このログ ストアのログ ストリームの数を取得します。Gets the number of log streams in this log store.

メソッド

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

バックアップを作成するために、ログ ストア状態のスナップショットを取得します。Takes a snapshot of the log store state for making a backup.

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

バックアップを作成するために、指定されたシーケンス番号範囲のログ ストア状態のスナップショットを取得します。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)

ログ ストアを削除します。Removes the log store.

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

LogStore によって使用されているすべてのリソースを解放します。Releases all resources used by the LogStore.

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

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。Determines whether the specified object is equal to the current object.

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

既定のハッシュ関数として機能します。Serves as the default hash function.

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

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

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

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

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

アーカイブ末尾のシーケンス番号を設定します。Sets the sequence number of the archive tail.

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

現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(Inherited from Object)

適用対象