Sunday, 27 April 2014

Tell me about NoSQL

NoSQL seems to be the buzzword of choice at the moment for people who want the flexibility to build and frequently alter their databases. But there are plenty of people who still aren’t quite sure what a NoSQL database is and why they should want to use it. So let’s take a brief overview of NoSQL.

The term, NoSQL, first saw the light of day in 1998 when Carlo Strozzi used it as the name of his lightweight, open-source, relational database because it didn’t expose the standard SQL interface. But the term gained its modern usage in 2009 when it was used as a generic label for non-relational, distributed, data stores. So, it refers to a whole family of databases, rather than a single type of database.

Developers like NoSQL because they can store and retrieve data without being locked into the tabular relationships used in relational databases. It makes scaling easier and they provide superior performance. They can store large volumes of structured, semi-structured, and unstructured data. They can handle agile sprints, quick iteration, and frequent code pushes. They use object-oriented programming that is easy to use and flexible. And they use efficient scale-out architecture instead of expensive monolithic architecture.

But, on the down side, NoSQL lacks ACID (Atomicity, Consistency, Isolation, Durability) transaction support. Atomicity means that each transaction is ‘all or nothing’, ie if one part of the transaction fails, the entire transaction fails, and the database state is left unchanged. Consistency ensures that any transaction brings the database from one valid state to another. Isolation means that the concurrent execution of transactions results in a system state that would be obtained if transactions were executed sequentially. Durability means that once a transaction has been committed, it will remain so, even in the event of power loss, crashes, or errors. And that’s the kind of reliability you want in a business-critical database.

NoSQL databases are typically used in Big Data and real-time Web applications. The different NoSQL database technologies were developed because of the increase in the volume of data that people needed to store, the frequency the data is accessed, and increased performance and processing needs.

There are estimated to be over 150 open source databases available. And there are many different types of NoSQL database, including some that allow the use of SQL-like languages – these are sometimes referred to as ‘Not only SQL’ databases. Classify NoSQL databases is quite a challenge, but they can be grouped, by the features they offer, into column, document, key-value, and graph types. Alternatively, they can be classified by data model into KV Cache, KV Store, KV Store - Eventually consistent, Data-structures server, KV Store – Ordered, Tuple Store, Object Database, Document Store, and Wide Columnar Store.

The good news for DB2 users is that IBM has provided a new API that supports multiple calls and a NoSQL software solution stack that ships with DB2. It’s free with DB2 on distributed platforms and with DB2 Connect. DB2 also offers a second type of NoSQL-like database – the XML data store. This can store the growing volume of Web-based data.

Rocket Software has a way of using MongoDB (an example of a NoSQL database) on a mainframe. Rocket can provide access to any System z database using any MongoDB client driver. DB2 supports MongoDB.

IBM recently announced Zdoop, Hadoop database software for Linux from Veristorm on System z mainframes, stating: “This will help clients to avoid staging and offloading mainframe data to maintain existing security and governance controls”.

Other NoSQL databases that you might want to look out for include Cassandra, CouchBase, Redis, and Riak.

Clearly, with the growth in Big Data, we’ll be hearing a lot more about NoSQL databases and how they can be integrated into mainframe technology. There are lots of them out there and they can be quite different from each other in terms of their features and data models used.

Sunday, 13 April 2014

Name the 12 Apostles - a quiz

Because we’re coming up to Easter, I thought I’d do something different this week!

Can you name the 12 Apostles?

Well, obviously, there’s Matthew, Mark, Luke, and John, who have Gospels named after them – that’s four. Whoops, sorry, you can’t include Mark and Luke – they weren’t Apostles.

Well, from the Easter story we’re all familiar with Peter and Judas Iscariot. So that’s four we can name, we’re a third of the way there.

So who does that leave, mmmh!

There was Simon. Oh no not him because he’s already in our list – he’s also called Peter. So still eight to go.

There was Doubting Thomas – that’s five.

But who were the others. Well, there’s James who was John’s brother, and there was Andrew who was Peter’s brother – that’s seven. Just five to go.

So who are those last five? Bonus marks for anyone who remembers Bartholomew, James (the less), Philip, Simon the Canaanite, and Thaddeus.

So hang on, what about all those people who keep saying Jude – the patron saint of desperate causes. Yes he was an Apostle, but, apparently, he is also known as Thaddeus – mainly because early writers didn’t want him being confused with Judas Iscariot (hence the alternative name).

Which brings me nicely back to dealing with Judas Iscariot. Obviously he was an Apostle – one of the 12 – but you can’t imagine early Christians being too keen on including him in a list of revered Apostles! So who became the new twelfth man (if you’ll pardon a sort of cricketing metaphor)? In Acts it is said that following the death of Judas a new twelfth Apostle was appointed. He was called Matthias. He usually appears in lists of the twelve Apostles rather than the disgraced Judas Iscariot. However, some argue that only people actually sent out by Jesus could truly be called Apostles.

Troublingly, The Gospel of John also mentions an Apostle called Nathaniel (see John 1:45-51 and 21:2). Most authorities assume this is an alternative name for Bartholomew – so don’t worry about that one.

St Barnabas (who, confusingly, was originally called Joseph) is referred to as an Apostle in Acts 14:14. His claim to fame was introducing Paul (of road to Damascus fame) to the disciples in Jerusalem. And that’s the lot!

And for lots of bonus marks, can you name the thirteenth Apostle? Of course, there is more than one answer to this question.

Paul (of Tarsus) described himself as an Apostle following his Damascene conversion.

