O Ubuntu One fornece sincronização de dados através do desktopcouch, que é uma versão local do CouchDB que é automaticamente sincronizada com o Ubuntu One e todas as suas máquinas. Algumas documentações para as APIs em nuvem e Python estão disponíveis em Ubuntu One aqui , que pode ser útil se você quiser Crie aplicativos da Web ou aplicativos móveis que funcionem com os mesmos dados do aplicativo do Ubuntu C ++.
A API C / C ++ ainda não está no site do desenvolvedor (será em breve!), então aqui está um resumo que deve ser suficiente para começar.
Para C / C ++, você tem couchdb-glib e desktopcouch-glib. O couchdb-glib fornece a API CouchDB genérica, e o desktopcouch-glib apenas fornece um objeto, que cria um objeto Session com tudo o que é necessário para conectar-se ao desktop do Ubuntu One.
Então:
DesktopcouchSession *dc = desktopcouch_session_new ();
DesktopcouchSession é uma subclasse de CouchdbSession, portanto, depois de obter uma instância dele, você pode usar os métodos em CouchdbSession para acessar a instância do CouchDB subjacente:
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);
Com esses métodos, você gerencia bancos de dados e, com get_database e create_database, obtém uma instância de um objeto CouchdbDatabase, que permite gerenciar os documentos nos bancos de dados:
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);
Como você pode ver, para gerenciar os próprios documentos, há outro objeto, o CouchdbDocument. Além disso, há subclasses deste para gerenciar tipos específicos de documentos, como CouchdbDocumentContact (para contatos).
Você pode obter a referência completa da API instalando o libcouchdb-glib-doc pacote. Instalando # libdesktopcouch-glib-dev deve incluir todas as bibliotecas que você precisa.
A API oferece acesso ao CouchDB, portanto, é claro que você precisa saber como o próprio CouchDB funciona e como você armazena dados nele. A resposta curta é: os dados são armazenados em documentos JSON e extraídos por ID do documento ou com visualizações pré-calculadas. O link é o livro do CouchDB que explica o método de armazenamento de dados do Couch em mais detalhes.
Se você tiver dúvidas, por favor ping me (aquarius) ou rodrigo no #ubuntuone no freenode. Eu ficaria mais do que feliz em falar com você sobre o que você está planejando fazer e boas maneiras de modelar esses dados no sistema de armazenamento de dados do Ubuntu One.