Inzicht in transacties in de context van JavaScript SDK

Voltooid

In een database wordt een transactie doorgaans gedefinieerd als een reeks puntbewerkingen die zijn gegroepeerd in één werkeenheid. Er wordt verwacht dat een transactie ACID-garanties biedt:

  • Atomiciteit garandeert dat al het werk dat binnen een transactie wordt uitgevoerd, wordt behandeld als één eenheid waarbij al het werk wordt doorgevoerd of geen.
  • Consistentie zorgt ervoor dat de gegevens altijd in een goede interne status tussen transacties zijn.
  • Isolatie garandeert dat er geen twee transacties met elkaar worden bemoeilijkt. Over het algemeen bieden de meeste commerciële systemen meerdere isolatieniveaus die kunnen worden gebruikt op basis van de behoeften van de toepassing.
  • Duurzaamheid zorgt ervoor dat elke wijziging die in de database wordt doorgevoerd, altijd aanwezig is.

In Azure Cosmos DB for NoSQL voert een opgeslagen procedure een of meer bewerkingen uit als één werkeenheid binnen hetzelfde bereik. Opgeslagen procedures worden geregistreerd in containers en worden uitgevoerd binnen het bereik van die specifieke container.

Notitie

Opgeslagen procedures zijn gericht op één logische partitie. U kunt geen opgeslagen procedure uitvoeren waarmee bewerkingen worden uitgevoerd voor waarden voor logische partitiesleutels.

Transaction with multiple steps within a single scope

Transacties vinden plaats aan de serverzijde in Azure Cosmos DB for NoSQL, dus ze moeten voldoen aan dezelfde beperkingen als veel andere HTTP-aanvragen. Alle bewerkingen binnen een opgeslagen procedure moeten binnen een bepaalde tijd worden voltooid. De bewerkingen moeten met name worden voltooid binnen de time-outduur van de serveraanvraag.

Voor langlopende lijsten met bewerkingen wordt een booleaanse helperwaarde geretourneerd door een JavaScript-functie die een bewerking uitvoert die aangeeft of die bewerking naar verwachting binnen de time-outduur van de aanvraag wordt voltooid. Als de Booleaanse waarde waar is, kunt u doorgaan met de opgeslagen procedure. Zodra die Booleaanse waarde onwaar is, moet de opgeslagen procedure zo snel mogelijk worden voltooid. Op dit moment is het gebruikelijk om een aanwijzer te retourneren, zodat volgende aanroepen naar de opgeslagen procedure kunnen beginnen vanaf de aanwijzer in plaats van de voortgang helemaal terug te spoelen naar het begin van de langlopende lijst met bewerkingen.

Transaction that returns a pointer after indication of a pending timeout