CSC/ECE 517 Fall 2009/wiki3 12 obj to relational: Difference between revisions
Line 3: | Line 3: | ||
== Thread-Safe Programming == | == Thread-Safe Programming == | ||
[[Image:con_pattern.jpg|thumb|Concurrency Design Patterns]] | |||
==Concurrency Patterns== | |||
=== Read/Write Access Pattern === | |||
===Double-Checked Locking Pattern=== | |||
[[Image:Producer-consumer.jpg|Producer-Consumer Classes]] | |||
== Conclusion == | |||
The concurrency patterns discussed above involve coordinating concurrent operations. They address two types of problems:[5] | |||
'''Shared resources''' - When concurrent operations access the same data or another type of shared resource, operations may | |||
interfere with each other if they access the resource at the same time. To ensure that operations on shared resources | |||
execute correctly, the operations must be sufficiently constrained to access their shared resource one at a time. However, | |||
if the operations are overly constrained, then they may [http://en.wikipedia.org/wiki/Deadlock deadlock] and not be able to finish executing. | |||
'''Sequence of operations''' - If operations are constrained to access a shared resource one at a time, it may be necessary to | |||
ensure that they access the shared resource in a particular order. For example, an object cannot be removed from a data | |||
structure before it is added to the data structure. | |||
==See Also== | |||
* [http://en.wikipedia.org/wiki/Monitor_(synchronization) Monitor Object] | |||
* [http://en.wikipedia.org/wiki/Active_Object Active Object] | |||
* [http://en.wikipedia.org/wiki/Thread_pool_pattern Thread pool pattern] | |||
* [http://en.wikipedia.org/wiki/Reactor_pattern Reactor patter] | |||
* [http://en.wikipedia.org/wiki/Double_buffering Double Buffering] | |||
* [http://en.wikipedia.org/wiki/Scheduler_pattern Scheduler] | |||
* [http://msdn.microsoft.com/en-us/library/ms724368(VS.85).aspx Asynchronous Processing] | |||
==References== | ==References== |
Revision as of 20:22, 17 November 2009
Patterns for mapping objects to relational databases
Thread-Safe Programming
Concurrency Patterns
Read/Write Access Pattern
Double-Checked Locking Pattern
Conclusion
The concurrency patterns discussed above involve coordinating concurrent operations. They address two types of problems:[5]
Shared resources - When concurrent operations access the same data or another type of shared resource, operations may interfere with each other if they access the resource at the same time. To ensure that operations on shared resources execute correctly, the operations must be sufficiently constrained to access their shared resource one at a time. However, if the operations are overly constrained, then they may deadlock and not be able to finish executing.
Sequence of operations - If operations are constrained to access a shared resource one at a time, it may be necessary to ensure that they access the shared resource in a particular order. For example, an object cannot be removed from a data structure before it is added to the data structure.
See Also
- Monitor Object
- Active Object
- Thread pool pattern
- Reactor patter
- Double Buffering
- Scheduler
- Asynchronous Processing
References
[1] Wolfgang Keller, Mapping Objects to Tables - A Pattern Language http://www.objectarchitects.de/ObjectArchitects/papers/Published/ZippedPapers/mappings04.pdf
[2] Scott W. Ambler, President, Ronin International, Mapping Objects To Relational Databases http://www.crionics.com/products/opensource/faq/docs/mappingObjects.pdf
[3] Scott W. Ambler, Mapping Objects to Relational Databases: O/R Mapping In Detail http://www.agiledata.org/essays/mappingObjects.html
[4] Wolfgang Keller, Object/Relational Access Layers - A Roadmap, Missing Links and More Patterns http://citeseer.ist.psu.edu/4328.html
[5] Joseph W. Yoder, Ralph E. Johnson, Quince D. Wilson, Connecting Business Objects to Relational Databases http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.34.7703&rep=rep1&type=pdf
[6] Michael R. Blaha, William J. Premerlani and James E. Rumbaugh, Relational Database Design using an Object-Oriented Methodology http://www.sims.monash.edu.au/subjects/ims2501/seminars/oomodelling.pdf
[7] http://www.cetus-links.org/oo_db_systems_3.html
[8] http://www.ibm.com/developerworks/library/ws-mapping-to-rdb/
[10] http://cantgrokwontgrok.blogspot.com/2009/03/tech-day-1-nhibernate.html
[11] http://www.adobe.com/newsletters/edge/october2008/articles/article2/index.html?trackingid=DWZST