Simplificar la transición desde RDBMS
La versión 4.5.1 de Couchbase Server aporta múltiples mejoras de funcionalidad, usabilidad y rendimiento en N1QL para responder a las necesidades de las aplicaciones empresariales. Estas mejoras abordan muchos de los problemas críticos de nuestros clientes y simplifican Transición desde RDBMS.
Pruebe Couchbase Server 4.5.1. Está listo para producción, probado por socios y clientes. Consulte las novedades para ver la lista completa de mejoras.
No te pierdas parte1 del blog.
Nueva configuración de la consulta bonito
¡¡Guapa!! ¡¡Guapa!! bonito¡¡!! Sí, bonito es un nuevo e impresionante ajuste de consulta en N1QL que puede activar o desactivar el formato bonito de los resultados de la consulta. Te preguntarás, ¿qué tiene de bueno? Y, ¿por qué alguien puede querer desactivar el hermoso formato bonito de la salida JSON.
Como dice el refrán, no hay comidas gratis. Dar un formato bonito a los resultados de una consulta conlleva sus propios gastos:
- En primer lugar, un hecho rápido es que los caracteres de espacio en blanco (tabulaciones, espacios, nuevas líneas) en un documento JSON con formato bonito consumen casi un tercio de su tamaño.
- Así, basta con reducir el embellecimiento para ahorrar todos los bytes brutos que circulan por la red.
- Además, hay que tener en cuenta el correspondiente ahorro en los recursos de memoria y procesamiento del servicio N1QL.
- En conjunto, el ahorro es bastante significativo.
- El bonito formato de salida es bueno para escenarios legibles por humanos, con resultados humanos manejables.
- Sin embargo, las aplicaciones del mundo real y los programas informáticos realizan consultas con mucha más frecuencia que los humanos y procesan resultados de consultas mucho mayores.
- Para ellos, lo importante es rendimiento y eficaciano es un formato bonito. De hecho, dicho formato es una sobrecarga para el analizador JSON y la aplicación, y normalmente se descarta. Normalmente, las aplicaciones tienen su propia capa de presentación para formatear los datos adecuadamente para los respectivos usuarios.
- Por ejemplo, considere un sitio web de reservas de viajes, donde usted está buscando vuelos. Estoy seguro de que ningún sitio de viajes vuelca los vuelos disponibles como un montón de documentos JSON.
El nuevo parámetro de consulta bonito en 4.5.1 permite activar/desactivar el formateo del resultado de una consulta. El parámetro puede ser:
- ajustado a
verdaderoofalso. - Pasados al motor CBQ como parámetros de línea de comandos
- Se pasa como parámetro de consulta en las llamadas REST.
Por defecto, se establece en verdadero. Cuando se ajusta a falsolos caracteres en blanco se eliminan de los resultados de la consulta. Las ventajas de rendimiento son significativamente visibles cuando las consultas producen resultados de gran tamaño y, por supuesto, dependen del porcentaje de espacio en blanco de los documentos. Por ejemplo, la siguiente consulta, que selecciona todos los documentos de la muestra de viajes, ejecuta casi 3 veces más rápido cuando bonito = false. Observe también el tamaño del conjunto de resultados, que es un tercio del resultado con formato bonito.
Con bonito = true
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
varakurprasad$ time curl -v https://localhost:8093/query/service -d "pretty=true&statement=SELECT * from `travel-sample`" | tail -15 * Hostname was NOT found in DNS cache % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Trying ::1... * Connected to localhost (::1) port 8093 (#0) * Server auth using Basic with user 'travel-sample' > POST /query/service HTTP/1.1 > Authorization: Basic dHJhdmVsLXNhbXBsZTpoZWxsbw== > User-Agent: curl/7.37.1 > Host: localhost:8093 > Accept: */* > Content-Length: 51 > Content-Type: application/x-www-form-urlencoded > } [data not shown] * upload completely sent off: 51 out of 51 bytes < HTTP/1.1 200 OK < Content-Type: application/json; version=1.6.0 < Date: Sat, 15 Oct 2016 02:04:09 GMT < Transfer-Encoding: chunked < { [data not shown] 100 103M 0 103M 100 51 16.6M 8 0:00:06 0:00:06 --:--:-- 17.2M * Connection #0 to host localhost left intact ], "sourceairport": "TLV", "stops": 0, "type": "route" } } ], "status": "success", "metrics": { "elapsedTime": "6.165034483s", "executionTime": "6.164993497s", "resultCount": 31591, "resultSize": 107830610 } } real 0m6.208s user 0m5.704s sys 0m0.373s |
Con bonito = false
Tenga en cuenta que el total resultSize ahora es sólo 36754457bytes, y la consulta se ejecuta en 2,2seg.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
varakurprasad$ time curl -v https://localhost:8093/query/service -d "pretty=false&statement=SELECT * from `travel-sample`" | tail -5 * Hostname was NOT found in DNS cache % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Trying ::1... * Connected to localhost (::1) port 8093 (#0) * Server auth using Basic with user 'travel-sample' > POST /query/service HTTP/1.1 > Authorization: Basic dHJhdmVsLXNhbXBsZTpoZWxsbw== > User-Agent: curl/7.37.1 > Host: localhost:8093 > Accept: */* > Content-Length: 52 > Content-Type: application/x-www-form-urlencoded > } [data not shown] * upload completely sent off: 52 out of 52 bytes < HTTP/1.1 200 OK < Content-Type: application/json; version=1.6.0 < Date: Sat, 15 Oct 2016 02:03:29 GMT < Transfer-Encoding: chunked < { [data not shown] 100 35.1M 0 35.1M 100 52 15.9M 23 0:00:02 0:00:02 --:--:-- 15.9M "status": "success", "metrics": {"elapsedTime": "2.148354775s","executionTime": "2.148323137s","resultCount": 31591,"resultSize": 36754457} } real 0m2.223s user 0m1.977s sys 0m0.141s |
Mejoras en la construcción dinámica de objetos en las consultas N1QL
N1QL ya soporta la creación de objetos JSON dinámicamente en las consultas. Esto ayuda inmensamente en la creación de objetos de resultados construidos específicamente en las listas de proyección de consultas. Couchbase server 4.5.1 amplía la potencia de las expresiones y enriquece la creación dinámica de objetos y el procesamiento de objetos en las consultas N1QL.
- En Couchbase Server 4.5.1, N1QL permite que tanto los nombres como los valores de los campos objeto sean expresiones arbitrarias. En versiones anteriores, se requiere que los nombres de los campos sean cadenas estáticas. Si un nombre no se evalúa a una cadena, el resultado de la construcción del objeto es NULL. Por ejemplo:
12345678910SELECT { UPPER(callsign) || "_key" : callsign || ":" || country || ":" || name } AS myobjFROM `travel-sample`WHERE type = 'airline' limit 1;[{"myobj": {"MILE-AIR_key": "MILE-AIR:United States:40-Mile Air"}}] - Cuando se construyen objetos en una consulta N1QL, los nombres de los campos en pares nombre-valor se hacen opcionales en 4.5.1. Por ejemplo, la siguiente consulta asigna implícitamente los nombres "type" y "name" a los valores respectivos:
123456789SELECT {type, name} AS myobj FROM `travel-sample` LIMIT 1;[{"myobj": {"type": "airport""name": "airport_123"}}]
Nueva función de matriz ARRAY_INTERSECT()
La función ARRAY_INTERSECT() toma dos o más matrices como parámetros y devuelve como resultado la intersección de las matrices de entrada, es decir, la matriz que contiene los valores presentes en todas las matrices de entrada. Si no hay elementos comunes, devuelve una matriz vacía. Para más información, consulte la documentación. Por ejemplo, la siguiente consulta busca los hoteles que le gustan a Brian o Lilian, en el cubo de la muestra de viajes enviada con Servidor Couchbase 4.5.1.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
SELECT meta().id, ARRAY_INTERSECT(public_likes, ["Brian Kilback", "Lilian McLaughlin"]) AS likes FROM `travel-sample` WHERE type = 'hotel' ORDER BY likes DESC LIMIT 4; [ { "id": "hotel_10025", "likes": [ "Lilian McLaughlin", "Brian Kilback" ] }, { "id": "hotel_10026", "likes": [] }, { "id": "hotel_10064", "likes": [] }, { "id": "hotel_10063", "likes": [] } ] |
Descargar Servidor Couchbase 4.5.1 y pruébalo. Hágame saber cualquier pregunta / comentario, o simplemente lo impresionante que es ;-)
¡Salud!