Open Source

Cloud Databases: Connectivity and Platform Options

If you plan to host databases in the cloud, you should be attuned to platform differences

An examination of the database landscape reveals that, along with social networks, big data and cloud computing have been game changers. Those responsible for existing databases, and developing new applications or services, will prudently look at the public, private, and hybrid cloud options for hosting big data and databases.

Building a new application means developers have great flexibility in choosing what architecture, network, and database platform will match requirements. But migration of an existing database to the cloud means developers must understand how the cloud database will support existing applications, with the goal being transparency and a seamless transition. Ideally, migration to the cloud should not require expensive reprogramming of applications and services.

If you are planning to host databases in the cloud, you should be attuned to platform differences, such as data model, language bindings, service-level agreements, replication, and tools for administrators and developers. You should also examine issues related to operating systems, hypervisors, authorization, authentication, and connectivity  just to name a few.
If you're moving existing databases to the cloud, you'll need to understand the present database and application architecture, APIs, libraries, and uptime requirements. There can be SLA, availability and licensing issues for middleware, application servers, and database servers.

This discussion is a look at some platform and connectivity options. For this purpose, think of connectivity as encompassing network protocols and data access application programming interfaces (APIs).

Connectivity: APIs and Protocols

The ascendancy of the SQL database was due in part to distributed processing based on client-server architecture. Clients ship queries over a network for processing by the database server. In this context, "client" refers to a database server client, which could be an application or service, often running on an application server or web server.

Network architectures, such as IBM Distributed Relational Database Architecture (DRDA) and Oracle Transparent Network Substrate (TNS) define specific protocols (‘wire protocols') for communicating with the database server. Sybase Adaptive Server and Microsoft SQL Server operate with their own version of the Tabular Data Stream (TDS) wire protocol.
Because database wire protocols sit at a higher level in the network stack, they can operate over lower level protocols, such as TCP/IP connecting to database servers in the cloud, data centers, stores, and offices.

The client software stack for an SQL database includes libraries to implement a database access API and a network library for the platform-specific wire protocol. There are also JDBC and ODBC drivers that implement the wire protocol and therefore don't require a network library on the client.

The W3C XML specification provided a vehicle for building a new class of highly interoperable messaging capabilities, based on protocols that exchange XML-encoded messages. XML messaging provided a solution for web services using SOAP and REST interfaces. They also enabled developers to create data services that could integrate information from disparate data sources, SQL and non-SQL, and deliver it to the browser and other clients.

The REST and XML solution has seen widespread adoption for web applications. Besides XML, a simple data interchange format, JavaScript Object Notation (JSON), has also gained traction in recent years for web work.

Companies with SQL platforms, such as Microsoft, and those with non-SQL data, such as Google, have adopted data delivery protocols based on XML and JSON data sent by HTTP: commands.
AtomPub

The Atom Publishing Protocol (AtomPub), RFC 5023, uses XML and HTTP methods (GET, POST, PUT, and DELETE) to discover and operate with resources and collections of resources. It uses Atom-formatted data to describe the state and metadata of resources. The JavaScript Object Notation (JSON), RFC 4627, is a data interchange format consisting of structured data represented as text. JSON is based on two data structures: an ordered list of values and a collection of name/value pairs.

A variety of Google products expose APIs based on the Google Data Protocol (GData), which operates with data feeds that are in AtomPub and JSON format. Developers can program directly with GData using HTTP GET and POST requests, or they can use instead client libraries that handle the HTTP GET and POST processing. To reduce network round trips, GData supports batching multiple operations in a single POST request.

The Open Data Protocol (OData) was developed at Microsoft before being released as an open specification. OData supports URIs as resource identifiers, HTTP, and operations with AtomPub and JSON data feeds. OData recently added support for geospatial data types as a set of primitives. There are a variety of OData providers and libraries for .NET Framework, Java, Rails development and support for Objective-C, JavaScript, and PHP. OData.org operates an OData service validation tool here .

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task.
However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Video

This month's Dr. Dobb's Journal

This month,
Dr. Dobb's Journal is devoted to mobile programming. We introduce you to Apple's new Swift programming language, discuss the perils of being the third-most-popular mobile platform, revisit SQLite on Android
, and much more!