Optimistic concurrency control: Difference between revisions

Content deleted Content added
Examples: this part was accidentally put into a ref; add cn template
 
(2 intermediate revisions by 2 users not shown)
Line 24:
* The [[Grails (framework)|Grails]] framework uses OCC in its default conventions.<ref>{{cite web | url = http://grails.org/doc/1.0.x/guide/single.html#5.3.5%20Pessimistic%20and%20Optimistic%20Locking | title = Object Relational Mapping (GORM) | work = Grails Framework Documentation | url-status = dead | archive-url = https://web.archive.org/web/20140815173309/http://grails.org/doc/1.0.x/guide/single.html#5.3.5%20Pessimistic%20and%20Optimistic%20Locking | archive-date = 2014-08-15 }}</ref>
* The [[GT.M]] database engine uses OCC for managing transactions<ref>{{cite web | url = http://tinco.pair.com/bhaskar/gtm/doc/books/pg/UNIX_manual/ch05s17.html | title = Transaction Processing | work = GT.M Programmers Guide UNIX Edition}}</ref> (even single updates are treated as mini-transactions).
* [[Microsoft]]'s [[Entity Framework]] (including Code-First) has built-in support for OCC based on a binary timestamp value.<ref>{{cite web | url = httphttps://blogslearn.msdnmicrosoft.com/ben-us/alexjef/archivecore/2009saving/05/20/tip-19-how-to-useconcurrency?tabs=data-annotations#optimistic-concurrency-in-the-entity-framework.aspx | title = TipHandling 19Concurrency Conflicts How| towork use Optimistic Concurrency with the= Entity Framework | work = MSDNdocumentation Blogshub | date = 195 MayJuly 20092023}}</ref>
* Most [[revision control]] systems support the "merge" model for concurrency, which is OCC.{{cn|date=February 2023}}
* [[Mimer SQL]] is a [[DBMS]] that only implements optimistic concurrency control.<ref>{{cite web | url = https://developer.mimer.com/article/transaction-concurrency-optimistic-concurrency-control/ | title = Transaction Concurrency - Optimistic Concurrency Control | work = Mimer Developers - Features | access-date = 22 Dec 2023}}</ref>
* [[Google App Engine]] data store uses OCC.<ref>{{cite web | url = http://code.google.com/appengine/docs/whatisgoogleappengine.html | title = The Datastore | work = What Is Google App Engine? | date = 27 August 2010}}</ref>
* The [[Apache Solr]] search engine supports OCC via the {{Mono|_version_}} field.<ref>{{cite web|url=https://lucene.apache.org/solr/guide/6_6/updating-parts-of-documents.html|title=Updating Parts of Documents|access-date=2018-06-28}}</ref>
* The [[Elasticsearch]] search engine updates its documents via OCC. Each version of a document is assigned a sequence number, and newer versions receive higher sequence numbers. As changes to a document arrive asynchronously, the software can use the sequence number to avoid overriding a newer version with an old one.<ref>{{cite web | title=Optimistic concurrency control | website=Elastic | url=https://www.elastic.co/guide/en/elasticsearch/reference/current/optimistic-concurrency-control.html | access-date=2024-02-05}}</ref>
* [[CouchDB]] implements OCC through document revisions.<ref>{{cite web | title=Technical Overview | website=Apache CouchDB Documentation | url=https://docs.couchdb.org/en/stable/intro/overview.html | access-date=2024-02-06}}</ref>
Line 39:
* [[YugabyteDB]] is a cloud-native database that primarily uses OCC.<ref>{{Cite web|last=Yugabyte|first=Team|title=Explicit locking {{!}} YugabyteDB Docs|url=https://docs.yugabyte.com/latest/architecture/transactions/explicit-locking/|access-date=2022-01-04|website=docs.yugabyte.com|language=en-us}}</ref>
* [[Firestore]] is a NoSQL database by [[Firebase]] that uses OCC in its transactions.
* [[Apache Iceberg]] uses OCC to update tables and run maintenance operations on them.
 
==See also==