M[UMPS]
standardized ACID NoSQL environment from 60s
So what's M?
- compact data-oriented programming language
- schema-less multidimensional database
Features
- code hot loading
- code as data
- data as code ($T)
- interpreted vs compiled
(GT.M dlopen vs Cache hybrid pretokenized) - replication
- networked
- portable
- multiplatform
- ACID
- no threads, only JOBs (=> heavy threads mgr)
- ideal for BI systems
Brief History
- first appeared in late 60s on PDP-7
- primarily targeted for healthcare
- multiple different implementations
- ANSI standardized in late 70s
- widely used on DEC PDP-11
- VAX/VMS ports (not just DSM)
- DSM-11 OS --> VAX/DSM layered
product for VMS and Ultrix - Alpha and PC ports
- allmost all the significant commercial implementations merged to InterSystems branch
- ISO standard
- MUMPS ~= M --> M[UMPS]
M language
- one universal datatype
- truthvalues, string is evaluated as numeric, nonzero = true
- no need for declarations (N[EW])
- multiline blocks are dotted
- variable names and labels are case sensitive, the rest is not
- routine names can begin on %, usually system routines
- postconditionals COMMAND:TVAL ARGUMENTS
-
abbreviation: all commands can be abbreviated to one or two characters: S[ET], K[ILL], F[OR], ...
-
no reserved words
-
arrays = b-trees -- local, global
-
indirection: "eval++"
-
piece, order, networking
Selected Standard Commands
- S[ET]
- K[ILL]
- R[EAD]
- W[RITE]
- D[O]
- Q[UIT]
- F[OR]
- G[OTO]
- X[ECUTE]
- and others, including Z*
Selected Standard Functions
- $D[ata]
- $P[iece]
- $E[xtract]
- $S[elect]
- $O[rder]
- ...and others, including $Z*
Demo Time
Basic data structures and operations on them:
- $P[ieces]
- arrays: local, global
M[UMPS] products
- DSM-11 -- MUMPS OS for PDP-11
- MSM-WS -- acquired by InterSystems as a part of Micronetics, no alternative product yet
- "MUMPS" on SourceForge -- at least the author uses it commercially
- MiniM -- Russians have their own MUMPS too! ;-)
(and not just one variant) - Sanchez/FIS GT.M
- InterSystems Caché, DeepSee, Ensemble, GlobalsDB
- EGTM, IDEA Object DB (IODB)
- M/Gateway's projects and papers
Not MUMPS, but related: FoundationDB
Differences
InterSystems Caché
- application server with persistent storage rather than just DB,
"universal solution for everything" - Caché Object Script, massive libraries
- built-in middleware
- classes, SQL mapping, T-SQL (Sybase and MS-SQL) compatibility
- ignoring potential contributors,
(obvious bugs vs expected behavior, contributors-unfriendly) - costs not just $$$ but $$$$$$$$$
- layered products for BI and SI
Sanchez/FIS GT.M
- just MUMPS
- do one thing, do it well
- one OS process per job, no "server" daemon process
- the source is open for some platforms
- open and helpful to contributors
- truly ACID
- lots of frameworks to add middleware, SQL, objects, ...
Differences 2
InterSystems Caché
- all the routine sources are stored in DB
- no triggers, only in sense of SQL/OOP
Sanchez/FIS GT.M
- every routine is a single file on the host filesystem (nice for RCS)
- triggers
Manufacturing industry
IDEA ERP, IDEA-mzdy
- partially developed on Caché (for historical reasons)
- automatically converted to GT.M
- core is pure MUMPS
- legacy "VT725" front-end
- modern ReactJS based WebUI that aims for ergonomy and data entry effectivity as well as for management reporting
- Erlang/OTP middleware, "business objects" via IDEA Object DB
- shipped as Docker containers with ZFS, Erlang, GT.M, ...
- reason why we tried to port GT.M onto another platforms
- one of the recent projects: furniture manufacturing for IKEA
Interesting Caché projects: Mileta, GfK, ElectroWorld, ...
Banking industry
FIS PROFILE core-banking
- FIS GT.M
- DATA-QWIK framework
- PROFILE Scripting Language
- pluggable messaging
- Java integration
- Eclipse based development tools
- SQL (not SQL92 compatible) support, JDBC driver
DON treasury and investment suite
- ISC Caché
- IDEA-System
- IDEA-WebSystem
Healthcare industry
- Caché: a lot of hospitals and laboratories all over the world even in Czech and Slovak regions. Sometimes developed by small vendors, sometimes directly by InterSystems.
- some of the current Caché customers tend to migrate to GT.M-based solutions.
- OpenVista -- GT.M or Caché backend, C# (Mono) client app, many addons for web
Demo time
- IDEA-System
- IDEA-WebSystem (?)
- FIS DATA-QWIK, PSL, FB*SYS/Tools
- IDEA ObjectDB
- IDEA UI V2
- IWIS internals
Comparation of the mentioned.
Resources
Questions?
MUMPS
By Tomas Morstein
MUMPS
M[UMPS] technology
- 2,326