ReservationCollection Classe

Définition

Gère la collection de réservations d'espace faites dans une séquence d'enregistrement.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)
Héritage
ReservationCollection
Implémente

Exemples

Les réservations peuvent être exécutées de deux manières, comme le montrent les exemples suivants.Reservations can be performed in two ways as shown in the following examples. Vous pouvez adopter ces pratiques dans les exemples pour un traitement fiable.You can adopt the practices in the samples for robust processing. Notez que cette tâche ne peut être effectuée que lors de l’utilisation de la classe LogRecordSequence basée sur un système 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);  

Remarques

La classe représente un jeu des zones de réservation établies dans une séquence d'enregistrements.This class represents a set of reservation areas that are made in a record sequence. L'ajout d'éléments à la collection alloue de nouvelles réservations.Adding items to the collection allocates new reservations. La suppression d’éléments de la collection libère ces réservations.Removing items from the collection frees those reservations.

Une application réserve l'espace dans le journal lorsqu'elle possède des données à écrire ultérieurement dans le journal, mais ne peut pas les écrire immédiatement.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. Les réservations offrent la garantie que les données pourront être écrites dans le journal lorsqu'elles seront disponibles pour être écrites.Reservations provide a guarantee that the data can be written to the log when the data is available to be written. Lorsque vous utilisez des journaux, les applications réservent souvent un ou plusieurs enregistrements de journal dans une zone de marshaling.When using logs, applications often reserve one or more log records in a marshaling area. Vous devez réserver des enregistrements avant de les ajouter.You must reserve records prior to appending them.

Les réservations peuvent être utilisées pour garantir qu’une opération peut être effectuée avant que les données soient validées ; si tel n’est pas le cas, les modifications sont restaurées.Reservations can be used to guarantee that an operation can be completed before the data is committed; otherwise, the changes are rolled back. Elles peuvent servir à enregistrer une « opération d'annulation » dans le journal.It can also be used to record an "undo action" in the log. Pendant une opération de restauration, un gestionnaire de ressources de transaction (RM) doit être capable de restaurer son état en cas d’interruption du RM pendant l’opération de restauration.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. En se servant d'une zone de réservation, un RM peut réserver de l'espace dans un journal avant qu'il soit utilisé.By using a reservation area, an RM can reserve space in a log before it is used.

La méthode ReserveAndAppend peut réserver l'espace, ajouter des données, ou les deux, suivant les paramètres spécifiés au moment de l'appel.The ReserveAndAppend method can either reserve space or append data, or both, depending on the parameters that are specified when making the call. À mesure que le travail progresse dans une transaction, une application peut ajouter les informations d'annulation et réserver l'espace pour les enregistrements de compensation.As work progresses in a transaction, an application can append the undo information and reserve space for compensation records. Pendant une opération de restauration, les enregistrements de compensation qui sont créés indiquent ce qui a été annulé sur le disque.During a rollback operation, compensation records that are created indicate what has been undone on the disk. Les enregistrements sont ajoutés à l'aide de l'espace préalablement réservé.The records are appended using space that has been previously reserved. Ce système garantit qu'un RM ne manque pas d'espace de journal, ce qui équivaut à une condition fatale, en cours d'opération de restauration.This guarantees that an RM does not run out of log space, which is a fatal condition, while performing a rollback operation. Si un journal se remplit complètement pendant une transaction, une application peut restaurer sans risque une transaction sans endommager de données durables.If a log fills up during a transaction, an application can safely roll back a transaction without corrupting durable data.

CLFS est un système de journalisation de type ARIES, conçu pour la journalisation WAL (write-ahead log).CLFS is an ARIES-compliant logging system, meant for write-ahead logging. Dans la journalisation WAL, une application inscrit une opération d'annulation avant de la réaliser, réservant l'espace qu'elle occupe dans le journal pour inscrire un enregistrement de compensation, qui peut servir lors d'une restauration.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. L'espace réservé est ensuite utilisé lorsque l'enregistrement de compensation est effectivement écrit.Later, the reserved space is used when the compensation record is actually written.

