GT.M - GT.M

GT.M
Vývojáři FIS
První vydání 1986 ; Před 35 lety ( 1986 )
Stabilní uvolnění
7,0-000 / 12. Února 2021 ; Před 7 měsíci ( 2021-02-12 )
Úložiště
Napsáno C , montáž , M
Operační systém Linux , AIX
Typ Databáze
Licence GNU AGPLv3 , proprietární
webová stránka sourceforge .net /projects /fis-gtm /

GT.M je databázový stroj s klíčovou hodnotou s vysokou propustností optimalizovaný pro zpracování transakcí . (Jedná se o typ označovaný také jako „bez schématu“, „bez schémat“ nebo „ NoSQL .“) GT.M je také platformou pro vývoj aplikací a kompilátorem pro standardní jazyk M ISO , známý také jako MUMPS .

GT.M, zkratka pro Greystone Technology M, byla vyvinuta společností Greystone Technology Corp v 80. letech minulého století. Jedná se o implementaci standardu ANSI M pro AIX a Linux . Kromě zachování tradičních funkcí M nabízí GT.M také optimalizační kompilátor, který produkuje objektový kód, který během provádění nevyžaduje interní tlumočníky .

Databázový stroj, vyrobený v roce 2000 jako open source , spravuje FIS . GT.M se používá jako backend jejich bankovní aplikace FIS Profil a napájí banky ve Španělsku , Francii , Itálii , Nizozemsku , Rumunsku a Indii ; Capital One 360 ​​ve Spojených státech; Tangerine (Scotiabank) v Kanadě; Atom Bank ; Tandemová banka ; Sainsbury's Bank ; Scottish Widows and Barclays Direct ve Velké Británii. Používá se také jako open source backend pro systém Electronic Health Record System WorldVistA a další open source EHR, jako je Medsphere's OpenVista. Je veden jako partner řešení Red Hat pro řešení zdravotní péče s otevřeným zdrojovým kódem . Dnes se skládá z přibližně 2 milionů řádků kódu.

Technický přehled

GT.M se skládá z jazykového subsystému, databázového subsystému a obslužných programů. Jazykový subsystém a databázový subsystém jsou úzce integrovány, ale každý je použitelný bez druhého. Jazykové a databázové subsystémy sdílejí společnou organizaci dat a psaní.

Organizace dat a psaní

Stejně jako MUMPS, GT.M nemá žádný skutečný koncept různých datových typů, ačkoli řetězce (ty, které nejsou plně číselné) musí být umístěny v uvozovkách, aby se odlišily od proměnných. S čísly lze zacházet jako s řetězci číslic nebo s řetězci jako s čísly u numerických operátorů (vynucené, v terminologii MUMPS). Data jsou zpracovávána na základě kontextu a pravidel GT.M: 1+"42"poskytuje výsledek 43, první znak 43je 4a 20+"30 DUCKS"je 50(protože při numerických operacích se vynechávají nečíselné znaky).

Existuje pouze jedna datová struktura-vícerozměrná řídká pole (uzly klíč-hodnota, sub-stromy a asociativní paměť jsou všechny stejně platné popisy) s až 32 předplatnými. Skalár lze považovat za prvek pole s nulovými předplatnými. Uzly s různým počtem předplatných (včetně jednoho uzlu bez předplatného) mohou ve stejném poli volně koexistovat. Pokud například chcete reprezentovat národní hlavní města USA :

Set Capital("United States")="Washington"
Set Capital("United States",1774,1776)="Philadelphia"
Set Capital("United States",1776,1777)="Baltimore"

Proměnné se vytvářejí na vyžádání při prvním přiřazení. Proměnnou by tedy vytvořil první výše uvedený příkaz Set Capital. Proměnné mají rozsah v jazyce a nazývají se lokální proměnné . Přístup k databázi vypadá jako přístup k poli, například:

Set ^Capital("United States")="Washington"

ale stříška (^) znamená, že se jedná o přístup k databázi. Proměnné používané pro přístup k databázi mají jeden globální rozsah a samozřejmě přetrvávají a jsou sdíleny mezi procesy. Říká se jim globální proměnné . Prvních 31 znaků názvu proměnné je důležitých.

K odstranění podstromů hodnot slouží příkazy Kill a ZKill.

GT.M používá pro mezinárodní podporu znakové sady Unicode ( ISO/IEC-10646 ).

Databázový subsystém

Logické databáze procesu GT.M se skládá z jednoho nebo více světových jmen variabilní prostor , z nichž každá se skládá z neomezeného počtu globálních proměnných. Pro každý prostor názvů globálních proměnných globální adresář mapuje globální proměnné do databázových souborů, kde se ve skutečnosti nacházejí. Do jednoho databázového souboru se vejde neomezený počet globálních proměnných; globální proměnná se musí vejít do jednoho databázového souboru.

