sql >> Database >  >> NoSQL >> MongoDB

Commit in twee fasen in MongoDB

Wanneer de applicatie of database plotseling crasht tussen het toepassen van de transactie op A en het toepassen van de transactie op B, zal er nog steeds een transactie zijn met state:"pending" in de wereldwijde transactieverzameling. Uw herstelscript dat u uitvoert na een crash zou dit moeten opmerken, de twee accounts controleren en zien dat er een transactie in behandeling is in het ene, maar niet het andere account. Het weet nu alles wat het moet weten om de transactie terug te draaien of te voltooien.

Ja, het schrijven van een herstelscript dat zo slim is, is niet eenvoudig. Maar transacties in een databasesysteem dat niet voor hen is ontworpen, is altijd moeilijk. Soms kunt u het vereisen van transacties in MongoDB omzeilen door uw documenten zo te ontwerpen dat velden die samen moeten worden bijgewerkt, altijd in hetzelfde document staan, maar er is niet altijd een verstandige manier om dit te doen. Wanneer uw use-case absoluut transacties nodig heeft, bescherm dan uw gezond verstand en gebruik een relationele database.



  1. Mongoose - Krijg een lijst met _ids in plaats van een reeks objecten met _id

  2. Verander variabele waarde in document na enige tijd verstrijkt?

  3. mongodb:hoe kaart te debuggen/verminderen op mongodb shell

  4. ga verder in cursor.forEach()