ReservationCollection ReservationCollection ReservationCollection ReservationCollection Class

Definición

Administra la colección de reservas de espacio realizadas en una secuencia 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)
Herencia
ReservationCollectionReservationCollectionReservationCollectionReservationCollection
Implementaciones

Ejemplos

Las reservas se pueden realizar de dos maneras como se muestra en los ejemplos siguientes.Reservations can be performed in two ways as shown in the following examples. Puede adoptar los ejercicios de los ejemplos para el procesamiento robusto.You can adopt the practices in the samples for robust processing. Observe que esta tarea sólo se puede realizar al utilizar la clase LogRecordSequence basada en 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);  

Comentarios

Esta clase representa un conjunto de áreas de reserva que se realizan en una secuencia de registro.This class represents a set of reservation areas that are made in a record sequence. Al agregar elementos a la colección, se asignan nuevas reservas.Adding items to the collection allocates new reservations. Al quitar los elementos de la colección, se liberan esas reservas.Removing items from the collection frees those reservations.

Una aplicación reserva espacio en el registro cuando tiene datos que se escribirán en el registro en el futuro, pero no puede escribir en él de manera inmediata.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. Las reservas garantizan que los datos se podrán escribir en el registro cuando estén disponibles para su escritura.Reservations provide a guarantee that the data can be written to the log when the data is available to be written. Al utilizar registros, las aplicaciones suelen reservar uno o más registros en un área de cálculo de referencias.When using logs, applications often reserve one or more log records in a marshaling area. Debe reservar los registros antes de anexarlos.You must reserve records prior to appending them.

Las reservas se pueden utilizar para garantizar que se puede completar una operación antes de que se confirmen los datos; de lo contrario, se deshacen los cambios.Reservations can be used to guarantee that an operation can be completed before the data is committed; otherwise, the changes are rolled back. También se puede utilizar para grabar una "acción de deshacer" en el registro.It can also be used to record an "undo action" in the log. Durante una operación de reversión, un administrador de recursos transaccional (RM) debe poder recuperar su estado si se interrumpe el RM durante la operación de reversión.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. Mediante el uso de un área de reserva, un RM puede reservar espacio en un registro antes de utilizarse.By using a reservation area, an RM can reserve space in a log before it is used.

El método ReserveAndAppend puede reservar espacio o anexar datos, o ambos, en función de los parámetros que se especifiquen al realizar la llamada.The ReserveAndAppend method can either reserve space or append data, or both, depending on the parameters that are specified when making the call. A medida que el trabajo progresa en una transacción, una aplicación puede anexar la información de deshacer y reservar espacio para los registros de compensación.As work progresses in a transaction, an application can append the undo information and reserve space for compensation records. Durante una operación de reversión, los registros de compensación que se crean indican lo que se ha deshecho en el disco.During a rollback operation, compensation records that are created indicate what has been undone on the disk. Los registros se anexan utilizando espacio que se ha reservado previamente.The records are appended using space that has been previously reserved. Esto garantiza que un RM no se quedará sin espacio de registro, lo que es una condición grave, mientras realiza una operación de reversión.This guarantees that an RM does not run out of log space, which is a fatal condition, while performing a rollback operation. Si un registro se rellena durante una transacción, una aplicación puede deshacer una transacción sin ningún riesgo sin dañar los datos durables.If a log fills up during a transaction, an application can safely roll back a transaction without corrupting durable data.

CLFS es un sistema de registro conforme con ARIES, diseñado para el registro de escritura previa.CLFS is an ARIES-compliant logging system, meant for write-ahead logging. En el registro de escritura previa, una aplicación escribe un registro de deshacer antes de realizar la operación, reservando la cantidad de espacio que se necesita en el registro para escribir un registro de compensación, que se puede utilizar durante la reversión.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. Más adelante, se utiliza el espacio reservado cuando se escribe realmente el registro de compensación.Later, the reserved space is used when the compensation record is actually written.

Las aplicaciones pueden reservar o tener acceso a un gran espacio en cualquier momento dado (son operaciones mutuamente excluyentes).Applications can either reserve or access long space at any given time (they are mutually exclusive operations). Una vez escrito en el registro un registro de confirmación, una aplicación puede liberar las reservas para los registros de compensación.After a commit record is written to the log, an application can free up the reservations for the compensation records. Esta acción se puede hacer llamando al método FreeReservation o ReserveAndAppend.This action can be done by calling either the FreeReservation or ReserveAndAppend method. Llamar al método ReserveAndAppend garantiza que la operación sea atómica, mientras que llamar al método FreeReservation no lo hace.Calling the ReserveAndAppend method guarantees that the operation is atomic, while calling the FreeReservation method does not.

Al liberar registros, debe liberar los mismos registros que reservó conjuntamente en una llamada anterior al método ReserveAndAppend.When you free records, you must free the same records that you reserved together in a previous call to the ReserveAndAppend method.

Nota

Su implementación de IRecordSequence debe implementar los métodos MakeReservation y FreeReservation para realizar la asignación y desasignación de la reserva real.Your implementation of IRecordSequence must implement the MakeReservation and FreeReservation methods to perform the actual reservation allocation and deallocation. Además, su implementación también debe llamar a ReservationFreed cuando se escribe un registro en un espacio reservado.In addition, your implementation must also call ReservationFreed when a record is written into a reserved space.

Constructores

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

