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