storage access sync security

Mobile data made easy.

One NoSQL database for everything mobile.

Start Building

What's Couchbase Mobile?

Couchbase Mobile is the complete NoSQL database solution for all data storage, access, sync, and security across the entire application stack. It includes:
  • Embedded Database

    Couchbase Lite, our embedded database, manages and stores data locally on the device. It has full CRUD and query functionality, and supports all major platforms including iOS, OS X, tvOS, Android, Linux, Windows, Xamarin and more.

  • Synchronization

    Couchbase Mobile includes synchronization between Couchbase Lite and Couchbase Server, and peer-to-peer synchronization between Couchbase Lite instances. Synchronization is orchestrated by Sync Gateway, our secure web gateway.

  • Security

    Built-in enterprise level security includes user authentication, user and role based data access control (RBAC), secure transport over TLS, and 256-bit AES full database encryption.

  • Events

    Couchbase Mobile raises events when data changes in the database. These events can be subscribed to on both the device and server.

  • REST API

    REST APIs provide full programmatic access for reading and writing data over the web. Input and output is JSON, and it's easy to integrate with existing apps and REST architectures.

  • Stream & Batch API

    Stream and Batch APIs enable low latency access to streams of data changes and bulk get and put operations. These APIs balance latency, throughput and fault-tolerance, providing comprehensive management of batch data while using stream processing to provide real-time access to data changes.

  • JSON

    Couchbase Mobile uses JSON as its lightweight and flexible data modeling language. All data is stored and transmitted as JSON, including the embedded database, the database server, REST APIs, stream APIs, and batch APIs.

  • Database Server

    Couchbase Server, our database server, manages and stores data in the cloud. It scales easily to billions of records and terabytes of data, supports millions of concurrent users, and provides 24x365 uptime.

What does it look like to use?

// Get the database (and create it if it doesn’t exist). 
var database = Manager.SharedInstance.GetDatabase("mydb"); 

// Create a new document (i.e. a record) in the database. 
var document = database.CreateDocument(); 
document.PutProperties(new Dictionary { 
    { "firstName", "John" } 
}); 

// Update a document. 
document.Update(rev => 
{ 
    var props = rev.UserProperties; 
    props["firstName"] = "Johnny"; 
    rev.SetUserProperties(props); 
    return true; 
}); 

// Delete a document. 
document.Delete(); 

// Create replicators to push & pull changes to & from the cloud. 
var url = new Uri("https://www.my.com/mydb/"); 
var push = database.CreatePushReplication(url); 
var pull = database.CreatePullReplication(url); 
push.Continuous = true; 
pull.Continuous = true; 

// Add authentication. 
var authenticator = AuthenticatorFactory.CreateBasicAuthenticator(name, password); 
push.Authenticator = authenticator; 
pull.Authenticator = authenticator; 

// Listen to database change events (there are also change 
// events for documents, replications, and queries). 
database.Changed += OnChanged; 

// Start replicators 
push.Start(); 
pull.Start();
// Get the database (and create it if it doesn’t exist).
CBLDatabase *database = [[CBLManager sharedInstance] databaseNamed: @"mydb"error: &error];

// Create a new document (i.e. a record) in the database.
CBLDocument *document = [database createDocument];
[document putProperties: @{@"firstName": @"John"} error: &error];

// Update a document.
[document update:^BOOL(CBLUnsavedRevision *newRevision) {
    newRevision[@"firstName"] = @"Johnny";
    return YES;
} error: &error];

// Delete a document.
[document deleteDocument:&error];

// Create replicators to push and pull changes to and from the cloud.
NSURL *url = [NSURL URLWithString: @"https://www.my.com/mydb/"];
CBLReplication *push = [database createPushReplication: url];
CBLReplication *pull = [database createPullReplication: url];
push.continuous = YES;
pull.continuous = YES;

// Add authentication.
CBLAuthenticator *authenticator = [CBLAuthenticator basicAuthenticatorWithName:name password:password];
push.authenticator = authenticator;
pull.authenticator = authenticator;

// Listen to database change events (there are also change events for
// documents, replications, and queries).
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(databaseChanged:)
                                             name: kCBLDatabaseChangeNotification 
                                           object: database]; 

