GT.M es un motor de base de datos de valor clave de alto rendimiento optimizado para el procesamiento de transacciones . (Es un tipo también conocido como "sin esquema", "sin esquema" o " NoSQL "). GT.M es también una plataforma de desarrollo de aplicaciones y un compilador para el lenguaje M estándar de ISO , también conocido como MUMPS. .
Desarrollador (es) | FIS |
---|---|
Versión inicial | 1986 |
Lanzamiento estable | 7.0-000 / 12 de febrero de 2021 |
Repositorio |
|
Escrito en | C , montaje , M |
Sistema operativo | Linux , AIX |
Tipo | Base de datos |
Licencia | GNU AGPLv3 , propietario |
Sitio web | sourceforge |
GT.M, una abreviatura de Greystone Technology M, fue desarrollado por Greystone Technology Corp en la década de 1980. Es una implementación del estándar ANSI M para AIX y Linux . Además de preservar las características tradicionales de M, GT.M también ofrece un compilador optimizador que produce código objeto que no requiere intérpretes internos durante la ejecución.
El motor de la base de datos, de código abierto en 2000, [1] es mantenido por FIS . GT.M se utiliza como backend de su aplicación bancaria FIS Profile , [2] y alimenta a los bancos ING DIRECT en España , Francia , Italia , Holanda , Rumanía e India ; Capital One 360 en Estados Unidos; Tangerine (Scotiabank) en Canadá; Atom Bank ; [3] Banco en tándem ; Banco de Sainsbury ; [4] Scottish Widows y Barclays Direct en el Reino Unido. [5] También se utiliza como backend de código abierto para el sistema de registro de salud electrónico WorldVistA y otros EHR de código abierto como OpenVista de Medsphere. [6] Está catalogado como socio de soluciones sanitarias de código abierto de Red Hat . [7] En la actualidad, consta de aproximadamente 2 millones de líneas de código. [ necesita actualización? ]
Resumen técnico
GT.M consta de un subsistema de lenguaje, un subsistema de base de datos y programas de utilidad. El subsistema de lenguaje y el subsistema de base de datos están estrechamente integrados, pero cada uno se puede utilizar sin el otro. Los subsistemas de lenguaje y base de datos comparten una organización y un tipo de datos comunes.
Organización y mecanografía de datos
GT.M tiene solo dos tipos de datos: números canónicos y cadenas. Una cadena es cualquier secuencia arbitraria de bytes (incluidos los nulos). Una cadena como "42"
es un número canónico. La escritura de datos es dinámica y la conversión entre los dos tipos se realiza sobre la marcha según sea necesario: 1+"42"
produce el resultado 43
y el primer carácter de 43
es 4
.
Solo hay una estructura de datos: matrices dispersas multidimensionales (los nodos clave-valor, los subárboles y la memoria asociativa son descripciones igualmente válidas) con hasta 32 subíndices. Se puede pensar en un escalar como un elemento de matriz con cero subíndices. Los nodos con un número variable de subíndices (incluido un nodo sin subíndices) pueden coexistir libremente en la misma matriz. Por ejemplo, si uno quisiera representar las capitales nacionales de los Estados Unidos :
: Establecer capital ("Estados Unidos") = "Washington": Set Capital ("Estados Unidos", 1774,1776) = "Filadelfia": Set Capital ("Estados Unidos", 1776,1777) = "Baltimore"
Las variables se crean a pedido cuando se asignan por primera vez. Por lo tanto, el primer comando Establecer anterior crearía la variable Capital
. Las variables tienen alcance en el idioma y se denominan variables locales . Un acceso a una base de datos se parece a un acceso a una matriz, por ejemplo:
: Set ^ Capital ("Estados Unidos") = "Washington"
pero el signo de intercalación (^) significa que es un acceso a la base de datos. Las variables utilizadas para el acceso a la base de datos tienen un único alcance global y, por supuesto, persisten y se comparten entre los procesos. Se llaman variables globales . Los primeros 31 caracteres de un nombre de variable son significativos.
Los comandos Kill y ZKill se utilizan para eliminar subárboles de valores.
GT.M utiliza Unicode ( ISO / IEC-10646 ) para compatibilidad con juegos de caracteres internacionales.
Subsistema de base de datos
La base de datos lógica de un proceso GT.M consta de uno o más espacios de nombres de variables globales , cada uno de los cuales consta de un número ilimitado de variables globales. Para cada espacio de nombre de variable global, un directorio global asigna variables globales a los archivos de base de datos donde residen realmente. Un número ilimitado de variables globales puede caber dentro de un archivo de base de datos; una variable global debe caber en un archivo de base de datos.
Un archivo de base de datos consta de hasta 224 M (276,168,704) bloques de base de datos. Un bloque de base de datos es un múltiplo de 512 bytes, con un tamaño máximo de 65.024 bytes. Los tamaños de bloque más utilizados son 4 KB, 8 KB y 16 KB, por lo que, con un tamaño de bloque de 8 KB, una variable global individual puede crecer hasta 1792 GB. Un nodo de variable global (variable global, subíndices más valor) debe caber en un bloque de base de datos y cada bloque tiene una sobrecarga de 16 bytes. Entonces, el nodo más grande que cabrá en una base de datos con un tamaño de bloque de 4 KB es 4080 bytes. Una clave (variable global más subíndices) puede tener hasta 255 bytes.
El motor de la base de datos no tiene demonios y los procesos que acceden a la base de datos operan con ID de usuario y grupo normales: un proceso tiene acceso a un archivo de base de datos si y solo si la propiedad y los permisos de ese archivo de base de datos (más cualquier control de acceso en capas como SELinux ) permiten el acceso . Cada proceso tiene dentro de su espacio de direcciones toda la lógica necesaria para administrar la base de datos, y los procesos cooperan entre sí para administrar los archivos de la base de datos. Cuando se registra un archivo de base de datos, las actualizaciones se escriben en los archivos de diario antes de escribirse en los archivos de la base de datos y, en caso de una falla del sistema, los archivos de la base de datos se pueden recuperar de los archivos de diario.
El motor de la base de datos también admite el procesamiento de transacciones . Entonces, código como:
TStart () Set ^ Capital ("Francia") = "Paris" Set ^ Country ("Paris") = "Francia"TCommit
implementa una transacción ACID . GT.M utiliza un control de simultaneidad optimista para gestionar las transacciones.
Una arquitectura de complemento permite cifrar la base de datos para proteger los datos en reposo. GT.M se distribuye con un complemento de referencia que utiliza GnuPG .
Subsistema de idiomas
A diferencia de la base de datos donde los nodos de variables globales deben caber dentro de un bloque de base de datos, las cadenas de variables locales pueden crecer hasta 1 MB. El tiempo de ejecución de GT.M proporciona una asignación dinámica de almacenamiento con recolección de basura. El número de variables locales y el número de nodos en las variables locales están limitados solo por el almacenamiento disponible para el proceso. El alcance predeterminado de una variable local es la duración de un proceso. Las variables locales creadas dentro de las rutinas que utilizan el comando Nuevo tienen un alcance más limitado.
Las rutinas GT.M se compilan y enlazan dinámicamente para su ejecución en el espacio de direcciones de cada proceso. Con la excepción de la implementación de 32 bits de GT.M para la plataforma Linux x86, los módulos de objetos también se pueden colocar en bibliotecas compartidas con el ld
comando estándar , en cuyo caso se comparte la memoria utilizada. Esto es importante porque una aplicación como VistA tiene más de 20.000 rutinas cuyo código objeto compilado supera los 200 MB. Un gran hospital que ejecuta VistA puede tener miles de procesos de usuario que se ejecutan simultáneamente.
Con un par de pequeñas excepciones, GT.M incluye una implementación casi completa del estándar ISO M (conocido cariñosamente como MUMPS por razones históricas).
En GT.M, el código M puede llamar libremente al código C (o el código en otros idiomas con una interfaz compatible con C), y el código C puede llamar libremente al código M (por lo que el programa de nivel superior puede ser una C main()
). Por ejemplo, es un módulo GT.M en CPAN , m_python para acceder desde Python o enlace EGTM para Erlang .
Los servicios web escritos en GT.M se pueden implementar en un super servidor de Internet como inetd o xinetd . Las aplicaciones habilitadas para la web pueden utilizar software en capas como EWD o CFMumps .
Plataformas
GT.M es totalmente compatible con las siguientes plataformas: [8]
- AIX en IBM System p
- Linux en arquitecturas x86_64 e IA-32 ( x86 ). La bifurcación YottaDB de GT.M agrega soporte para ARM . [9]
GT.M ya no es compatible con estas plataformas:
- HP-UX a octubre de 2015 (V6.2-002A)
- OpenVMS a diciembre de 2014 (V6.2-001)
- Solaris a diciembre de 2015 (V6.2-002A)
El código base para GT.M en Linux en IA-32 ( x86 ) incluye los cambios necesarios para ejecutarse en Cygwin en Microsoft Windows, pero esta no es una plataforma compatible.
Licencia
En Linux en x86-64 e IA-32 ( x86 ), y en OpenVMS en Alpha / AXP , GT.M se publica como software libre / de código abierto (FOSS) según los términos de la licencia pública general GNU Affero, versión 3 . En otras plataformas, está disponible bajo licencias propietarias.
Aplicaciones habituales
GT.M se utiliza principalmente en la industria de servicios financieros y de salud. El primer uso de producción de GT.M fue en 1986 en el Elvis Presley Memorial Trauma Center en Memphis, Tennessee . A través de FIS Profile , impulsa a los bancos ING DIRECT en Estados Unidos, Canadá, España, Francia e Italia. [5]
El acceso SQL y ODBC a las bases de datos GT.M existe como productos comerciales separados.
Referencias
- ^ "Linux PR: Sánchez ofrece la base de datos GT.M como software gratuito de código abierto para los usuarios de Linux" . 9 de diciembre de 2000. Archivado desde el original el 9 de diciembre de 2000 .
- ^ http://www.redhat.com/f/pdf/rhel/Profile_Benchmark_Results_11-17-2007.pdf
- ^ "Bancos retadores del Reino Unido: quién es quién (y cuál es su tecnología)" . Futuros FinTech . 30 de mayo de 2018.
- ^ https://ibsintelligence.com/ibs-journal/ibs-news/sainsbury-s-bank-suffers-systems-outage/
- ^ a b http://www.allbusiness.com/banking-finance/banking-lending-credit-services-cash/6129691-1.html
- ^ "Copia archivada" . Archivado desde el original el 8 de junio de 2011 . Consultado el 7 de enero de 2010 .CS1 maint: copia archivada como título ( enlace )
- ^ "Tecnologías de código abierto para la empresa" . www.redhat.com .
- ^ "Notas de la versión GT.M V6.3-009" . tinco.pair.com .
- ^ "Puerto a Linux en ARM · Edición # 61 · YottaDB / YDB" . GitHub .
Otras lecturas
- Ignacio Valdés (17 de noviembre de 2002), KS Bhaskar recibe el premio LMN Achievement Award 2002 , linuxmednews.com
enlaces externos
- Página del proyecto en SourceForge
- Documentación GT.M
- YottaDB , una horquilla GT.M
- EGTM: Encuadernación GT.M para Erlang
- nodem: enlace GT.M para Node.js