ReservationCollection ReservationCollection ReservationCollection ReservationCollection Class

정의

레코드 시퀀스에서 만든 공간 예약의 컬렉션을 관리합니다.Manages the collection of space reservations made in a record sequence.

public ref class ReservationCollection abstract : System::Collections::Generic::ICollection<long>, System::Collections::Generic::IEnumerable<long>
public abstract class ReservationCollection : System.Collections.Generic.ICollection<long>, System.Collections.Generic.IEnumerable<long>
type ReservationCollection = class
    interface ICollection<int64>
    interface seq<int64>
    interface IEnumerable
Public MustInherit Class ReservationCollection
Implements ICollection(Of Long), IEnumerable(Of Long)
상속
ReservationCollectionReservationCollectionReservationCollectionReservationCollection
구현

예제

예약은 다음 예제에 나와 있는 것처럼 두 가지 방법으로 수행할 수 있습니다.Reservations can be performed in two ways as shown in the following examples. 확실한 처리를 위해 예제의 방법을 사용할 수 있습니다.You can adopt the practices in the samples for robust processing. 이 작업은 CLFS 기반 LogRecordSequence 클래스를 사용할 때만 수행할 수 있습니다.Notice that this task can only be performed when using the CLFS-based LogRecordSequence class.

//Using the ReserveAndAppend Method  
ReservationCollection reservations = recordSequence.CreateReservationCollection();  
long[] lengthOfUndoRecords = new long[] { 1000 };  
recordSequence.ReserveAndAppend(recordData,  
                                                     userSqn,  
                                                     previousSqn,  
                                                     RecordSequenceAppendOptions.None,  
                                                     reservations,  
                                                     lengthOfUndoRecords);  
recordSequence.Append(undoRecordData,    // If necessary …  
                                    userSqn,  
                                    previousSqn,  
                                    RecordSequenceAppendOptions.ForceFlush,  
                                    reservations);  

// Using the Manual Approach  
ReservationCollection reservations = recordSequence.CreateReservationCollection();  
reservations.Add(lengthOfUndoRecord);  
try  
{  
   recordSequence.Append(recordData, userSqn, previousSqn, RecordAppendOptions.None);  
}  
catch (Exception)  
{  
   reservations.Remove(lengthOfUndoRecord);  
   throw;  
}  

recordSequence.Append(undoRecordData, userSqn, previousSqn, RecordAppendOptions.ForceFlush, reservations);  

설명

이 클래스는 레코드 시퀀스에 만들어진 예약 영역의 집합을 나타냅니다.This class represents a set of reservation areas that are made in a record sequence. 컬렉션에 항목을 추가하면 새 예약이 할당됩니다.Adding items to the collection allocates new reservations. 컬렉션에서 항목을 제거하면 예약이 해제됩니다.Removing items from the collection frees those reservations.

애플리케이션에서는 나중에 로그에 쓸 데이터가 있지만 즉시 쓸 수 없을 때 로그 공간을 예약합니다.An application reserves space in the log when it has data that is to be written to the log in the future, but cannot write it immediately. 예약은 쓸 데이터가 있을 때 데이터를 로그에 쓸 수 있도록 보장합니다.Reservations provide a guarantee that the data can be written to the log when the data is available to be written. 로그를 사용할 경우 응용 프로그램은 종종 마샬링 영역에 하나 이상의 로그 레코드를 보유 합니다.When using logs, applications often reserve one or more log records in a marshaling area. 예약은 레코드를 추가하기 전에 수행해야 합니다.You must reserve records prior to appending them.

예약을 사용하면 데이터가 커밋되기 전에 작업이 완료되도록 보장할 수 있습니다. 그렇지 않으면 변경 사항이 롤백됩니다. 또한 "실행 취소 작업"을 로그에 쓸 수도 있습니다.Reservations can be used to guarantee that an operation can be completed before the data is committed; otherwise, the changes are rolled back. 또한 "실행 취소 작업"을 로그에 쓰는 데에도 사용할 수 있습니다.It can also be used to record an "undo action" in the log. 롤백 작업 중에 RM(리소스 관리자)이 중단될 경우 트랜잭션 RM은 원래 상태를 복구할 수 있어야 합니다.During a rollback operation, a transactional resource manager (RM) must be able to recover its state if the RM is interrupted during the rollback operation. RM에서는 예약 영역을 사용함으로써 로그의 공간을 미리 예약할 수 있습니다.By using a reservation area, an RM can reserve space in a log before it is used.