// Start replicating. 
[push start]; 
[pull start];
// Get the database (and create it if it doesn’t exist).
let database = CBLManager.sharedInstance().databaseNamed("mydb")

// Create a new document (i.e. a record) in the database.
let document = database.createDocument()
document.putProperties(["firstName": "John"])

// Update a document.
document.update { (newRevision) -> Bool in
        newRevision["firstName"] = "Johnny"
        return true
}

// Delete a document.
document.deleteDocument()

// Create replicators to push and pull changes to and from the cloud.
let url = NSURL(string: "https://www.my.com/mydb/")!
let push = database.createPushReplication(url)
let pull = database.createPullReplication(url)
push.continuous = true
pull.continuous = true

// Add authentication.

let authenticator = CBLAuthenticator.basicAuthenticatorWithName(name, password: password)
push.authenticator = authenticator
pull.authenticator = authenticator

// Listen to database change events (there are also change events for
// documents, replications, and queries).
NSNotificationCenter.defaultCenter().addObserver(self, selector: "databaseChanged:",
name: kCBLDatabaseChangeNotification, object: database) 

// Start replicating. 
push.start() 
pull.start()
// Get the database (and create it if it doesn’t exist).
Manager manager = new Manager(new JavaContext(), Manager.DEFAULT_OPTIONS);
Database database = manager.getDatabase("mydb");

// Create a new document (i.e. a record) in the database.
Document document = database.createDocument();
Map properties = new HashMap();
properties.put("firstName", "John");
document.putProperties(properties);

// Update a document.
document.update(new Document.DocumentUpdater() {
    @Override
    public boolean update(UnsavedRevision newRevision) {
        Map properties = newRevision.getUserProperties();
        properties.put("firstName", "Johnny");
        newRevision.setUserProperties(properties);
        return true;
    }
});

// Delete a document.
document.delete();

// Create replicators to push & pull changes to & from the cloud.
URL url = new URL("https://www.my.com/mydb/");
Replication push = database.createPushReplication(url);
Replication pull = database.createPullReplication(url);
push.setContinuous(true);
pull.setContinuous(true);

// Add authentication.
Authenticator authenticator = AuthenticatorFactory.createBasicAuthenticator(name, password);
push.setAuthenticator(authenticator);
pull.setAuthenticator(authenticator);

// Listen to database change events (there are also change
// events for documents, replications, and queries).
database.addChangeListener(this);

// Start replicators
push.start();
pull.start();

Who's using it?

(just a few of our customers building faster, more powerful apps with NoSQL)

  • Powering Predix

    Predix, GE’s software platform for the industrial internet, connects machines like turbines, railcars, wind farms, and more. GE field engineers work in environments where offline is the norm, so GE had to build a platform these remote workers could count on to work anywhere, at any time.

  • Results

    Needing a solution that would give Predix full offline support for these machines and the apps that manage them, GE turned to Couchbase Mobile. In less than 90 days, GE integrated Couchbase Mobile into the Predix platform and in the process, saved years of development time by not having to build their own offline solution and sync engine.

  • Redefining the mobile app user experience

    As one of Europe’s largest airlines, Ryanair’s 3 million+ mobile users rely on the mobile app to book their flights. Ryanair faced customer experience issues with their app. Bookings were taking over 5 minutes to complete and users were unhappy.

  • Results


    With Couchbase Mobile, Ryanair was able to overhaul their entire app experience without significant re-architecture to their existing app. As a result, booking times are 2.5x faster and data transfer is now 8x more efficient. 

Watch the before & after video of their app

  • The power of location-based data

    CrowdComfort’s app unlocks efficiencies in building and workplace management. Companies like DreamWorks and General Electric rely on CrowdComfort to enable their  employees to report, track and resolve site-specific building issues with their smartphones.

  • Use


    With its offline capabilities, scalability and schema-free design, CrowdComfort chose Couchbase Mobile to support a wide range of facilities. Couchbase Mobile ensures a consistently available and fast experience, regardless of network availability and performance.

Mobile data storage, access, sync and security made easy.

One NoSQL database for everything mobile.

Start Building