MUMPS(別名M)はEpicを動かしている。VistAを動かしている。知らずに触れている 世界のヘルスケアスタックの大部分を動かしている。今年60歳になり、最悪の日の Perlが恥ずかしくなるような構文を持ち、そして私が怒りを持って触れた中で — 断然 — 最速の階層キーバリューストアだ。会議でMUMPSに言及するたびに、誰かが笑う — そして彼らは私が本気だったことに気づく。
MUMPSが実際に何であるか
MUMPSは同時に二つのものだ:
- プログラミング言語、1966年に設計され、暗黙変数宣言、一文字のコマンド、 構造化プログラミング以前の制御フローモデルを持つ。MUMPSコードをコールドで 読むのは体験だ。
- 階層データベース、
^globalName(subscript1, subscript2, …)としてアドレス 可能で、デフォルトで永続的。グローバルへの書き込みはディスク操作だ。読み取りは ディスク読み取りだ。言語とデータベースが溶接されている。「ORM」は存在しない。 プログラムがデータ構造に直接書き込んでいるからだ。
結果として、うまく書かれたMUMPSプログラムは90年代の単一コアで毎秒数千の 操作をこなして汗をかかない。ストレージエンジンは滑稽なほど効率的だ — 64KBの RAMを贅沢と考えて設計した人々によって書かれたからだ。
2026年でも出荷される理由
明らかな問いは:なぜ誰かがまだこれを使っているのか?ブログ記事に書かれない いくつかの理由がある:
- 残酷なほど信頼性が高い。 グローバルストレージモデルはトランザクショナルで クラッシュセーフだ。30年間データ損失インシデントなしに動き続けているMUMPS インストールは珍しくない。典型だ。
- コードとデータのコロケーションはパフォーマンスの武器だ。 現代の三層 アーキテクチャはデータベースアクセスごとにラウンドトリップのコストを払う。 MUMPSは何も払わない — データ構造はコードの実行行から文字通りアドレス可能だ。 小さな読み書きでホットなワークロード(薬局ルックアップ、患者カルテアクセス、 ラボ結果書き込みを考えてほしい)では、実世界のベンチマークでまだほとんどのものを 打ち負かす。
- マイグレーションコストは恐ろしい。 EpicのコードベースはFortran歴40年分積み上がった。 完全な書き直しは18ヶ月のプロジェクトではなく、数十年のプロジェクトだ。正しい 戦略的問いは「いつ置き換えるか?」ではなく「何を隣に構築するか?」だ。
近くで作業して学んだこと
HAKEEMでは、ヨルダンの公共医療ITがVAのオープンソースヘルスケアスタックの 一部を採用していたため、VistA/MUMPSコンポーネントに遭遇した。AFAQでは、 データ層がMUMPS隣接の薬局システムと統合した。MUMPSの専門家だとは主張しない — それらの年月にまたがって数千行ほど書いた。私が主張するのは、その数千行が その後行った多くの現代RDBMSの作業よりも、データベース設計について多くを 教えてくれたということだ。
具体的に:
- 添え字付きキー設計は思っているよりも重要だ。 正しいキーの階層を選ぶことは、 MUMPSにおけるスキーマ設計に相当する。間違えると読み取りが多すぎをスキャンする。 正しければ欲しいバイトにO(1)でアクセスできる。
- コストモデルはコードで見える。
SET ^patient(id, "name")=valueはディスク 操作だ。ORMの後ろに隠すことはできない。これにより、現代言語が無視することを 促すレベルでデータアクセスについて考えさせられる。 - グローバルロックはバグではなく機能だ。 MUMPSのロックモデルはプリミティブで、 それはつまり推論できるということだ。現代の分散ロックは洗練されていて、それは つまり推論できないということだ。
この2026年バージョン
2026年に新しいグリーンフィールドなトランザクショナルヘルスケアシステムを 始めるなら、MUMPSを選ぶか?いや。慎重なスキーマ設計と明示的なトランザクション 境界を持つPostgresを使って、より幸せな生活を送る。
しかしMUMPSを本番で動かしているコードベースを馬鹿にすることも拒否する。 それらは人々を生かし続ける病院システムの荷重部分だ。それらを保守している エンジニアは、現代のWebエンジニアが認識しない方法で不均衡にスキルが高い: バイトレベルでストレージのコストを理解し、数十年前の不変条件について推論でき、 本番データとの関係をFAANGエンジニアが20年間持っていなかったものを持つ。
プルクォート
チームの誰かがMUMPSコードベースを笑ったなら、コードベースについてではなく 自分自身について何かを語っている。最後のグリーンフィールド書き直しが30年間 本番にあるかどうか聞いてみろ。答えが「いや」なら、笑いは時期尚早だ。
まだ本番で動いている最古のコードは、ほぼ常に最も笑うに値しないコードだ。