Ruby

Comprender el orden de las letras en las consultas de vista

Las Map/Reduce Views son una parte importante de Couchbase 2.0 y entender cómo consultarlas también es importante. Nuestra documentación es excelente y se puede encontrar aquí: http://www.couchbase.com/docs/couchbase-manual-2.0/couchbase-views.html

Una de las sutilezas es comprender el orden de las letras en la Colación Unicode, que es diferente del orden de bytes (como ASCII), que es al que estamos más acostumbrados, ya que se utiliza en la mayoría de los lenguajes de programación para ordenar cadenas mediante comparaciones de cadenas.

Orden de bytes (como ASCII)

123456890 < AZ < az

Intercalación Unicode (opción por defecto)

123456790 < aAbBcCdDeEfFgGhH...

Observe que las letras están agrupadas, es decir, minúsculas y luego mayúsculas de la misma letra, en lugar de un intervalo de todas las mayúsculas y luego un intervalo de todas las minúsculas.

Además, con caracteres no ingleses, los acentos siguen un principio similar, así:

a < á < A < Á < b
 

Observe que todos los caracteres "a y las variantes acentuadas ocurren antes de la A mayúscula y sus variantes, que también aparecen antes de cualquier carácter "b". 

Ejemplo de pedido

En orden de bytes (como ASCII), las siguientes claves indexadas se ordenarían en este orden:

"ABC123" < "ABC223" < "abc123" < "abc223" < "abcd23" < "bbc123" < "bbcd23"

Sin embargo, en Unicode Collation utilizado en Couchbase Views, este es el orden en el que realmente se producirían:

"abc123" < "ABC123" < "abc223" < "ABC223" < "abcd23" < "bbc123" < "bbcd23"

Por tanto, a la hora de determinar su tecla de inicio y endkey rangos para las cuerdas, ¡es importante conocer este ordenamiento! 

Ejemplos

Por ejemplo, usando la base de datos beer-sample que viene empaquetada con Couchbase 2.0, y quisiera consultar Breweries by_name:

Cervecerías que empiezan por Y mayúscula:
tecla de inicio="Y"&endkey="z"

Sólo devolverá los que empiecen por Y mayúscula.

Cervecerías que empiezan por Y minúscula o Y mayúscula:
tecla de inicio="y"&endkey="z"

Resulta que sólo devuelve todos los que tienen mayúsculas debido a los datos suministrados, pero incluiría los que tienen minúsculas.

Sólo cervecerías que empiezan por y minúscula:
tecla de inicio="y"&endkey="Y"

No debería devolver ningún resultado con los datos suministrados, ¡porque son todos Y mayúsculas!

Esta última es probablemente la menos intuitiva si vienes de una mentalidad de orden de bytes ASCII. ¡Espero que esto sea útil para los que hacen consultas de rango!

@scalabl3

PD. Si te interesa el tema de la intercalación Unicode, puedes obtener más información en estas urls:

http://www.unicode.org/reports/tr10/

http://userguide.icu-project.org/collation/customization#TOC-Default-Options

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por El equipo de Couchbase

Jennifer Garcia es Gerente Senior de Web en Couchbase Inc. Como responsable del sitio web, Jennifer tiene la responsabilidad general de las propiedades del sitio web, incluido el diseño, la implementación, el contenido y el rendimiento.

1 Comentarios

  1. Matt Ingenthron enero 20, 2013 a 3:25 pm

    Tenga en cuenta que el final de la tabla de cotejo unicode latino es u02ad. Es bueno saberlo cuando se busca hasta el final. A veces puede ver uefff que funciona, pero no es técnicamente correcto.

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.