Creo que es seguro decir que todos estamos familiarizados con el código Ruby anterior. Establece una conexión desde el SDK de Ruby a un bucket de nuestra elección dentro de nuestro cluster de Couchbase. Hay, por supuesto, múltiples formas de escribir esta línea, como especificar el URI y el Puerto como símbolos Ruby (:pool => "default", :bucket => "my-bucket")
etc. El punto que estoy haciendo aquí es que escribimos estos comandos simples de una línea, y obtenemos 1 conexión simple a nuestro cubo elegido. Pero, ¿y si nuestra aplicación utiliza varios buckets? En este artículo, voy a volver a lo básico, y le llevará a través de la configuración, y la conexión a Cubos múltiples.
¿Por qué utilizar múltiples cubos en Couchbase?
Usar múltiples buckets en Couchbase es un concepto interesante. (Al menos para mí).
Por un lado, el uso de múltiples buckets tiene sus ventajas, PERO es importante recordar que, gracias a la tecnología de Couchbase Esquema flexiblepodríamos almacenar documentos JSON de cualquier estructura en el mismo cubo, incluso si el esquema de cada documento fuera diferente.
Sin embargo, muchos usuarios de Couchbase están viendo beneficios en el uso de múltiples Buckets en sus aplicaciones. Por ejemplo, si eres un proveedor de hosting y quieres que diferentes usuarios utilicen el mismo servidor de base de datos, los buckets pueden protegerse con contraseña para evitar que un usuario acceda a los datos de otro.
Algunas personas crean varios buckets con fines organizativos: por ejemplo, podría estar ejecutando dos aplicaciones diferentes y desea que los datos estén separados o tal vez sólo queremos dividir los datos por categoría. Todos estos son casos de uso muy razonables y, por supuesto, muy posibles. Ahora que ya sabemos por qué podemos utilizar varios buckets, veamos lo siguiente Cómo podemos conectarnos y utilizar esos cubos.
Conexión a múltiples buckets en Couchbase:
Vamos a ello. Abra su Consola de administración. Haz clic en la pestaña "Buckets", y vamos a crear 2 nuevos Buckets: bucket1 y bucket2.
Así que, ahora que tenemos nuestros cubos de datos, escribamos algo de Ruby para crear nuestras conexiones de cliente a ellos.
En primer lugar, asegúrate de que tienes Libcouchbase instalado. Luego, asegúrate de tener instalada la última gema Ruby de Couchbase. A continuación, sigue adelante y crea un archivo Ruby llamado cb_connect.rb - Yo uso Ruby 2.0, pero tú sólo necesitas usar 1.9+.
requiere couchbase
CONFIG = {
:lista_nodo => ["localhost:8091"],
:clave_prefijo => "piscina_",
:tamaño_pool => 3
}
Aquí, estamos estableciendo algunos parámetros de configuración de conexión. Nuestra lista de nodos es la estándar. Estamos configurando un prefijo de clave, para anteponer a nuestros documentos 'pool_' al configurarlos. También estamos estableciendo nuestro pool_size a 3.
Ahora vamos a escribir un objeto pool a prueba de hilos, que proxy todos los métodos a la Couchbase::Cubo instancia:
@servidores ||= {}
@servidores[cubo] ||= comience
tamaño = CONFIG[:tamaño_pool]
params = CONFIG.fusionar(:cubo => cubo)
Couchbase::ConnectionPool.nuevo(tamaño, parámetros)
fin
fin
Aquí notará que hay una clara falta de especificidad con respecto a Buckets. En la configuración anterior, configuramos los parámetros para que incluyan los ya especificados :pool_size, y el :cubo que especificamos en el momento de la operación. Al escribir este pequeño método de conexión, nos estamos permitiendo especificar múltiples cubos dentro de nuestro código Ruby.
Vamos a probar nuestro método de conexión escribiendo algunas operaciones para Couchbase:
conexión("cubo2").configure("bar", "foo")
hilos = []
5.veces do
hilos << Hilo.nuevo do
conexión("cubo1").consiga("foo")
conexión("cubo2").consiga("bar")
fin
fin
hilos.mapa do |t|
pone [t.objeto_id, t.valor].únase a(“t“)
fin
Aquí, estamos configurando algunos datos de muestra, pero especificando nuestra conexión bucket dentro del comando Set. Luego estamos usando el threading incorporado dentro de Ruby para realizar operaciones Get en nuestro conjunto de objetos de muestra. Aquí, también estamos especificando nuestra conexión dentro del comando Get.
Después de escribir este código, debería ver una buena visualización de los datos en la interfaz de administración. El último Bloque que escribimos unirá las Claves de los datos de muestra con el valor y los imprimirá en nuestro Terminal.
En tu terminal, ejecuta:
Debería ver la visualización antes mencionada y la salida:
Así que hemos configurado nuestra conexión usando la propiedad ConnectionPool dentro de Couchbase (Sólo disponible en Ruby 1.9+), y especificado nuestros Buckets en ops-time. Y así es como podemos configurar múltiples conexiones de Bucket a través de Pooling en el cliente Ruby de Couchbase.
Para ver el código completo de este blog, ver el Gist.
Para aquellos de vosotros que sois Rubyistas y os gusta usar Rails, actualmente estoy escribiendo una aplicación de ejemplo en Rails basada en una tabla de clasificación social gamificada. Estoy utilizando el Modelo Couchbase que permite un modelado de datos similar al de Active_Record. Esta aplicación y el código fuente abierto se publicarán, junto con otro blog How-To, durante la próxima semana.
- Robin Johnson
Defensor del Desarrollador, Europa
[...] Entrada de blog de la semana: Conexiones múltiples de buckets en Couchbase y Ruby [...]
Hola,
Si quiero utilizar un modelo Couchbase con varios buckets, ¿qué debo hacer para conectarlo?
Uso el modelo couchbase en Ruby, por favor guíame.
Gracias.
Actualmente esta librería no soporta la conexión a múltiples buckets. ¿Podría describir su caso de uso un poco más?
Hola Sergey Avseyev,
Gracias por su ayuda
Quiero mapear todos los atributos del modelo a Couchbase, cuando leo tu guía, no se como empujar y obtener un objeto json para cada Bucket en CB.
Así que me puede decir, quiero saber más que CB.
Gracias Sergey.
Que tenga un buen día.
HungCao