ReservationCollection ReservationCollection ReservationCollection ReservationCollection Class

Definição

Gerencia a coleção de reservas de espaço feitas em uma sequência de registro.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)
Herança
ReservationCollectionReservationCollectionReservationCollectionReservationCollection
Implementações

Exemplos

As reservas podem ser executadas de duas maneiras, conforme mostrado nos exemplos a seguir.Reservations can be performed in two ways as shown in the following examples. Você pode adotar as práticas nos exemplos para processamento robusto.You can adopt the practices in the samples for robust processing. Observe que essa tarefa só pode ser executada ao usar a classe baseada em LogRecordSequence CLFS.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);  

Comentários

Essa classe representa um conjunto de áreas de reserva que são feitas em uma sequência de registro.This class represents a set of reservation areas that are made in a record sequence. A adição de itens à coleção aloca novas reservas.Adding items to the collection allocates new reservations. A remoção de itens da coleção libera essas reservas.Removing items from the collection frees those reservations.

Um aplicativo reserva espaço no log quando ele tem dados que serão gravados no log no futuro, mas não pode escrevê-los imediatamente.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. As reservas fornecem uma garantia de que os dados podem ser gravados no log quando os dados estão disponíveis para gravação.Reservations provide a guarantee that the data can be written to the log when the data is available to be written. Ao usar logs, os aplicativos geralmente reservam um ou mais registros de log em uma área de marshaling.When using logs, applications often reserve one or more log records in a marshaling area. Você deve reservar registros antes de acrescentá-los.You must reserve records prior to appending them.

As reservas podem ser usadas para garantir que uma operação possa ser concluída antes que os dados sejam confirmados; caso contrário, as alterações serão revertidas.Reservations can be used to guarantee that an operation can be completed before the data is committed; otherwise, the changes are rolled back. Ele também pode ser usado para registrar uma "ação de desfazer" no log.It can also be used to record an "undo action" in the log. Durante uma operação de reversão, um Gerenciador de recursos transacionais (RM) deve ser capaz de recuperar seu estado se o RM for interrompido durante a operação de reversão.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. Usando uma área de reserva, um RM pode reservar espaço em um log antes de ser usado.By using a reservation area, an RM can reserve space in a log before it is used.

O ReserveAndAppend método pode reservar espaço ou acrescentar dados, ou ambos, dependendo dos parâmetros que são especificados ao fazer a chamada.The ReserveAndAppend method can either reserve space or append data, or both, depending on the parameters that are specified when making the call. À medida que o trabalho progride em uma transação, um aplicativo pode acrescentar as informações de desfazer e reservar espaço para registros de remuneração.As work progresses in a transaction, an application can append the undo information and reserve space for compensation records. Durante uma operação de reversão, os registros de compensação criados indicam o que foi desfeito no disco.During a rollback operation, compensation records that are created indicate what has been undone on the disk. Os registros são anexados usando o espaço que foi reservado anteriormente.The records are appended using space that has been previously reserved. Isso garante que um RM não fique sem espaço de log, que é uma condição fatal, enquanto executa uma operação de reversão.This guarantees that an RM does not run out of log space, which is a fatal condition, while performing a rollback operation. Se um log for preenchido durante uma transação, um aplicativo poderá reverter com segurança uma transação sem corromper dados duráveis.If a log fills up during a transaction, an application can safely roll back a transaction without corrupting durable data.

CLFS é um sistema de registro em conformidade com ARIES, destinado para registro em log write-ahead.CLFS is an ARIES-compliant logging system, meant for write-ahead logging. No registro em log write-ahead, um aplicativo grava um registro de desfazer antes de executar a operação, reservando a quantidade de espaço que ele leva no log para gravar um registro de compensação, que pode ser usado durante a reversão.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. Posteriormente, o espaço reservado é usado quando o registro de compensação é realmente gravado.Later, the reserved space is used when the compensation record is actually written.

Os aplicativos podem reservar ou acessar o espaço longo em um determinado momento (são operações mutuamente exclusivas).Applications can either reserve or access long space at any given time (they are mutually exclusive operations). Depois que um registro de confirmação é gravado no log, um aplicativo pode liberar as reservas para os registros de remuneração.After a commit record is written to the log, an application can free up the reservations for the compensation records. Essa ação pode ser feita chamando o FreeReservation método ou. ReserveAndAppendThis action can be done by calling either the FreeReservation or ReserveAndAppend method. Chamar o ReserveAndAppend método garante que a operação é atômica, ao chamar o FreeReservation método não.Calling the ReserveAndAppend method guarantees that the operation is atomic, while calling the FreeReservation method does not.

Ao liberar registros, você deve liberar os mesmos registros que você reservou em conjunto em uma chamada anterior para o ReserveAndAppend método.When you free records, you must free the same records that you reserved together in a previous call to the ReserveAndAppend method.

Observação

Sua implementação do IRecordSequence deve implementar os MakeReservation métodos FreeReservation e para executar a alocação de reserva e a desalocação reais.Your implementation of IRecordSequence must implement the MakeReservation and FreeReservation methods to perform the actual reservation allocation and deallocation. Além disso, sua implementação também deve chamar ReservationFreed quando um registro é gravado em um espaço reservado.In addition, your implementation must also call ReservationFreed when a record is written into a reserved space.

Construtores

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

Inicializa uma nova instância da classe ReservationCollection.Initializes a new instance of the ReservationCollection class.

Propriedades

Count Count Count Count

