GT.M - NoSQL in core banking systems

47
GT.M NoSQL in core banking systems @zmerta

description

GT.M - NoSQL in core banking systems

Transcript of GT.M - NoSQL in core banking systems

Page 1: GT.M - NoSQL in core banking systems

GT.MNoSQL in core banking systems

@zmerta

Page 2: GT.M - NoSQL in core banking systems

NoSQL in core banking systems?

WTF?

Page 3: GT.M - NoSQL in core banking systems

The story begins as usual...

Page 4: GT.M - NoSQL in core banking systems

A long time ago in a galaxy far,far away….

Page 5: GT.M - NoSQL in core banking systems

A long time ago in a galaxy far,far away….

MUMPS

Page 6: GT.M - NoSQL in core banking systems

A long time ago in a galaxy far,far away….

MUMPS

Welcome to the 60s!

Page 7: GT.M - NoSQL in core banking systems

MUMPS Massachusetts General Hospital Utility Multi-Programming System

or simply M

Features

- ANSI and ISO standardized- Procedural language combined with a database engine- ACID transactions- Optimized for low-memory computers- Commercial implementations: GT.M, Caché

Page 8: GT.M - NoSQL in core banking systems

MUMPS

Syntax

- Weird language constructions- All commands could be shorten to one or two letters- Allows multiple commands on a line- Beware of white spaces - some are significant

Page 9: GT.M - NoSQL in core banking systems

MUMPS%DTC ; SF/XAK - DATE/TIME OPERATIONS ;1/16/92 11:36 AM

;;19.0;VA FileMan;;Jul 14, 1992

D I 'X1!'X2 S X="" Q

S X=X1 D H S X1=%H,X=X2,X2=%Y+1 D H S X=X1-%H,%Y=%Y+1&X2

K %H,X1,X2 Q

;

C S X=X1 Q:'X D H S %H=%H+X2 D YMD S:$P(X1,".",2) X=X_"."_$P(X1,".",2)

K X1,X2 Q

S S %=%#60/100+(%#3600\60)/100+(%\3600)/100 Q

;

H I X<1410000 S %H=0,%Y=-1 Q

S %Y=$E(X,1,3),%M=$E(X,4,5),%D=$E(X,6,7)

S %T=$E(X_0,9,10)*60+$E(X_"000",11,12)*60+$E(X_"00000",13,14)

TOH S %H=%M>2&'(%Y#4)+$P("^31^59^90^120^151^181^212^243^273^304^334","^",%M)+%D

S %='%M!'%D,%Y=%Y-141,%H=%H+(%Y*365)+(%Y\4)-(%Y>59)+%,%Y=$S(%:-1,1:%H+4#7)

K %M,%D,% Q

Page 10: GT.M - NoSQL in core banking systems

OMG!!!

It’s even worse than Perl

Page 11: GT.M - NoSQL in core banking systems

or Brainfuck…

or Whitespace...

:-)

Page 12: GT.M - NoSQL in core banking systems

It’s not so bad...

MUMPS could be readable...

Page 13: GT.M - NoSQL in core banking systems

MUMPS

HELLO ; Hello application ; FOR I=1:1:10 DO . IF I#2=0 DO .. DO PRINT^HELLO("Peter") . ELSE DO .. DO PRINT^HELLO("Paul") QUIT ;PRINT(NAME) WRITE "Hello, ",NAME,! QUIT

Page 14: GT.M - NoSQL in core banking systems

Nobody wants to write

large applications in MUMPS

Page 15: GT.M - NoSQL in core banking systems

Think about it as a language for writing stored procedures

and triggers...

Page 16: GT.M - NoSQL in core banking systems

But there is one aspect which is still ahead of time…

Page 17: GT.M - NoSQL in core banking systems

Global Persistent Variablesaka Globals

Page 18: GT.M - NoSQL in core banking systems

MUMPS - Globals Features

- Hierarchical key-value data store (persistent arrays)- B-trees abstraction- Keys are ordered- Schema-less

Page 19: GT.M - NoSQL in core banking systems

MUMPS - Globals^ACCOUNTS --- | --- 1 --- | | | --- name --- Petr Novák | | | --- email --- [email protected] --- 2 --- | | | --- name --- Martina Pavlíčková | | | --- email --- [email protected]

^ACCOUNTS(1,"name") = "Petr Novák" | | | | | | | node | subscript | global

Page 20: GT.M - NoSQL in core banking systems

Oh wait, isn’t it...

Page 21: GT.M - NoSQL in core banking systems

NoSQL?

Page 22: GT.M - NoSQL in core banking systems

NoSQL?

50 years ago?

Page 23: GT.M - NoSQL in core banking systems

Even better...

Page 24: GT.M - NoSQL in core banking systems

Globals are very flexible...

Page 25: GT.M - NoSQL in core banking systems

MUMPS - Globals Can be used to model:

