Zumero


Zumero Servers Compared


Table of Contents

1. About
2. The Zumero Server

1. About

2013-10-15 08:56:13

This document explains the differences between the two different implementations of the Zumero server.

2. The Zumero Server

Zumero supports two different server implementations:

  • Zumero Cloud

  • Zumero for SQL Server

In some ways, these two products are the same:

  • At the core, both of these products are built on the same sync technology. A SQLite database file on the client is synchronized with a "dbfile" on the server. The server can host any number of dbfiles, and you can choose which ones to synchronize on each device. Performing a sync operation from a client is done by calling the zumero_sync() function.

  • Both of these implementations of the Zumero server provide:

    • Synchronization services (with conflict resolution) for mobile devices.

    • A centralized, authoritative copy of your data.

    • Security features such as authentication and access control lists.

  • On the client, all of your interaction with the SQLite database file takes place using the SQLite API (or some wrapper around it). You can place the file wherever you want, and the path of that file is the identifier you use to access it. When you open the file (using, say, sqlite3_open_v2() from the SQLite C API), you pass it the path.

However, in other ways, these two products are very different:

Zumero Cloud Zumero for SQL Server
Zumero Cloud uses SQLite on the server side just like on the client side. A "dbfile" on the server is actually a SQLite database file. Zumero for SQL Server works with data in one or more Microsoft SQL Server databases. A "dbfile" on the server is more like a partition, a set of MSSQL tables which are intended to be synchronized together.
Zumero Cloud is a hosted service provided by Zumero. Specifically, it is a cluster of services in the Amazon cloud. Zumero for SQL Server is licensed by Zumero for on-prem installation. Specifically, it is an IIS module, compatible with Microsoft Windows Server 2008 R2 and up.
The Zumero Cloud server owns its database. It is not designed to cooperate with other systems directly interacting with the same data. It is designed on the assumption that it (the Zumero Cloud server) will be the only way to interact with the data, that anything which interacts with the data will be a client. Zumero for SQL Server is designed to work with one or more Microsoft SQL Server databases which it does not own. It thinks of itself as a guest in SQL Server's home, and it assumes that lots of other things may be happening in that database.
Because the only way to interact with the data owned by a Zumero Cloud server is to be a client, the Zumero Client SDK contains features to define table and columns, manipulate conflict resolution rules, configure authentication and permissions, and so on. Typically these features are not used by apps on mobile devices, but rather, by administration scripts on desktop machines and servers. Zumero for SQL Server does not allow clients to do administrative things such as defining table or columns. All such tasks are performed by interacting with the SQL Server database directly, through the ZSS Manager application.
In Zumero Cloud, the server is pretending to be a SQLite-based RDBMS server with sync capabilities. With Zumero for SQL Server, SQLite on the mobile device is pretending to be MS SQL.
Zumero Cloud is primarily designed as a hosted backend for new, mobile-only apps. Zumero for SQL Server is designed to be added as a sync solution for existing data in Microsoft SQL Server. If ZSS were a surgical procedure, it would be described as "minimally invasive".