호출 시 지정된 매개 변수에 따라 ReserveAndAppend 메서드는 공간을 예약하거나 데이터를 추가하거나 두 작업을 모두 수행할 수 있습니다.The ReserveAndAppend method can either reserve space or append data, or both, depending on the parameters that are specified when making the call. 트랜잭션에서 작업이 진행되는 동안 애플리케이션에서 실행 취소 정보를 추가하고 보정 레코드를 위한 공간을 예약할 수 있습니다.As work progresses in a transaction, an application can append the undo information and reserve space for compensation records. 롤백 작업 중에 생성된 보정 레코드는 디스크에서 실행 취소된 내용을 나타냅니다.During a rollback operation, compensation records that are created indicate what has been undone on the disk. 이 레코드는 미리 예약된 공간을 사용하여 추가됩니다.The records are appended using space that has been previously reserved. 따라서 롤백 작업을 수행하는 동안 RM에 로그 공간이 부족해지는 심각한 상태가 발생하지 않습니다.This guarantees that an RM does not run out of log space, which is a fatal condition, while performing a rollback operation. 트랜잭션 중에 로그가 꽉 찰 경우 애플리케이션에서는 영속 데이터를 손상시키지 않고 트랜잭션을 안전하게 롤백할 수 있습니다.If a log fills up during a transaction, an application can safely roll back a transaction without corrupting durable data.

CLFS는 미리 쓰기 로깅을 위한 ARIES 규격 로깅 시스템입니다.CLFS is an ARIES-compliant logging system, meant for write-ahead logging. 미리 쓰기 로깅을 수행할 때 애플리케이션은 작업을 수행하기 전에 실행 취소 레코드를 쓰고 롤백 중에 사용할 수 있는 보정 레코드를 쓸 로그 공간의 크기를 예약합니다.In write-ahead logging, an application writes an undo record before it performs the operation, reserving the amount of space it takes in the log to write a compensating record, which may be used during rollback. 이 예약된 공간은 나중에 보정 레코드를 실제로 쓸 때 사용됩니다.Later, the reserved space is used when the compensation record is actually written.

애플리케이션에서는 특정 시간에 많은 공간을 예약하거나 액세스할 수 있습니다. 단, 이 두 가지를 동시에 수행할 수는 없습니다.Applications can either reserve or access long space at any given time (they are mutually exclusive operations). 커밋 레코드가 로그에 기록되면 애플리케이션에서 보정 레코드를 위한 예약을 해제할 수 있습니다.After a commit record is written to the log, an application can free up the reservations for the compensation records. 이 작업은 FreeReservation 또는 ReserveAndAppend 메서드를 호출하여 수행할 수 있습니다.This action can be done by calling either the FreeReservation or ReserveAndAppend method. ReserveAndAppend 메서드를 호출하면 작업이 원자성을 유지할 수 있지만 FreeReservation 메서드를 호출하면 그렇게 할 수 없습니다.Calling the ReserveAndAppend method guarantees that the operation is atomic, while calling the FreeReservation method does not.

레코드를 비울 때는 이전의 ReserveAndAppend 메서드 호출에서 함께 예약했던 레코드를 비워야 합니다.When you free records, you must free the same records that you reserved together in a previous call to the ReserveAndAppend method.

참고

IRecordSequence 구현에서 MakeReservationFreeReservation 메서드를 구현하여 실제 예약 할당 및 할당 취소를 수행해야 합니다.Your implementation of IRecordSequence must implement the MakeReservation and FreeReservation methods to perform the actual reservation allocation and deallocation. 또한 예약된 공간에 레코드를 쓸 때 구현에서 ReservationFreed도 호출해야 합니다.In addition, your implementation must also call ReservationFreed when a record is written into a reserved space.

생성자

ReservationCollection() ReservationCollection() ReservationCollection() ReservationCollection()

ReservationCollection 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the ReservationCollection class.

속성

Count Count Count Count

컬렉션에 있는 예약의 수를 가져옵니다.Gets the number of reservations in the collection.

IsReadOnly IsReadOnly IsReadOnly IsReadOnly

컬렉션이 읽기 전용인지를 나타내는 값을 가져옵니다.Gets a value that indicates whether the collection is read-only.

메서드

Add(Int64) Add(Int64) Add(Int64) Add(Int64)

예약을 할당하고 컬렉션에 추가합니다.Allocates a reservation and adds it to the collection. 이 메서드는 상속될 수 없습니다.This method cannot be inherited.

Clear() Clear() Clear() Clear()

컬렉션에 있는 모든 예약을 해제합니다.Releases all of the reservations in the collection. 이 메서드는 상속될 수 없습니다.This method cannot be inherited.

Contains(Int64) Contains(Int64) Contains(Int64) Contains(Int64)

지정된 크기의 예약이 만들어졌는지 여부를 확인합니다.Determines whether a reservation of the specified size has been made. 이 메서드는 상속될 수 없습니다.This method cannot be inherited.

CopyTo(Int64[], Int32) CopyTo(Int64[], Int32) CopyTo(Int64[], Int32) CopyTo(Int64[], Int32)

