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 클래스는 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. 이 클래스는 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 개체의 LogExtentCollectionExtents 메서드를 사용합니다.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)

적용 대상