partir de ahora, la única manera que he trabajado con las nuevas versiones de CouchBase, es a través de un memcached Client. Yo uso Erlang como el lenguaje de programación y así me había agarrado un Erlang Memcached Client. Me di cuenta de que este cliente serializa y anula la serialización de los términos erlang (clave y valor) convirtiéndolos de y a binario usando erlang:term_to_binary/1 and erlang:binary_to_term/1
al enviar y recibir datos de memcached.
Durante la configuración de CouchBase, se nos pide que elija cubetas con memcached o cubetas de CouchBase (vbuckets). Ahora, elegí CouchBase (porque necesitaba persistencia). Comencé a interactuar con la configuración utilizando el cliente de Memcached de Erlang y está bien, guardo los términos de erlang y recupero los términos de erlang de la base de datos. Sin embargo, los problemas comienzan aquí:
1. Debido a la serialización de los datos, los objetos se reciben como archivos adjuntos. Aunque se envíen como JSON, se envían como datos binarios que no tienen ningún significado para CouchBase (¿o Memcached?) CouchBase mezclado con Memcached, ¿pérdida de la mayoría de las filosofías y funcionalidades de CouchDB?
{ "_id": "mykey", "_rev": "1-000010fb1a2b02ef0000000d59960000", "$flags": 38489, "$expiration": 0, "$att_reason": "invalid_json", "_attachments": { "value": { "content_type": "application/content-stream", "revpos": 2, "digest": "md5-n3mJhf2kKVQtkIunIbCJZQ==", "length": 13, "stub": true } } }
2 Como resultado de esto, estos datos no se pueden buscar, manipular a través de CouchDB views. La única forma de obtener los datos es mediante "Clave", independientemente de lo anidado que esté un objeto. Con originales Couch DB, podríamos escribir Advanced Views, Map reduce para buscar y manipular datos JSON en el etc base de datos
3. Por lo tanto, no podemos utilizar claramente cosas como: Couch Apps y Design Documents con sofá Base como estamos acostumbrados a ver con Couch DB, porque estas funciones están destinadas al procesamiento de datos JSON dentro de Couch.
Preguntas
1. Entiendo que CouchBase está buscando un enfoque diferente de CouchDB, sin embargo, como desarrollador siento que nos han quitado mucho. No más aplicaciones de Couch, documentos de diseño, vistas, e.t.c?
2. Probablemente, estoy obteniendo algo mal aquí, ¿alguien puede por favor mostrarme cómo puedo hacer todo esto con Couch Base como lo hice con Couch DB original?
3. ¿Hay alguna otra forma de insertar, leer o actualizar datos en Couch Base 1.8 y superior, (usando erlang) que no sea un cliente de Memcached de Erlang? Esto se debe a que existe una serialización de datos que hace que estos datos sean inútiles para otras tecnologías dentro del mismo proyecto, ya que pueden no ser capaces de decodificar las estructuras de datos de Erlang
4. En un proyecto multilingüe donde tenemos Desarrolladores PHP, C++, Erlang, Ruby, etc. trabajando con la misma instancia de Couch Base (Base de datos), con la serialización de datos, ¿cómo se supone que debemos acceder y entender los datos en todas las tecnologías?
Alguien ayuda a señalar los cambios de CouchDB a Couch Base, explica por qué la nueva Couch Base está tan atada a Memcached a un punto donde tenemos que usar los clientes de Memcached para hablar con CouchBase. Además, si hay otro SDK de Erlang-to-CouchBase que pueda ayudarme a hablar JSON (y NO datos de serialización) desde y hacia Couch Base, deseo poner mis manos en él.
** EDITAR **
Supongamos lo siguiente: CouchBase x86_64 1.8.0 y Erlang OTP R15B. Necesito trabajar con datos JSON en Couch Base para que en un gran proyecto multilingüe, nuestras aplicaciones operen el mismo conjunto de datos sin tener problemas de serialización. Gracias
Estoy enfrentando el mismo problema ya que json perfectamente válido se almacena como datos binarios en el servidor de la base de datos. – Swapnil
Acabo de recurrir a CouchDB. –