2012-01-24 16 views
5

ho una chiave candidata (MongoDB chiave candidata, __id) questo è presenta come di seguito nel buffer di protocollo:binary-to-text encoding, i caratteri non stampabili, buffer di protocollo, MongoDB e BSON

message qrs_signature 
{ 
    required uint32 region_id = 1; 
    repeated fixed32 urls = 2; 
}; 

Naturalmente Non riesco a utilizzare una stringa codificata dei protocolli buffer (tramite ParseToString(std::string)) nel mio documento bson poiché può contenere caratteri non stampabili. Pertanto, sto usando la codifica ascii85 per codificare i dati (usando this library). Ho due domande.

  1. È codifica b85 bson-safe.
  2. Che cos'è bson's binary type for? c'è un modo in cui posso impiantare la mia stringa (binaria) in quel campo usando una chiamata API mongodb, o è solo zucchero sintattico per denotare un tipo di valore che deve essere elaborato in qualche modo (--ie, non un nativo entità mongodb)?

modifica

dati di visualizza append binary API essendo codificato come esadecimale (OMG!), Base85 è quindi più efficiente dello spazio (22 byte per il record nel mio caso).

risposta

4
  1. BSON sicuro, sì. L'output della codifica ASCII85 è anche valido utf-8 iirc.
  2. È utilizzato per archiviare blocchi di dati binari. I dati binari sono di tipo ufficialmente supportato e dovresti essere in grado di inviare valori binari ai campi BSON utilizzando il codice del driver appropriato, BSONObj nel tuo caso. Fare riferimento ai documenti del driver o al codice sorgente per i dettagli.
+0

Aha, grazie per la convalida, ora vedo che esiste un metodo specifico per aggiungere dati binari chiamato "BSONObjBuilding :: AppendBinData", che occupa un campo di lunghezza. –

Problemi correlati