| Description | Language | URL | License | Notes |
|---|---|---|---|---|
| FPL Reference Implementation | C (not C++) | http://www.fixprotocol.org/fastdownload | W3C Software License. | Not a complete implementation. Reference only. |
| FPL Reference Implementation | C# | http://www.fixprotocol.org/fastdownload | W3C Software License. | Not a complete implementation. Reference only. |
| OpenFAST | Java | http://www.openfast.org/ | Mozilla Public License | Includes SCP 1.1 |
| OpenFAST.NET | C# | http://www.sourceforge.net/projects/openfastdotnet/ | Mozilla Public License | Includes SCP 1.1 |
| QuickFAST | C++ | https://code.google.com/p/quickfast/ | New BSD License | Includes C# (.NET) wrapper |
Search this Blog:
FIX(Financial Information eXchange) Protocol
The Financial Information eXchange (FIX) Protocol is a messaging standard developed specifically for the real-time electronic exchange of securities transactions.
FIX Repository: The raw data behind the FIX specification
The FIX Repository represents the raw data behind the FIX specification in "database-compatible format". Files include an XML data dictionary with complete enumeration values, XML message content and XSLT scripts illustrating how to generate C# header files from the FIX Repository. Also included are XSLT scripts which generate a FIXimate-like (HTML) data browser for the FIX Repository.
FIXimate: An interactive Web browser based reference for the FIX Specification
FIXimate can be used via the FIX Protocol Ltd. web server or it can be downloaded and used locally. FIXimate has been generated from the FIX Specification Repository.
QuickFIX: QuickFIX is a free and open source implementation of the FIX protocol
QuickFIX is a full-featured open source FIX engine, currently compatible with the FIX 4.0-5.0 spec. API's are available for C++, .NET, Python and Ruby. QuickFIX/J is available for Java. QuickFIX/N is available for .NET
QuickFAST: An implementation of the FAST protocol for native C++ and .NET
The FAST protocol (FIX Adapted for STreaming) is a technology standard developed by FIX Protocol Ltd., specifically aimed at optimizing data representation on the network. It is used to support high-throughput, low latency data communications between financial institutions.
Source code for implementations of the FAST Specification are available from the following sources:
ref:
FIX Protocol - http://fixprotocol.org/what-is-fix.shtml
FIX Repository - http://fixprotocol.org/specifications/repository
FIX Interactive Message And Tag Explorer - http://fixprotocol.org/FIXimate3.0/
QuickFix source code(C++/.Net/java/Ruby) - http://sourceforge.net/ projects/quickfix/
QuickFix documentation - http://www.quickfixengine. org/quickfix/doc/html/index. html
Ruby embedded into C++ - http://metaeditor. sourceforge.net/embed/ , http: //ruby-doc.org/docs/ ProgrammingRuby/html/ext_ruby. html
Ruby C extensions - http://java.ociweb.com/mark/ NFJS/RubyCExtensions.pdf
SWIG and Ruby - http://www.swig.org/Doc1.3/ Ruby.html
Pessimistic vs Optimistic Locking
Pessimistic concurrency control (or pessimistic locking) is called "pessimistic" because the system assumes the worst — it assumes that two or more users will want to update the same record at the same time, and then prevents that possibility by locking the record, no matter how unlikely conflicts actually are.
The locks are placed as soon as any piece of the row is accessed, making it impossible for two or more users to update the row at the same time. Depending on the lock mode (shared, exclusive, or update), other users might be able to read the data even though a lock has been placed. For more details on the lock modes, see Lock modes: shared, exclusive, and update.
Optimistic concurrency control (or optimistic locking) assumes that although conflicts are possible, they will be very rare. Instead oflocking every record every time that it is used, the system merely looks for indications that two users actually did try to update the same record at the same time. If that evidence is found, then one user's updates are discarded and the user is informed.
For example, if User1 updates a record and User2 only wants to read it, then User2 simply reads whatever data is on the disk and then proceeds, without checking whether the data is locked. User2 might see slightly out-of-date information if User1 has read the data and updated it, but has not yet committed the transaction.
Choosing concurrency control mechanism:
In most scenarios, optimistic concurrency control is more efficient and offers higher performance. When choosing between pessimistic and optimistic locking, consider the following:
- Pessimistic locking is useful if there are a lot of updates and relatively high chances of users trying to update data at the same time.
For example, if each operation can update a large number of records at a time (the bank might add interest earnings to every account at the end of each month), and two applications are running such operations at the same time, they will have conflicts.
Pessimistic concurrency control is also more appropriate in applications that contain small tables that are frequently updated. In the case of these so-called hotspots, conflicts are so probable that optimistic concurrency control wastes effort in rolling back conflicting transactions.
- Optimistic locking is useful if the possibility for conflicts is very low – there are many records but relatively few users, or very few updates and mostly read-type operations.
ref:
Database Concurrency Control - http://publib.boulder.ibm.com/infocenter/soliddb/v6r3/index.jsp?topic=/com.ibm.swg.im.soliddb.sql.doc/doc/the.purpose.of.concurrency.control.html
Database Transactions - http://publib.boulder.ibm.com/infocenter/soliddb/v6r3/index.jsp?topic=/com.ibm.swg.im.soliddb.sql.doc/doc/the.purpose.of.concurrency.control.html
Subscribe to:
Posts (Atom)