Les applications peuvent soit réserver, soit accéder à, un espace conséquent à tout moment (ces opérations sont mutuellement exclusives).Applications can either reserve or access long space at any given time (they are mutually exclusive operations). Lorsqu’un enregistrement de validation est écrit dans le journal, une application peut libérer les réservations faites pour les enregistrements de compensation.After a commit record is written to the log, an application can free up the reservations for the compensation records. Cette action peut se faire en appelant la méthode FreeReservation ou ReserveAndAppend.This action can be done by calling either the FreeReservation or ReserveAndAppend method. Appeler la méthode ReserveAndAppend garantit que l'opération est atomique, ce que ne fait pas la méthode FreeReservation.Calling the ReserveAndAppend method guarantees that the operation is atomic, while calling the FreeReservation method does not.

Lorsque vous libérez des enregistrements, vous devez libérer les mêmes enregistrements que vous avez réservés ensemble dans un appel précédent à la méthode ReserveAndAppend.When you free records, you must free the same records that you reserved together in a previous call to the ReserveAndAppend method.

Notes

Votre implémentation de IRecordSequence doit implémenter les méthodes MakeReservation et FreeReservation pour effectuer l'allocation et la désallocation effectives des réservations.Your implementation of IRecordSequence must implement the MakeReservation and FreeReservation methods to perform the actual reservation allocation and deallocation. De plus, votre implémentation doit également appeler ReservationFreed lorsqu'un enregistrement est écrit dans un espace réservé.In addition, your implementation must also call ReservationFreed when a record is written into a reserved space.

Constructeurs

ReservationCollection()

Initialise une nouvelle instance de la classe ReservationCollection.Initializes a new instance of the ReservationCollection class.

Propriétés

Count

Obtient le nombre de réservations dans la collection.Gets the number of reservations in the collection.

IsReadOnly

Obtient une valeur qui indique si la collection est en lecture seule.Gets a value that indicates whether the collection is read-only.

Méthodes

Add(Int64)

Alloue une réservation et l’ajoute à la collection.Allocates a reservation and adds it to the collection. Cette méthode ne peut pas être héritée.This method cannot be inherited.

Clear()

Libère toutes les réservations dans la collection.Releases all of the reservations in the collection. Cette méthode ne peut pas être héritée.This method cannot be inherited.

Contains(Int64)

Détermine si une réservation de la taille spécifiée a été faite.Determines whether a reservation of the specified size has been made. Cette méthode ne peut pas être héritée.This method cannot be inherited.

CopyTo(Int64[], Int32)

Copie l’ensemble de la collection dans un tableau à une dimension, en démarrant à l’index spécifié du tableau cible.Copies the entire collection to a one-dimensional array, starting at the specified index of the target array. Cette méthode ne peut pas être héritée.This method cannot be inherited.

Equals(Object)

Détermine si l'objet spécifié est identique à l'objet actuel.Determines whether the specified object is equal to the current object.

(Hérité de Object)
Finalize()

Permet au ReservationCollection de libérer des ressources avant d’être détruit par le garbage collector.Allows the ReservationCollection to free resources before it is destroyed by the garbage collector.

FreeReservation(Int64)

En cas de substitution dans une classe dérivée, libère une réservation de la taille spécifiée.When overridden in a derived class, releases a reservation of the specified size.

GetBestMatchingReservation(Int64)

En cas de substitution dans une classe dérivée, reçoit la meilleure réservation correspondante pour une taille donnée.When overridden in a derived class, gets the best matching reservation for a given size.

GetEnumerator()

Retourne un énumérateur qui peut itérer au sein de ReservationCollection.Returns an enumerator that can iterate through the ReservationCollection. Cette méthode ne peut pas être héritée.This method cannot be inherited.

GetHashCode()

Fait office de fonction de hachage par défaut.Serves as the default hash function.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.Gets the Type of the current instance.

(Hérité de Object)
MakeReservation(Int64)

En cas de substitution dans une classe dérivée, alloue une réservation de la taille spécifiée.When overridden in a derived class, allocates a reservation of the specified size.

MemberwiseClone()

Crée une copie superficielle de l'objet Object actuel.Creates a shallow copy of the current Object.

(Hérité de Object)
Remove(Int64)

