IBM Cloudant: FAQ

What is IBM Cloudant?

IBM Cloudant® is a JSON database, based on Apache CouchDB, delivered as a fully-managed, highly-available service. It leverages self-describing JSON “document” storage schemas to allow for flexible and agile application development. Cloudant is built using a master-master (also known as, “master-less”) clustering framework that can span multiple racks, data centers, cloud providers or devices.

Unlike traditional database systems, all data replicas are available for both reads and writes. The CouchDB-style replication and sync capabilities of Cloudant make it ideal for mobile and web apps built with offline-first design principles — have native access to data on the device or in the browser, and let the database handle sync to remote copies in the cloud.

Cloudant also delivers real-time indexing for online analytics, ad hoc full-text search, and advanced geospatial querying. These features are based on open standards including: Apache CouchDB, Apache Lucene, GeoJSON and others.

What does Cloudant manage for me?

Cloudant handles software and hardware provisioning, management and scaling, and support. The user receives guaranteed high availability and elastic scaling of the hardware as their provisioned throughput capacity needs change.

What is Cloudant Local?

We recommend developing with Apache CouchDB™, which is fully compatible with Cloudant. The Cloudant team contributes all major features back to the Open Source community. Develop locally with Apache CouchDB™ (link resides outside IBM).

What is a Document data store?

Document data stores are represented in JSON, or JavaScript Object Notation, and have the characteristic that every document is itself a complex data structure. Documents can contain nested structures of various data types, including other objects. Users of a document database are able to query into these complex structures, retrieving or updating portions of the document (or the entire document) without the need to lock down the database to do so. Documents are stored and retrieved via a primary key that is unique to every document (similar to the key in a key-value store).

Why JSON?

Part of JSON’s immense appeal with developers stems from its schema which can rapidly evolve without intervention by database administrators. JSON offers a simple and elegant model for persisting Java™ or JavaScript objects (thanks to the tight affinity that JSON has with JavaScript). This allows developers to construct a data layer solution without the need for heavy-weight persistence solutions such as OpenJPA or Hibernate. Finally, there is an elegance to JSON’s data modeling that relational databases cannot replicate: storing a single JSON document to represent a real-world object is much more intuitive than storing N numbers of rows in a relational database as a normalized object.

How is Cloudant different than CouchDB?

While Cloudant is API-compatible with CouchDB, the primary difference in functionality between Cloudant and Apache CouchDB is that Cloudant has layered additional open- source technologies for full-text search and geospatial indexing capabilities. IBM has also developed its own monitoring and operations systems to ensure high availability and performance. Further, Cloudant engineers handle all the ongoing database monitoring and infrastructure maintenance, so you can spend more time building your app and less time worrying about your database.

Apache CouchDB is an active open-source project, protecting customers against vendor lock-in as a reliable alternative to document-oriented database vendors. With Cloudant and CouchDB, the migration path in either direction is simple. The two systems share a common replication protocol, which lets developers synchronize copies of their Cloudant data to a remote CouchDB instance (or vice versa), at the push of a button.

Apache CouchDB entered the Apache Incubator in February 2008 and became an Apache Top-level Project in November of the same year. Visit http://couchdb.apache.org/ for downloads, documentation and ways to become involved with Apache CouchDB.

Check out the docs for differences between Cloudant and CouchDB API endpoints.

What is Offline First architecture?

Offline First architecture is building your app to delight users without requiring a connection to the internet. Instead of assuming the lack of connectivity is an error condition, the app is designed to provide users the opportunity to interact with your app without connection. Using Cloudant Mobile Sync, mobile apps can collect and read data even if network connectivity is unavailable. When the connection is re-established, the data will be synced with IBM Cloudant.

Cloudant works seamlessly with Hoodie and PouchDB. Hoodie is an open-source Node.js back end for Offline First applications. PouchDB is an open source JavaScript database that works in web browsers and can sync with Cloudant. This interoperability enables seamless data replication and syncing across any data store that implements the CouchDB Replication Protocol, powering endless varieties of Offline First data architectures. Read more about Offline First.

How does Cloudant pricing work?

Cloudant has two plans: Lite and Standard. The Lite plan is perpetually free and offers 1 GB of data storage and limited throughput capacity. The Standard plan has four tiers that allow for more granular control over provisioned throughput capacity.

Cloudant pricing is based on two major metrics:

Provisioned throughput capacity

Data usage

The provisioned throughput capacity is a per-second metric and is broken out between three request classes: lookups, writes and queries. Lookups are single doc reads, writes include doc and index writes, and queries include any read to a Cloudant index. See the latest updates to the Cloudant documentation for details on what API requests make up each of these request classes. The data usage consists of both primary data and indexes.

Are client libraries available for popular languages like Java, Python, and Node.js?