[erlang-questions] [ANN] EGTM: embedded ACID compliant NoSQL engine for Erlang

Tomas Morstein <>
Thu Aug 23 14:24:08 CEST 2012

Dear Erlang community,

It's finally here! We've just released first public version of IDEA EGTM.

EGTM is an Erlang application built on the top of FIS GT.M engine what is a complete implementation of M[UMPS] technology.
The main characteristics of M[UMPS] is that it is both language and database, so one can directly access persistent multidimensional arrays from M language.

Main benefits of GT.M itself:
- it's ANSI/ISO M[UMPS] compatible
- fully ACID compliant
- it's _very_ fast even if your data layout is not so well optimized
- it's small and embedded
- it has native replication
- it can be distributed across multiple nodes (remote data may be treated as local)
- it's mature -- as a heart of PROFILE core-banking system, it is used in hundreds of financial institutions around the world
- its Linux version is free

Main benefits of EGTM:
- inherits all the properties of GT.M
- allows Erlang to freely call MUMPS routines and share data with M[UMPS] applications without any limitations
- can be used as a data-only storage for Erlang, without a single line of M[UMPS] code, so you don't have to learn M language that may not look so friendly (but in fact, is very simple and powerful!)
- EGTM can be deployed on a private secondary GT.M replica instance just to make some data mining (web reporting via ChicagoBoss, for example) without affecting master database
- can be used with any Erlang application as well as with ChicagoBoss or any other web framework
- through layered software (from IDEA :) ) like IODB, it's possible to map EGTM tree structures to Erlang objects and optionally access them via SQL
- IODB is not publicly available yet (coming soon!), but we use it in production and at the moment in conjunction with ChicagoBoss integration module, although the model compiler is ready to be used standalone
- another layered software is EGTM HAC what is EGTM HighAvailibility Cluster extension -- the best of HA properties of native GT.M and Erlang distributed properties

Even if the performance of any external binding will never be as good as native M code, it should be enough for many applications. If the performance is a primary requirement, it's possible to implement complex tasks with native M and simply call the native routine from EGTM.

An example of application that is written in ChicagoBoss framework with pure EGTM (completely without IODB objects) is our website http://www.idea.cz.
I am not able to do it immediately, but the source code may be released as a sample CB+EGTM reference project later.

Some resources:
- EGTM on GitHub: http://github.com/ztmr/egtm
- EGTM "homepage": http://labs.idea.cz/egtm
- GT.M documentation: http://www.mumps.cz/gtm/
- slides about GT.M: http://www.mumps.cz/gtm/misc/120730-1agtmasnosqldatabase.pdf
- introduction to M-based systems for relational people: http://www.fooboo.org/~tmr/gtm/UniversalNoSQL.pdf

In meantime of posting this message, there were started several discussions in another Erlang-related groups:
- https://groups.google.com/forum/#!forum/chicagoboss
- https://www.linkedin.com/groups/EGTM-embedded-ACID-compliant-NoSQL-90878.S.149660834

Enjoy and feel free to ask!


More information about the erlang-questions mailing list