Technology

Next Generation Technology

Our low level enterprise platform is implemented from scratch and written in C. Compared to coarse-grained systems that have been engineered decades ago, Mercury takes advantage of cutting edge technology to deliver an optimized base for customizable middleware systems.






Mercury features a compiler-service capable of transforming C# programs directly into native machine executable code. The compilation process itself is exposed and controllable via the standard object model of Mercury and made accessible through standard C# statements. This allows easy integration of the compiler with any client application, and thus provides a powerful feature: the capability of dynamically recompiling code from within a Mercury application.

Data can be accessed uniformly using SQL and C#. Any object that is created through C# can be immediately accessed via SQL statements. This allows to ad-hoc query your business logic.

A hardware-assisted transactional memory system, provides high performance processing and the integrity guarantee of fine grained locking, while at the same time it offers the flexibility and simplicity of database transactions. It eliminates the use of software synchronization locks in the system, thereby making Mercury highly concurrent. The transactional memory system is further responsible for deciding when data can be safely persisted onto secondary storage. It supports optimistic non-blocking transactions, nested transactions, fast but accurate conflict detection and automatic persistence.

Storage Engine is the software layer responsible for permanently persisting data and logic. It is designed and optimized to give best performance with modern SSDs. It can write a large number of blocks to raw disk atomically yet in parallel. Since it can directly operate on a raw device, no file system is needed and thus performance is maximized by avoiding unnecessary software layers. Further, the storage engine can handle check-pointing, crash recovery and data redundancy transparently without affecting the performance. 
      
Mercury supports packages which allow the modularisation and grouping of  business logic into reusable components. All code provided by the packages is directly accessible and can be changed if desired either statically or dynamically during runtime.        

Parallel executed events make the system highly concurrent. The events are managed and executed from a thread pool to ensure maximum performance. The transaction engine takes care of parallel updates.

Currently Mercury features various communication interfaces that provide connectivity to servers or serve remote client applications. It is further planned to open up the connection interface to allow the development of individual protocols on top of the system.

The internal memory layout is designed to support management by type. This allows highly optimized and controlled operation of system memory and efficient search for data objects by type. This effectively merges the two concepts of relational databases and standard memory allocation schemes in runtime environments.

Various event triggers can be subscribed to remotely, which allows to easily implement messaging, as well as client systems that react to changes of Mercury.