Soubor databáze se skládá až z 224 milionů (276 168 704) databázových bloků. Blok databáze je násobkem 512 bajtů s maximální velikostí 65 024 bajtů. Běžně používané velikosti bloků jsou 4KB, 8 kB a 16 kB - takže s velikostí bloku 8 kB může jednotlivá globální proměnná narůst až na 1 792 GB. Uzel globální proměnné (globální proměnná, indexy plus hodnota) se musí vejít do jednoho databázového bloku a každý blok má režii 16 bajtů. Největší uzel, který se vejde do databáze s velikostí bloku 4KB, je 4 080 bajtů. Klíč (globální proměnná plus předplatné) může mít až 255 bajtů.

Databázový stroj je bez démonů a procesy přistupující k databázi fungují s běžnými ID uživatelů a skupin - proces má přístup k databázovému souboru pouze tehdy, pokud přístup umožňuje oprávnění a oprávnění tohoto databázového souboru (plus jakékoli vrstvené řízení přístupu, jako je SELinux ) . Každý proces má ve svém adresním prostoru veškerou logiku potřebnou ke správě databáze a procesy navzájem spolupracují při správě databázových souborů. Když je databázový soubor žurnálován, aktualizace se zapisují do souborů deníku před zápisem do databázových souborů a v případě selhání systému lze databázové soubory obnovit ze souborů deníku.

Databázový stroj také podporuje zpracování transakcí . Takže kód jako:

TStart ()
 Set ^Capital("France")="Paris"
 Set ^Country("Paris")="France"
TCommit

implementuje transakci ACID . GT.M ke správě transakcí používá optimistické řízení souběžnosti .

Architektura modulu plug-in umožňuje šifrování databáze za účelem ochrany dat v klidu. GT.M je distribuován s referenčním plug-inem, který používá GnuPG .

Jazykový subsystém

Na rozdíl od databáze, kde se globální uzly proměnných musí vejít do bloku databáze, mohou řetězce místních proměnných narůstat na 1 MB. Běh GT.M poskytuje dynamické přidělování úložiště s uvolňováním paměti. Počet lokálních proměnných a počet uzlů v lokálních proměnných je omezen pouze úložištěm, které má proces k dispozici. Výchozí rozsah lokální proměnné je životnost procesu. Místní proměnné vytvořené v rámci rutin pomocí příkazu Nový mají omezenější rozsah.

Rutiny GT.M jsou dynamicky kompilovány a propojeny pro provádění v adresním prostoru každého procesu. S výjimkou 32bitové implementace GT.M pro platformu x86 Linux lze objektové moduly také umístit do sdílených knihoven se standardním ldpříkazem, v takovém případě je použitá paměť sdílená. To je důležité, protože aplikace, jako je VistA, má více než 20 000 rutin, jejichž kód zkompilovaného objektu přesahuje 200 MB. Velká nemocnice se systémem VistA může mít tisíce souběžně běžících uživatelských procesů.

Až na několik malých výjimek obsahuje GT.M téměř úplnou implementaci ISO standardu M ( z historických důvodů láskyplně známý jako MUMPS ).

V GT.M může kód M volně volat na kód C (nebo kód v jiných jazycích s rozhraním kompatibilním s C) a kód C může volně volat na kód M (takže program nejvyšší úrovně může být C main()). Například je modul GT.M v CPAN , m_python pro přístup z Pythonu nebo EGTM vazba pro Erlang .

Webové služby napsané v GT.M lze nasadit pod internetovým super serverem, jako je inetd nebo xinetd . Webové aplikace mohou používat vrstvený software, jako je EWD nebo CFMumps .

Platformy

GT.M je plně podporován na následujících platformách:

GT.M již není podporován na těchto platformách:

  • HP-UX od října 2015 (V6.2-002A)
  • OpenVMS k prosinci 2014 (V6.2-001)
  • Solaris k prosinci 2015 (V6.2-002A)

Základ kódu pro GT.M v Linuxu na IA-32 ( x86 ) obsahuje změny potřebné ke spuštění na Cygwinu v systému Microsoft Windows, ale toto není podporovaná platforma.

Licencování

Na Linuxu na x86-64 a IA-32 ( x86 ) a na OpenVMS na Alpha / AXP je GT.M vydán jako Free / Open Source Software (FOSS) podle podmínek GNU Affero General Public License, verze 3 . Na jiných platformách je k dispozici pod proprietárními licencemi.

Běžné aplikace

GT.M se používá převážně v odvětví zdravotnictví a finančních služeb. První produkční použití GT.M bylo v roce 1986 v Elvis Presley Memorial Trauma Center v Memphis, Tennessee . Prostřednictvím profilu FIS pohání banky ve Spojených státech, Kanadě, Španělsku, Francii a Itálii.

Přístup SQL a ODBC k databázím GT.M existuje jako samostatné komerční produkty.

Reference

Další čtení

externí odkazy