- Relational databases- Key value databases (Redis, memcached, …)- Column/tabular databases (BigTable, Cassandra, …)- Document databases (MongoDB, CouchDB, …)- Graph databases (Neo4j, …)

Page 26: GT.M - NoSQL in core banking systems

Later in the same galaxy...

Page 27: GT.M - NoSQL in core banking systems

Later in the same galaxy...

GT.M

Page 28: GT.M - NoSQL in core banking systems

GT.M

Features

- Database engine and application platform- MUMPS implementation- The heart of FIS Profile™ (core banking system)- Used in large financial and healthcare institutions- Open sourced in 2000 (GPLv2, AGPL)- Multiplatform (AIX, Linux, OpenVMS, Solaris, z/OS…)- Commercial support

Greystone Technology M

Page 29: GT.M - NoSQL in core banking systems

GT.M

Performance

- High performance- Small footprint- Ultra fast ACID transactions (optimistic concurrency)- Software transactional memory- In-memory like performance with on-disk like integrity- Sophisticated caching

Page 30: GT.M - NoSQL in core banking systems

GT.M

Security

- Uses underlying operating system- Processes run as user level processes- No database daemon- Journaling- Database encryption- Plugin architecture for encryption algorithms

Page 31: GT.M - NoSQL in core banking systems

GT.M

Scalability & continuity of business

- Logical multi site operation- One instance streams to up to 16 replicas- 2 replication modes:

- BC replication- SI replication

Page 32: GT.M - NoSQL in core banking systems

GT.M

Deployment

- Internet superserver (inetd, xinetd)- EWD (M/Gateway)- MTM (Profile)

Page 33: GT.M - NoSQL in core banking systems

GT.M

Limits

- One Global must fit in one database file(no limit on the number of database files)

- Database file is divided to 992 mi blocks(variable block sizes - multiple of 512 bytes, with a maximum size of 65,024

Page 34: GT.M - NoSQL in core banking systems

GT.M

Proven in business-critical environments

World’s largest banks- ING DIRECT- Capital One 360 (USA)- Barclays Direct (GB)

Healthcare- WorldVistA (Electronic Health Record system)

Page 35: GT.M - NoSQL in core banking systems

NoSQL - Advantages

Five Advantages

1. Elastic scaling2. Big data3. Goodbye DBAs4. Economics5. Flexible data models

http://www.techrepublic.com/blog/10-things/10-things-you-should-know-about-nosql-databases/

Page 36: GT.M - NoSQL in core banking systems

NoSQL

Five Advantages

1. Elastic scalingSupport for scaling out across multiple servers

2. Big data3. Goodbye DBAs4. Economics5. Flexible data models

Page 37: GT.M - NoSQL in core banking systems

NoSQL

Five Advantages

1. Elastic scaling2. Big data

Designed to support huge ammount of data3. Goodbye DBAs4. Economics5. Flexible data models

Page 38: GT.M - NoSQL in core banking systems

NoSQL

Five Advantages

1. Elastic scaling2. Big data3. Goodbye DBAs

Some systems have been running unattendedfor decades

4. Economics5. Flexible data models

Page 39: GT.M - NoSQL in core banking systems

NoSQL

Five Advantages

1. Elastic scaling2. Big data3. Goodbye DBAs4. Economics

Runs on low-cost commodity hardware5. Flexible data models

Page 40: GT.M - NoSQL in core banking systems

NoSQL

Five Advantages

1. Elastic scaling2. Big data3. Goodbye DBAs4. Economics5. Flexible data models

NoSQL or relational databases emulation

Page 41: GT.M - NoSQL in core banking systems

NoSQL

Five challenges

1. Maturity2. Support3. Analytics and business intelligence4. Administration5. Expertise

http://www.techrepublic.com/blog/10-things/10-things-you-should-know-about-nosql-databases/

Page 42: GT.M - NoSQL in core banking systems

NoSQL

Five challenges

1. Maturity50. years in business-critical environments

2. Support3. Analytics and business intelligence4. Administration5. Expertise

Page 43: GT.M - NoSQL in core banking systems

NoSQL

Five challenges

1. Maturity2. Support

Commercial support available.3. Analytics and business intelligence4. Administration5. Expertise

Page 44: GT.M - NoSQL in core banking systems

NoSQL

Five challenges

1. Maturity2. Support3. Analytics and business intelligence

DeepSee - product for realtime analysis(InterSystems / Caché)

4. Administration5. Expertise

Page 45: GT.M - NoSQL in core banking systems

NoSQL

Five challenges

1. Maturity2. Support3. Analytics and business intelligence4. Administration

Easy to install and to maintain.5. Expertise

Page 46: GT.M - NoSQL in core banking systems

NoSQL

Five challenges

1. Maturity2. Support3. Analytics and business intelligence4. Administration5. Expertise

Small number of skilled professionals :-(

Page 47: GT.M - NoSQL in core banking systems

So why we reinventing the wheel over and over again?