대상 배열의 지정된 인덱스에서 시작하여 전체 컬렉션을 1차원 배열에 복사합니다.Copies the entire collection to a one-dimensional array, starting at the specified index of the target array. 이 메서드는 상속될 수 없습니다.This method cannot be inherited.

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

지정한 개체와 현재 개체가 같은지 여부를 확인합니다.Determines whether the specified object is equal to the current object.

(Inherited from Object)
Finalize() Finalize() Finalize() Finalize()

ReservationCollection이 가비지 컬렉션기에서 제거되기 전에 리소스를 해제할 수 있습니다.Allows the ReservationCollection to free resources before it is destroyed by the garbage collector.

FreeReservation(Int64) FreeReservation(Int64) FreeReservation(Int64) FreeReservation(Int64)

파생 클래스에서 재정의된 경우 지정된 크기의 예약을 해제합니다.When overridden in a derived class, releases a reservation of the specified size.

GetBestMatchingReservation(Int64) GetBestMatchingReservation(Int64) GetBestMatchingReservation(Int64) GetBestMatchingReservation(Int64)

파생 클래스에서 재정의된 경우 지정된 크기와 가장 일치하는 예약을 가져옵니다.When overridden in a derived class, gets the best matching reservation for a given size.

GetEnumerator() GetEnumerator() GetEnumerator() GetEnumerator()

@FSHO1@ReservationCollection에서 반복할 수 있는 열거자를 반환합니다.Returns an enumerator that can iterate through the ReservationCollection. 이 메서드는 상속될 수 없습니다.This method cannot be inherited.

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)
MakeReservation(Int64) MakeReservation(Int64) MakeReservation(Int64) MakeReservation(Int64)

파생 클래스에서 재정의된 경우 지정된 크기의 예약을 할당합니다.When overridden in a derived class, allocates a reservation of the specified size.

MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.Creates a shallow copy of the current Object.

(Inherited from Object)
Remove(Int64) Remove(Int64) Remove(Int64) Remove(Int64)

예약이 만들어진 경우 지정된 크기의 예약을 해제합니다.Releases a reservation of the specified size, if one has been made. 이 메서드는 상속될 수 없습니다.This method cannot be inherited.

ReservationFreed(Int64) ReservationFreed(Int64) ReservationFreed(Int64) ReservationFreed(Int64)

파생 클래스에서 재정의된 경우 예약이 해제되었음을 나타냅니다.When overridden in a derived class, indicates that a reservation has been released.

ReservationMade(Int64) ReservationMade(Int64) ReservationMade(Int64) ReservationMade(Int64)

파생 클래스에서 재정의된 경우 예약이 만들어졌음을 나타냅니다.When overridden in a derived class, indicates that a reservation has been made.

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

현재 개체를 나타내는 문자열을 반환합니다.Returns a string that represents the current object.

(Inherited from Object)

명시적 인터페이스 구현

IEnumerable.GetEnumerator() IEnumerable.GetEnumerator() IEnumerable.GetEnumerator() IEnumerable.GetEnumerator()

@FSHO1@ReservationCollection에서 반복할 수 있는 열거자를 반환합니다.Returns an enumerator that can iterate through the ReservationCollection. 이 메서드는 상속될 수 없습니다.This method cannot be inherited.

Extension Methods

CopyToDataTable<T>(IEnumerable<T>) CopyToDataTable<T>(IEnumerable<T>) CopyToDataTable<T>(IEnumerable<T>) CopyToDataTable<T>(IEnumerable<T>)

반환을 DataTable 복사본이 들어 있는 DataRow 개체를 지정 된 입력 IEnumerable<T> 개체는 제네릭 매개 변수 TDataRow.Returns a DataTable that contains copies of the DataRow objects, given an input IEnumerable<T> object where the generic parameter T is DataRow.

CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption) CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption) CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption) CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption)

복사본 DataRow 지정 된 개체 DataTable, 지정 된 입력 IEnumerable<T> 개체는 제네릭 매개 변수 TDataRow합니다.Copies DataRow objects to the specified DataTable, given an input IEnumerable<T> object where the generic parameter T is DataRow.

CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption, FillErrorEventHandler) CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption, FillErrorEventHandler) CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption, FillErrorEventHandler) CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption, FillErrorEventHandler)

복사본 DataRow 지정 된 개체 DataTable, 지정 된 입력 IEnumerable<T> 개체는 제네릭 매개 변수 TDataRow합니다.Copies DataRow objects to the specified DataTable, given an input IEnumerable<T> object where the generic parameter T is DataRow.

Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable)

요소를 캐스팅을 IEnumerable 를 지정 된 형식입니다.Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable)

