Ubuntu One offre une synchronisation des données via desktopcouch, qui est une version locale de CouchDB qui est automatiquement synchronisée avec Ubuntu One et tous vos appareils. Une documentation pour les API cloud et Python est disponible sur Ubuntu One ici, ce qui peut être utile si vous souhaitez construire des applications web ou mobiles qui fonctionnent avec les mêmes données que votre application C++ Ubuntu.
L'API C/C++ n'est pas encore sur le site des développeurs (cela arrivera bientôt !), donc voici un résumé qui devrait suffire pour commencer.
Pour le C/C++, vous avez couchdb-glib et desktopcouch-glib. couchdb-glib fournit l'API générique de CouchDB, et desktopcouch-glib fournit juste un objet, qui crée un objet Session avec tout ce qui est nécessaire pour se connecter au desktopcouch d'Ubuntu One.
Donc :
DesktopcouchSession *dc = desktopcouch_session_new ();
DesktopcouchSession est une sous-classe de CouchdbSession, donc une fois que vous en avez une instance, vous pouvez utiliser les méthodes de CouchdbSession pour accéder à l'instance sous-jacente de CouchDB :
GSList *couchdb_session_list_databases (CouchdbSession *session,
GError **error);
CouchdbDatabase *couchdb_session_get_database (CouchdbSession *session,
const char *dbname,
GError **error);
gboolean couchdb_session_create_database (CouchdbSession *session,
const char *dbname,
GError **error);
gboolean couchdb_session_delete_database (CouchdbSession *session,
const char *dbname,
GError **error);
Avec ces méthodes, vous gérez les bases de données, et avec get_database et create_database, vous obtenez une instance d'un objet CouchdbDatabase, qui vous permet de gérer les documents dans les bases de données :
GSList *couchdb_database_get_all_documents (CouchdbDatabase *database,
GError **error);
gboolean couchdb_database_put_document (CouchdbDatabase *database,
CouchdbDocument *document,
GError **error);
gboolean couchdb_database_delete_document (CouchdbDatabase *database,
CouchdbDocument *document,
GError **error);
Comme vous pouvez le voir, pour gérer les documents eux-mêmes, il y a un autre objet, CouchdbDocument. De plus, il existe des sous-classes de celui-ci pour gérer des types spécifiques de documents, comme CouchdbDocumentContact (pour les contacts).
Vous pouvez obtenir la référence complète de l'API en installant le #libcouchdb-glib-doc paquet. Installer #libdesktopcouch-glib-dev devrait importer toutes les bibliothèques dont vous avez besoin.
L'API vous donne accès à CouchDB, donc bien sûr, vous devrez savoir comment fonctionne CouchDB lui-même, et comment vous stockez des données dedans. La réponse courte est : les données sont stockées dans des documents JSON, et extraites par ID de document ou avec des vues précalculées. http://guide.couchdb.org/ est le livre CouchDB qui explique en détail la méthode de stockage des données de Couch.
Si vous avez des questions, n'hésitez pas à me contacter (aquarius) ou rodrigo sur #ubuntuone sur freenode. Je serais plus qu'heureux de discuter avec vous de ce que vous prévoyez de faire et des bonnes façons de modéliser ces données dans le système de stockage de données Ubuntu One.