ReservationCollection ReservationCollection ReservationCollection ReservationCollection Class

Definizione

Gestisce la raccolta di prenotazioni dello spazio eseguite in una sequenza di record.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)
Ereditarietà
ReservationCollectionReservationCollectionReservationCollectionReservationCollection
Implementazioni

Esempi

Le prenotazioni possono essere eseguite in due modalità come illustrato negli esempi riportati di seguito.Reservations can be performed in two ways as shown in the following examples. È possibile adottare le pratiche negli esempi per un'elaborazione affidabile.You can adopt the practices in the samples for robust processing. Questa attività può essere eseguita solo se si usa la classe LogRecordSequence basata su 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);  

Commenti

Questa classe rappresenta un set di aree di prenotazione create in una sequenza di record.This class represents a set of reservation areas that are made in a record sequence. L'aggiunta di elementi alla raccolta comporta l'allocazione di nuove prenotazioni.Adding items to the collection allocates new reservations. La rimozione di elementi dalla raccolta comporta la liberazione di tali prenotazioni.Removing items from the collection frees those reservations.

Lo spazio viene riservato nel log dall'applicazione quando contiene dati che non possono essere scritti nel log immediatamente, ma che devono essere scritti in seguito.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. Le prenotazioni costituiscono la garanzia che i dati verranno scritti nel log quando saranno disponibili per questa operazione.Reservations provide a guarantee that the data can be written to the log when the data is available to be written. Quando si utilizzano i log, le applicazioni riservano spesso uno o più record di log in un'area di marshalling.When using logs, applications often reserve one or more log records in a marshaling area. È necessario riservare i record prima di aggiungerli.You must reserve records prior to appending them.

Le prenotazioni possono essere utilizzate a garanzia che un'operazione possa essere completata prima che venga eseguito il commit dei dati, in caso contrario viene eseguito il rollback delle modifiche.Reservations can be used to guarantee that an operation can be completed before the data is committed; otherwise, the changes are rolled back. Possono inoltre essere utilizzate per registrare un'"azione di annullamento" nel log.It can also be used to record an "undo action" in the log. Durante un'operazione di rollback è necessario che il gestore di risorse transazionale sia in grado di ripristinare il proprio stato se viene interrotto durante l'operazione di rollback.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. L'impiego di un'area di prenotazione consente al gestore di risorse di riservare spazio in un log prima che venga utilizzato.By using a reservation area, an RM can reserve space in a log before it is used.

Il metodo ReserveAndAppend è in grado di riservare spazio o aggiungere dati o di eseguire entrambe le operazioni, a seconda dei parametri specificati durante la chiamata.The ReserveAndAppend method can either reserve space or append data, or both, depending on the parameters that are specified when making the call. Man mano che una transazione viene elaborata, un'applicazione può aggiungere le informazioni di annullamento e riservare spazio per i record di compensazione.As work progresses in a transaction, an application can append the undo information and reserve space for compensation records. Durante un'operazione di rollback, i record di compensazione creati indicano ciò che è stato annullato sul disco.During a rollback operation, compensation records that are created indicate what has been undone on the disk. I record vengono aggiunti utilizzando lo spazio precedentemente riservato.The records are appended using space that has been previously reserved. Ciò garantisce che il gestore di risorse non esaurisca spazio di log, condizione irreversibile, durante l'esecuzione di un'operazione di rollback.This guarantees that an RM does not run out of log space, which is a fatal condition, while performing a rollback operation. Se un log si riempie durante una transazione, è possibile per l'applicazione eseguire senza problemi il rollback della transazione senza danneggiare dati durevoli.If a log fills up during a transaction, an application can safely roll back a transaction without corrupting durable data.

CLFS è un sistema di registrazione conforme con ARIES, specifico per il log write-ahead.CLFS is an ARIES-compliant logging system, meant for write-ahead logging. Con questo tipo di registrazione un'applicazione scrive un record di annullamento prima di eseguire l'operazione, prenotando la quantità di spazio del log necessaria per scrivere un record di compensazione, che può essere utilizzato durante il rollback.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. Lo spazio riservato verrà utilizzato in un secondo momento quando il record di compensazione verrà effettivamente scritto.Later, the reserved space is used when the compensation record is actually written.

Le applicazioni possono prenotare o accedere allo spazio di registro in qualsiasi momento (si tratta di operazioni che si escludono a vicenda).Applications can either reserve or access long space at any given time (they are mutually exclusive operations). Dopo la scrittura nel log di un record di commit, un'applicazione può liberare le prenotazioni per i record di compensazione.After a commit record is written to the log, an application can free up the reservations for the compensation records. Questa azione può essere eseguita chiamando il metodo FreeReservation o il metodo ReserveAndAppend.This action can be done by calling either the FreeReservation or ReserveAndAppend method. La chiamata al metodo ReserveAndAppend garantisce che l'operazione sia atomica, diversamente dalla chiamata al metodo FreeReservation.Calling the ReserveAndAppend method guarantees that the operation is atomic, while calling the FreeReservation method does not.

Quando si liberano record, è necessario liberare gli stessi record prenotati insieme in una chiamata precedente al metodo ReserveAndAppend.When you free records, you must free the same records that you reserved together in a previous call to the ReserveAndAppend method.

Nota

L'implementazione di IRecordSequence deve implementare i metodi MakeReservation e FreeReservation per eseguire le effettive operazioni di allocazione e deallocazione della prenotazione.Your implementation of IRecordSequence must implement the MakeReservation and FreeReservation methods to perform the actual reservation allocation and deallocation. L'implementazione, inoltre, deve chiamare ReservationFreed quando un record viene scritto in uno spazio riservato.In addition, your implementation must also call ReservationFreed when a record is written into a reserved space.

Costruttori

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