Libère une réservation de la taille spécifiée, s’il en existe.Releases a reservation of the specified size, if one has been made. Cette méthode ne peut pas être héritée.This method cannot be inherited.

ReservationFreed(Int64)

En cas de substitution dans une classe dérivée, indique qu’une réservation a été libérée.When overridden in a derived class, indicates that a reservation has been released.

ReservationMade(Int64)

En cas de substitution dans une classe dérivée, indique qu'une réservation a été faite.When overridden in a derived class, indicates that a reservation has been made.

ToString()

Retourne une chaîne qui représente l'objet actuel.Returns a string that represents the current object.

(Hérité de Object)

Implémentations d’interfaces explicites

IEnumerable.GetEnumerator()

Retourne un énumérateur qui peut itérer au sein de ReservationCollection.Returns an enumerator that can iterate through the ReservationCollection. Cette méthode ne peut pas être héritée.This method cannot be inherited.

Méthodes d’extension

CopyToDataTable<T>(IEnumerable<T>)

Retourne un DataTable qui contient des copies des objets DataRow, à partir d'un objet d'entrée IEnumerable<T> où le paramètre générique T est 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)

Copie les objets DataRow vers le DataTable spécifié, à partir d'un objet d'entrée IEnumerable<T> où le paramètre générique T est 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)

Copie les objets DataRow vers le DataTable spécifié, à partir d'un objet d'entrée IEnumerable<T> où le paramètre générique T est DataRow.Copies DataRow objects to the specified DataTable, given an input IEnumerable<T> object where the generic parameter T is DataRow.

Cast<TResult>(IEnumerable)

Effectue un cast des éléments d'un IEnumerable vers le type spécifié.Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable)

Filtre les éléments d'un IEnumerable en fonction du type spécifié.Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable)

Active la parallélisation d'une requête.Enables parallelization of a query.

AsQueryable(IEnumerable)

Convertit un IEnumerable en IQueryable.Converts an IEnumerable to an IQueryable.

Ancestors<T>(IEnumerable<T>)

Retourne une collection d'éléments qui contient les ancêtres de chaque nœud de la collection source.Returns a collection of elements that contains the ancestors of every node in the source collection.

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

Retourne une collection d'éléments filtrée qui contient les ancêtres de chaque nœud de la collection source.Returns a filtered collection of elements that contains the ancestors of every node in the source collection. Seuls les éléments avec un XName correspondant sont inclus dans la collection.Only elements that have a matching XName are included in the collection.

DescendantNodes<T>(IEnumerable<T>)

Retourne une collection des nœuds descendants de chaque document et élément de la collection source.Returns a collection of the descendant nodes of every document and element in the source collection.

Descendants<T>(IEnumerable<T>)

Retourne une collection d'éléments qui contient les éléments descendants de tous les éléments et tous les documents de la collection source.Returns a collection of elements that contains the descendant elements of every element and document in the source collection.

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

Retourne une collection d'éléments filtrée qui contient les éléments descendants de tous les éléments et tous les documents de la collection source.Returns a filtered collection of elements that contains the descendant elements of every element and document in the source collection. Seuls les éléments avec un XName correspondant sont inclus dans la collection.Only elements that have a matching XName are included in the collection.

Elements<T>(IEnumerable<T>)

Retourne une collection des éléments enfants de chaque élément et document de la collection source.Returns a collection of the child elements of every element and document in the source collection.

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

Retourne une collection filtrée des éléments enfants de chaque élément et document de la collection source.Returns a filtered collection of the child elements of every element and document in the source collection. Seuls les éléments avec un XName correspondant sont inclus dans la collection.Only elements that have a matching XName are included in the collection.

InDocumentOrder<T>(IEnumerable<T>)

Retourne une collection de nœuds qui contient tous les nœuds de la collection source, triés selon l'ordre des documents.Returns a collection of nodes that contains all nodes in the source collection, sorted in document order.

Nodes<T>(IEnumerable<T>)

Retourne une collection des nœuds enfants de chaque document et élément de la collection source.Returns a collection of the child nodes of every document and element in the source collection.

Remove<T>(IEnumerable<T>)

Supprime chaque nœud de la collection source de son nœud parent.Removes every node in the source collection from its parent node.

S’applique à