The Roman Emperor Constantine was responsible for making Christianity the official religion in Rome in the 4th century. He is often referred to as the thirteenth Apostle.

Plus, there’s also a long list of people who have brought Christianity to a some particular part of the world, who are referred to as the Apostle of somewhere or Apostle to somewhere else (for example St Augustine, the Apostle to England, or St Patrick, the Apostle to Ireland).

So, a much harder quiz than you might have thought. How many did you know?

If you celebrate it, have a good Easter next week. It’s back to mainframes in two weeks’ time.

Sunday, 6 April 2014

Happy birthday mainframe

7 April marks the 50th anniversary of the mainframe. It was on that day in 1964 that the System/360 was announced and the modern mainframe was born. IBM’s Big Iron, as it came to be called, took a big step ahead of the rest of the BUNCH (Burroughs, UNIVAC, NCR, Control Data Corporation, and Honeywell). The big leap of imagination was to have software that was architecturally compatible across the entire System/360 line.

It was called System/360 to indicate that this new systems would handle every need of every user in the business and scientific worlds because it covered all 360 degrees of the compass. That was a triumph for the marketing team because it would have otherwise been called the rather dull System 500. System/360 could emulate IBM’s older 1401 machines, which encouraged customers to upgrade. Famous names among its designers are Gene Amdahl, Bob Evans, Fred Brooks, and Gerrit Blaauw. Gene Amdahl later created a plug-compatible mainframe manufacturing company – Amdahl.

IBM received plenty of orders and the first mainframe was delivered to Globe Exploration Co. in April 1965. Launching and producing the System/360 cost more than $5 billion, making it the largest privately-financed commercial project up to that time. It was a risky enterprise, but one that worked. From 1965 to 1970, IBM’s revenues went up from $3.6 billion to $7.5 billion; and the number of IBM computer systems installed anywhere tripled from 11,000 to 35,000.

The Model 145 was the first IBM computer to have its main memory made entirely of monolithic circuits. It used silicon memory chips, rather than the older magnetic core technology.

In 1970, the System/370 was introduced. The marketing said that the System/360 was for the 1960s; for the 1970s you needed a System/370. All thoughts of compass points had gone by then. IBM’s revenues went up to $75 billion and employee numbers grew from 120,000 to 269,000, and, at times, customers had a two-year wait to get their hands on a new mainframe.

1979 saw the introduction of the 4341, which was 26 times faster than the System/360 Model 30. The 1980s didn’t have a System/380. But in 1990, the System/390 Model 190 was introduced. This was 353 times faster than the System/360 Model 30.

1985 saw the introduction of the Enterprise System/3090, which had over one-million-bit memory chips and came with Thermal Conduction Modules to speed chip-to-chip communication times. Some machines had a Vector Facility, which made them faster. It replaced the ES/3080

The 1990s weren’t a good time for mainframes. For example, in March 1991, Stewart Alsop stated: “I predict that the last mainframe will be unplugged on March 15, 1996.” Not the most successful prediction, but definitely catching the zeitgeist of the time. It was the decade of the System/390 (back to the old style naming convention). We saw the introduction of high-speed fibre optic mainframe channel architecture Enterprise System Connection (ESCON).

The System/360 gave us 24-bit addressing (32-bit architecture) and virtual storage. The System/370 gave us multi-processor support and then extended storage 24-bit/31-bit addressing. With System/390 we got the OS/390 operating system. As we move into the 2000s, we got zSeries (zArchitecture) and z operating systems giving us 24, 31, and 64-bit addressing. In 2003, the z990 was described as, “the world's most sophisticated server”. In 2005 we got the zIIP specialty engine. In 2008 it was the z10 EC with high capacity/performance (quad core CPU chip). In 2010 the z196 (zEnterprise) had 96-way core design and distributed systems integration (zBX). In 2012, the zEC12 was described as an integrated platform for cloud computing, with integrated OLTP and data warehousing. In 2000 IBM said it would support Linux on the mainframe, and, by 2009, 70 of IBM’s top 100 mainframe customers were estimated to be running Linux. A zEnterprise mainframe can run 100,000 virtual Linux servers. Modern mainframes run Java and C++.  And, the latest mainframe is compatible with the earliest System/360, which means that working code written in 1964 will still run on the latest z12BC.

In terms of operating systems, OS/360 was replaced by MVT, which became OS/VS2 SVS, and then OS/VS2 MVS. That became MVS/SE, which became MVS/SP, which became MVS/XA and then MVS/ESA before becoming OS/390 and finally z/OS.

And what does the future look like – with people migrating to other platforms and the technically-qualified mainframers beginning to look quite long in the tooth? The answer is rosey! Mainframe applications are moving from their traditional green screens to displays that look like anything you’d find on a Windows or Linux platform. They can provide cloud-in-a-box capability. They can integrate with other platforms. They can derive information from Big Data and the Internet of Things. Their biggest problem is, perhaps, decision makers at organizations don’t value them enough. Surveys that identify the cost benefits of running huge numbers of IMS or CICS transactions on a mainframe compared to other platforms are generally ignored. Many people think of them as “your dad’s technology”, and high-profile organizations like NASA are unplugging them.

So, although they are often misperceived as dinosaurs, they are in fact more like quick-witted and agile mammals. They provide bang up-to-date technology at a price that is value for money. I predict that we will be celebrating the mainframe’s 60th birthday and its 70th, though we may not be able to imagine how compact it will be by then and what new capabilities it will have.

Happy birthday mainframe.