Inizializza una nuova istanza della classe ReservationCollection.Initializes a new instance of the ReservationCollection class.

Proprietà

Count Count Count Count

Ottiene il numero di prenotazioni contenute nella raccolta.Gets the number of reservations in the collection.

IsReadOnly IsReadOnly IsReadOnly IsReadOnly

Ottiene un valore che indica se la raccolta è di sola lettura.Gets a value that indicates whether the collection is read-only.

Metodi

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

Alloca una prenotazione e la aggiunge alla raccolta.Allocates a reservation and adds it to the collection. Questo metodo non può essere ereditato.This method cannot be inherited.

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

Rilascia tutte le prenotazioni contenute nella raccolta.Releases all of the reservations in the collection. Questo metodo non può essere ereditato.This method cannot be inherited.

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

Determina se una prenotazione della dimensione specificata è stata eseguita.Determines whether a reservation of the specified size has been made. Questo metodo non può essere ereditato.This method cannot be inherited.

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

Copia l'intera raccolta in una matrice unidimensionale, a partire dall'indice specificato della matrice di destinazione.Copies the entire collection to a one-dimensional array, starting at the specified index of the target array. Questo metodo non può essere ereditato.This method cannot be inherited.

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

Determina se l'oggetto specificato è uguale all'oggetto corrente.Determines whether the specified object is equal to the current object.

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

Consente all'oggetto ReservationCollection di liberare risorse prima di essere eliminato definitivamente dal Garbage Collector.Allows the ReservationCollection to free resources before it is destroyed by the garbage collector.

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

Se sottoposto a override in una classe derivata, rilascia una prenotazione della dimensione specificata.When overridden in a derived class, releases a reservation of the specified size.

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

Quando viene sottoposto a override in una classe derivata, ottiene la migliore prenotazione corrispondente per una data dimensione.When overridden in a derived class, gets the best matching reservation for a given size.

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

Restituisce un enumeratore che consente di scorrere l'oggetto ReservationCollection.Returns an enumerator that can iterate through the ReservationCollection. Questo metodo non può essere ereditato.This method cannot be inherited.

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

Funge da funzione hash predefinita.Serves as the default hash function.

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

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

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

Se sottoposto a override in una classe derivata, alloca una prenotazione della dimensione specificata.When overridden in a derived class, allocates a reservation of the specified size.

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

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

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

Rilascia una prenotazione della dimensione specificata, se precedentemente creata.Releases a reservation of the specified size, if one has been made. Questo metodo non può essere ereditato.This method cannot be inherited.

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

Se sottoposto a override in una classe derivata, indica che una prenotazione è stata rilasciata.When overridden in a derived class, indicates that a reservation has been released.

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

Se sottoposto a override in una classe derivata, indica che una prenotazione è stata creata.When overridden in a derived class, indicates that a reservation has been made.

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

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(Inherited from Object)

Implementazioni dell'interfaccia esplicita

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

Restituisce un enumeratore che consente di scorrere l'oggetto ReservationCollection.Returns an enumerator that can iterate through the ReservationCollection. Questo metodo non può essere ereditato.This method cannot be inherited.

Metodi di estensione

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

Restituisce un oggetto DataTable che contiene copie degli oggetti DataRow, dato un oggetto IEnumerable<T> di input dove il parametro generico DataRow è T.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 gli oggetti DataRow nell'oggetto DataTable specificato, dato un oggetto IEnumerable<T> di input dove il parametro generico 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 gli oggetti DataRow nell'oggetto DataTable specificato, dato un oggetto IEnumerable<T> di input dove il parametro generico 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)

Esegue il cast degli elementi di un oggetto IEnumerable nel tipo specificato.Casts the elements of an IEnumerable to the specified type.

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

Filtra gli elementi di un oggetto IEnumerable in base a un tipo specificato.Filters the elements of an IEnumerable based on a specified type.

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

Consente la parallelizzazione di una query.Enables parallelization of a query.

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

Converte un oggetto IEnumerable in un oggetto IQueryable.Converts an IEnumerable to an IQueryable.

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

Restituisce una raccolta di elementi che contiene i predecessori di ciascun nodo nella raccolta di origine.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)

Restituisce una raccolta di elementi filtrati che contiene i predecessori di ciascun nodo nella raccolta di origine.Returns a filtered collection of elements that contains the ancestors of every node in the source collection. Solo gli elementi che hanno un oggetto XName corrispondente vengono inclusi nella raccolta.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>)

Restituisce una raccolta di nodi discendenti di ciascun documento ed elemento nella raccolta di origine.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>)

Restituisce una raccolta di elementi che contiene gli elementi discendenti di ciascun elemento e documento nella raccolta di origine.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)

Restituisce una raccolta filtrata di elementi che contiene gli elementi discendenti di ciascun elemento e documento nella raccolta di origine.Returns a filtered collection of elements that contains the descendant elements of every element and document in the source collection. Solo gli elementi che hanno un oggetto XName corrispondente vengono inclusi nella raccolta.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>)

Restituisce una raccolta di elementi figlio di ciascun elemento e documento nella raccolta di origine.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)

Restituisce una raccolta filtrata degli elementi figlio di ciascun elemento e documento nella raccolta di origine.Returns a filtered collection of the child elements of every element and document in the source collection. Solo gli elementi che hanno un oggetto XName corrispondente vengono inclusi nella raccolta.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>)

Restituisce una raccolta di nodi che contiene tutti i nodi nella raccolta di origine ordinati in base all'ordine con cui sono riportati nel 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>)

Restituisce una raccolta di nodi figlio di ciascun documento ed elemento nella raccolta di origine.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>)

Rimuove ciascun nodo nella raccolta di origine dal nodo padre.Removes every node in the source collection from its parent node.

Si applica a