Inicializa una nueva instancia de la clase ReservationCollection.Initializes a new instance of the ReservationCollection class.

Propiedades

Count Count Count Count

Obtiene el número de reservas de la colección.Gets the number of reservations in the collection.

IsReadOnly IsReadOnly IsReadOnly IsReadOnly

Obtiene un valor que indica si la colección es de solo lectura.Gets a value that indicates whether the collection is read-only.

Métodos

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

Asigna una reserva y la agrega a la colección.Allocates a reservation and adds it to the collection. Este método no puede heredarse.This method cannot be inherited.

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

Libera todas las reservas de la colección.Releases all of the reservations in the collection. Este método no puede heredarse.This method cannot be inherited.

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

Determina si se ha realizado una reserva del tamaño especificado.Determines whether a reservation of the specified size has been made. Este método no puede heredarse.This method cannot be inherited.

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

Copia la colección completa en una matriz unidimensional, comenzando por el índice especificado de la matriz de destino.Copies the entire collection to a one-dimensional array, starting at the specified index of the target array. Este método no puede heredarse.This method cannot be inherited.

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

Determina si el objeto especificado es igual al objeto actual.Determines whether the specified object is equal to the current object.

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

Permite que el objeto ReservationCollection libere recursos antes de ser destruido por el recolector de elementos no utilizados.Allows the ReservationCollection to free resources before it is destroyed by the garbage collector.

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

Cuando se invalida en una clase derivada, libera una reserva del tamaño especificado.When overridden in a derived class, releases a reservation of the specified size.

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

Cuando se invalida en una clase derivada, obtiene la mejor reserva correspondiente para un tamaño determinado.When overridden in a derived class, gets the best matching reservation for a given size.

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

Devuelve un enumerador que puede recorrer en iteración ReservationCollection.Returns an enumerator that can iterate through the ReservationCollection. Este método no puede heredarse.This method cannot be inherited.

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

Sirve como la función hash predeterminada.Serves as the default hash function.

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

Obtiene el Type de la instancia actual.Gets the Type of the current instance.

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

Cuando se invalida en una clase derivada, asigna una reserva del tamaño especificado.When overridden in a derived class, allocates a reservation of the specified size.

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

Crea una copia superficial del objeto Object actual.Creates a shallow copy of the current Object.

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

Libera una reserva del tamaño especificado, si se ha realizado una.Releases a reservation of the specified size, if one has been made. Este método no puede heredarse.This method cannot be inherited.

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

Cuando se invalida en una clase derivada, indica que se ha liberado una reserva.When overridden in a derived class, indicates that a reservation has been released.

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

Cuando se invalida en una clase derivada, indica que se ha realizado una reserva.When overridden in a derived class, indicates that a reservation has been made.

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

Devuelve una cadena que representa el objeto actual.Returns a string that represents the current object.

(Inherited from Object)

Implementaciones de interfaz explícitas

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

Devuelve un enumerador que puede recorrer en iteración ReservationCollection.Returns an enumerator that can iterate through the ReservationCollection. Este método no puede heredarse.This method cannot be inherited.

Métodos de extensión

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

Devuelve un objeto DataTable que contiene copias de los objetos DataRow, dado un objeto IEnumerable<T> de entrada donde el parámetro T genérico es 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 en el objeto DataTable especificado, dado un objeto IEnumerable<T> de entrada donde el parámetro T genérico es 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 en el objeto DataTable especificado, dado un objeto IEnumerable<T> de entrada donde el parámetro T genérico es 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)

Convierte los elementos de IEnumerable en el 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 los elementos de IEnumerable en función de un tipo especificado.Filters the elements of an IEnumerable based on a specified type.

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

Habilita la paralelización de una consulta.Enables parallelization of a query.

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

Convierte una interfaz IEnumerable en IQueryable.Converts an IEnumerable to an IQueryable.

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

Devuelve una colección de elementos que contiene los antecesores de todos los nodos de la colección de origen.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)

Devuelve una colección de elementos filtrada que contiene los antecesores de todos los nodos de la colección de origen.Returns a filtered collection of elements that contains the ancestors of every node in the source collection. En la colección sólo se incluyen los elementos que tienen un objeto XName coincidente.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>)

Devuelve una colección de los nodos descendientes de todos los documentos y elementos de la colección de origen.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>)

Devuelve una colección de elementos que contiene los elementos descendientes de todos los elementos y documentos de la colección de origen.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)

Devuelve una colección filtrada de elementos que contiene los elementos descendientes de todos los elementos y documentos de la colección de origen.Returns a filtered collection of elements that contains the descendant elements of every element and document in the source collection. En la colección sólo se incluyen los elementos que tienen un objeto XName coincidente.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>)

Devuelve una colección de los elementos secundarios de todos los elementos y documentos de la colección de origen.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)

Devuelve una colección filtrada de los elementos secundarios de todos los elementos y documentos de la colección de origen.Returns a filtered collection of the child elements of every element and document in the source collection. En la colección sólo se incluyen los elementos que tienen un objeto XName coincidente.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>)

Devuelve una colección de nodos que contiene todos los nodos de la colección de origen, clasificados por 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>)

Devuelve una colección de los nodos secundarios de todos los documentos y elementos de la colección de origen.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>)

Quita todos los nodos de la colección de origen de su nodo primario.Removes every node in the source collection from its parent node.

Se aplica a