Obtém o número de reservas na coleção.Gets the number of reservations in the collection.

IsReadOnly IsReadOnly IsReadOnly IsReadOnly

Obtém um valor que indica se a coleção é somente leitura.Gets a value that indicates whether the collection is read-only.

Métodos

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

Aloca uma reserva e a adiciona à coleção.Allocates a reservation and adds it to the collection. Esse método não pode ser herdado.This method cannot be inherited.

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

Libera todas as reservas na coleção.Releases all of the reservations in the collection. Esse método não pode ser herdado.This method cannot be inherited.

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

Determina se uma reserva do tamanho especificado foi feita.Determines whether a reservation of the specified size has been made. Esse método não pode ser herdado.This method cannot be inherited.

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

Copia toda a coleção para uma matriz unidimensional, iniciando no índice especificado da matriz de destino.Copies the entire collection to a one-dimensional array, starting at the specified index of the target array. Esse método não pode ser herdado.This method cannot be inherited.

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

Determina se o objeto especificado é igual ao objeto atual.Determines whether the specified object is equal to the current object.

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

Permite que o ReservationCollection libere recursos antes de ser destruído pelo coletor de lixo.Allows the ReservationCollection to free resources before it is destroyed by the garbage collector.

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

Quando substituído em uma classe derivada, libera uma reserva do tamanho especificado.When overridden in a derived class, releases a reservation of the specified size.

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

Quando substituído em uma classe derivada, obtém a reserva de melhor correspondência para um tamanho fornecido.When overridden in a derived class, gets the best matching reservation for a given size.

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

Retorna um enumerador que pode ser iterado por meio de ReservationCollection.Returns an enumerator that can iterate through the ReservationCollection. Esse método não pode ser herdado.This method cannot be inherited.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Serve como a função de hash padrão.Serves as the default hash function.

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

Obtém o Type da instância atual.Gets the Type of the current instance.

(Inherited from Object)
MakeReservation(Int64) MakeReservation(Int64) MakeReservation(Int64) MakeReservation(Int64)

Quando substituído em uma classe derivada, aloca uma reserva do tamanho especificado.When overridden in a derived class, allocates a reservation of the specified size.

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

Cria uma cópia superficial do Object atual.Creates a shallow copy of the current Object.

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

Liberará uma reserva do tamanho especificado, se uma tiver sido feita.Releases a reservation of the specified size, if one has been made. Esse método não pode ser herdado.This method cannot be inherited.

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

Quando substituído em uma classe derivada, indica que uma reserva foi liberada.When overridden in a derived class, indicates that a reservation has been released.

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

Quando substituído em uma classe derivada, indica uma reserva foi feita.When overridden in a derived class, indicates that a reservation has been made.

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

Retorna uma cadeia de caracteres que representa o objeto atual.Returns a string that represents the current object.

(Inherited from Object)

Implantações explícitas de interface

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

Retorna um enumerador que pode ser iterado por meio de ReservationCollection.Returns an enumerator that can iterate through the ReservationCollection. Esse método não pode ser herdado.This method cannot be inherited.

Métodos de Extensão

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

Retorna um DataTable que contém cópias dos objetos DataRow, dado um objeto IEnumerable<T> de entrada em que o parâmetro genérico T é DataRow.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)

Copia objetos DataRow no DataTable especificado, dado um objeto IEnumerable<T> de entrada em que o parâmetro genérico T é DataRow.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)

Copia objetos DataRow no DataTable especificado, dado um objeto IEnumerable<T> de entrada em que o parâmetro genérico T é DataRow.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)

Converte os elementos de um IEnumerable para o tipo especificado.Casts the elements of an IEnumerable to the specified type.

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

Filtra os elementos de um IEnumerable com base em um tipo especificado.Filters the elements of an IEnumerable based on a specified type.

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

Habilita a paralelização de uma consulta.Enables parallelization of a query.

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

Converte um IEnumerable em um IQueryable.Converts an IEnumerable to an IQueryable.

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

Retorna uma coleção de elementos que contém os ancestrais de cada nó na coleção de origem.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)

Retorna uma coleção filtrada de elementos que contém os ancestrais de cada nó na coleção de origem.Returns a filtered collection of elements that contains the ancestors of every node in the source collection. Somente os elementos que têm um XName correspondente são incluídos na coleção.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>)

Retorna uma coleção dos nós descendentes de todos os documentos e elementos na coleção de origem.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>)

Retorna uma coleção de elementos que contém os elementos descendentes de cada elemento e o documento na coleção de origem.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)

Retorna uma coleção filtrada de elementos que contém os elementos descendentes de cada elemento e o documento na coleção de origem.Returns a filtered collection of elements that contains the descendant elements of every element and document in the source collection. Somente os elementos que têm um XName correspondente são incluídos na coleção.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>)

Retorna uma coleção dos filhos elementos de cada elemento e o documento na coleção de origem.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)

Retorna uma coleção filtrada dos elementos filho de cada elemento e documento na coleção de origem.Returns a filtered collection of the child elements of every element and document in the source collection. Somente os elementos que têm um XName correspondente são incluídos na coleção.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>)

Retorna uma coleção de nós que contém todos os nós na coleção de origem, classificados em ordem segundo o documento.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>)

Retorna uma coleção dos nós filhos de todos os documentos e elementos na coleção de origem.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>)

Remove todos os nós na coleção de origem do respectivo nó pai.Removes every node in the source collection from its parent node.

Aplica-se a