요소를 필터링 하는 IEnumerable 지정된 된 형식에 기반 합니다.Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable) AsParallel(IEnumerable) AsParallel(IEnumerable) AsParallel(IEnumerable)

쿼리를 병렬화할 수 있도록 합니다.Enables parallelization of a query.

AsQueryable(IEnumerable) AsQueryable(IEnumerable) AsQueryable(IEnumerable) AsQueryable(IEnumerable)

변환를 IEnumerableIQueryable합니다.Converts an IEnumerable to an IQueryable.

Ancestors<T>(IEnumerable<T>) Ancestors<T>(IEnumerable<T>) Ancestors<T>(IEnumerable<T>) Ancestors<T>(IEnumerable<T>)

소스 컬렉션에 있는 모든 노드의 상위 항목이 들어 있는 요소 컬렉션을 반환합니다.Returns a collection of elements that contains the ancestors of every node in the source collection.

Ancestors<T>(IEnumerable<T>, XName) Ancestors<T>(IEnumerable<T>, XName) Ancestors<T>(IEnumerable<T>, XName) Ancestors<T>(IEnumerable<T>, XName)

소스 컬렉션에 있는 모든 노드의 상위 항목이 들어 있는 필터링된 요소 컬렉션을 반환합니다.Returns a filtered collection of elements that contains the ancestors of every node in the source collection. 일치하는 XName이 있는 요소만 컬렉션에 포함됩니다.Only elements that have a matching XName are included in the collection.

DescendantNodes<T>(IEnumerable<T>) DescendantNodes<T>(IEnumerable<T>) DescendantNodes<T>(IEnumerable<T>) DescendantNodes<T>(IEnumerable<T>)

소스 컬렉션에 있는 모든 문서 및 요소의 하위 노드 컬렉션을 반환합니다.Returns a collection of the descendant nodes of every document and element in the source collection.

Descendants<T>(IEnumerable<T>) Descendants<T>(IEnumerable<T>) Descendants<T>(IEnumerable<T>) Descendants<T>(IEnumerable<T>)

소스 컬렉션에 있는 모든 요소 및 문서의 하위 요소가 들어 있는 요소 컬렉션을 반환합니다.Returns a collection of elements that contains the descendant elements of every element and document in the source collection.

Descendants<T>(IEnumerable<T>, XName) Descendants<T>(IEnumerable<T>, XName) Descendants<T>(IEnumerable<T>, XName) Descendants<T>(IEnumerable<T>, XName)

소스 컬렉션에 있는 모든 요소 및 문서의 하위 요소가 들어 있는 필터링된 요소 컬렉션을 반환합니다.Returns a filtered collection of elements that contains the descendant elements of every element and document in the source collection. 일치하는 XName이 있는 요소만 컬렉션에 포함됩니다.Only elements that have a matching XName are included in the collection.

Elements<T>(IEnumerable<T>) Elements<T>(IEnumerable<T>) Elements<T>(IEnumerable<T>) Elements<T>(IEnumerable<T>)

소스 컬렉션에 있는 모든 요소 및 문서의 자식 요소 컬렉션을 반환합니다.Returns a collection of the child elements of every element and document in the source collection.

Elements<T>(IEnumerable<T>, XName) Elements<T>(IEnumerable<T>, XName) Elements<T>(IEnumerable<T>, XName) Elements<T>(IEnumerable<T>, XName)

소스 컬렉션에 있는 모든 요소 및 문서의 필터링된 자식 요소 컬렉션을 반환합니다.Returns a filtered collection of the child elements of every element and document in the source collection. 일치하는 XName이 있는 요소만 컬렉션에 포함됩니다.Only elements that have a matching XName are included in the collection.

InDocumentOrder<T>(IEnumerable<T>) InDocumentOrder<T>(IEnumerable<T>) InDocumentOrder<T>(IEnumerable<T>) InDocumentOrder<T>(IEnumerable<T>)

소스 컬렉션의 모든 노드가 문서 순으로 정렬되어 들어 있는 노드 컬렉션을 반환합니다.Returns a collection of nodes that contains all nodes in the source collection, sorted in document order.

Nodes<T>(IEnumerable<T>) Nodes<T>(IEnumerable<T>) Nodes<T>(IEnumerable<T>) Nodes<T>(IEnumerable<T>)

소스 컬렉션에 있는 모든 문서 및 요소의 자식 노드 컬렉션을 반환합니다.Returns a collection of the child nodes of every document and element in the source collection.

Remove<T>(IEnumerable<T>) Remove<T>(IEnumerable<T>) Remove<T>(IEnumerable<T>) Remove<T>(IEnumerable<T>)

부모 노드에서 소스 컬렉션의 모든 노드를 제거합니다.Removes every node in the source collection from its parent node.

적용 대상