Compartir a través de


Vistas materializadas de Azure Cosmos DB for Apache Cassandra (versión preliminar)

SE APLICA A: Cassandra

Importante

Las vistas materializadas de Azure Cosmos DB for Cassandra se encuentran actualmente en versión preliminar. Puede habilitar esta característica en Azure Portal. Esta versión preliminar de las vistas materializadas se proporciona sin un contrato de nivel de servicio. En este momento, no se recomiendan las vistas materializadas para las cargas de trabajo de producción. Es posible que algunas características de esta versión preliminar no sean compatibles o que tengan sus funcionalidades limitadas. Para obtener más información, consulte los términos de uso complementarios para las versiones preliminares de Microsoft Azure.

Definir vistas materializadas le ayudará a proporcionar un medio para consultar eficazmente una tabla base (o un contenedor de Azure Cosmos DB) con filtros que no son claves principales. Cuando los usuarios escriben en la tabla base, la vista materializada se crea automáticamente en segundo plano. Esta vista puede tener una clave principal diferente para las búsquedas eficientes. La vista también contendrá solo las columnas proyectadas explícitamente de la tabla base. Esta vista será una tabla de solo lectura.

Puede consultar un almacén de columnas sin especificar una clave de partición mediante el uso de índices secundarios. Aun así, la consulta no será eficaz para las columnas con cardinalidad alta o baja. La consulta podría examinar todos los datos para un conjunto de resultados pequeño. Estas consultas acaban siendo costosas, ya que terminan ejecutándose de forma accidental como una consulta entre particiones.

Con la vista materializada, puede:

  • Usar una tabla de búsqueda o asignación para conservar exámenes entre particiones que, de lo contrario, serían consultas costosas.
  • Proporcionar un predicado condicional basado en SQL para rellenar solo determinadas columnas y datos que cumplen la condición previa.
  • Crear vistas en tiempo real que simplifican escenarios basados en eventos que suelen almacenarse como colecciones independientes mediante desencadenadores de fuente de cambios.

Ventajas de las vistas materializadas

Las vistas materializadas tienen numerosas ventajas, entre las que se incluyen las siguientes:

  • Puede implementar la desnormalización del lado servidor mediante vistas materializadas. Con la desnormalización del lado servidor, puede evitar la existencia de varias tablas independientes y la desnormalización computacionalmente compleja en aplicaciones cliente.
  • Las vistas materializadas actualizan automáticamente las vistas con el fin de mantener la coherencia con la tabla base. Esta actualización automática elimina la responsabilidad de las aplicaciones cliente que normalmente implementarían lógica personalizada para realizar escrituras duales en la tabla base y en la vista.
  • Las vistas materializadas optimizan el rendimiento de lectura, ya que leen desde una sola vista.
  • Puede especificar el rendimiento de la vista materializada de forma independiente.
  • Puede configurar una capa del generador de vistas materializadas para realizar una asignación a sus requisitos con el fin de hidratar una vista.
  • Las vistas materializadas mejoran el rendimiento de escritura, ya que las operaciones de escritura solo deben escribirse en la tabla base.
  • Además, la implementación de Azure Cosmos DB de vistas materializadas se basa en un modelo de extracción. Esta implementación no afecta al rendimiento de escritura.

Introducción a las vistas materializadas

Cree una API para cuentas de Cassandra mediante la CLI de Azure para habilitar la característica de vistas materializadas con un comando nativo o una operación de la API REST.

  1. Inicie sesión en Azure Portal.

  2. Vaya a su API para la cuenta de Cassandra.

  3. En el menú de recursos, seleccione Configuración.

  4. En la sección Configuración, seleccione Materialized View for Cassandra API (Preview) (Vista materializada para la API de Cassandra [versión preliminar]).

  5. En el cuadro de diálogo nuevo, seleccione Habilitar para habilitar esta característica para esta cuenta.

    Captura de pantalla de la habilitación de la característica Vistas materializadas en Azure Portal.

En segundo plano

La API para Cassandra usa una capa de proceso del generador de vistas materializadas para mantener las vistas.

Dispondrá de flexibilidad para configurar las instancias de proceso del generador de vistas en función de los requisitos de latencia y retardo para hidratar las vistas. Desde un punto de vista técnico, esta capa de proceso ayuda a administrar las conexiones entre particiones de forma más eficaz, incluso cuando el tamaño de los datos es grande y el número de particiones es elevado.

Los contenedores de proceso se comparten entre todas las vistas materializadas dentro de una cuenta de Azure Cosmos DB. Cada contenedor de proceso aprovisionado genera varias tareas que leen la fuente de cambios de las particiones de la tabla base y escriben datos en las vistas materializadas de destino. El contenedor de proceso transforma los datos según la definición de vista materializada para cada vista materializada de la cuenta.

Creación de un generador de vistas materializadas

Cree un generador de vistas materializadas para transformar automáticamente los datos y escribirlos en una vista materializada.

  1. Inicie sesión en Azure Portal.

  2. Vaya a su API para la cuenta de Cassandra.

  3. En el menú de recursos, seleccione Materialized Views Builder (Generador de vistas materializadas).

  4. En la página Materialized Views Builder (Generador de vistas materializadas), configure la SKU y el número de instancias del generador.

    Nota

    Esta opción del menú de recursos y página solo aparecerán cuando la característica de vistas materializadas esté habilitada para la cuenta.

  5. Seleccione Guardar.

Creación de una vista materializada

Una vez que haya configurado la cuenta y el generador de vistas materializadas, debería poder crear vistas materializadas mediante CQLSH.

Nota

Si aún no tiene instalada la herramienta CQLSH independiente, consulte Instalación de la herramienta CQLSH. También debe actualizar la cadena de conexión en la herramienta.

Estos son algunos comandos de ejemplo para crear una vista materializada:

  1. En primer lugar, cree un espacio de claves denominado uprofile.

    CREATE KEYSPACE IF NOT EXISTS uprofile WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 1 };
    
  2. Después, cree una tabla denominada user dentro del espacio de claves.

    CREATE TABLE IF NOT EXISTS uprofile.USER (user_id INT PRIMARY KEY, user_name text, user_bcity text);
    
  3. Ahora, cree una vista materializada denominada user_by_bcity dentro del mismo espacio de claves. Especifique mediante una consulta cómo se proyectan los datos en la vista desde la tabla base.

    CREATE MATERIALIZED VIEW uprofile.user_by_bcity AS 
    SELECT
        user_id,
        user_name,
        user_bcity 
    FROM
        uprofile.USER 
    WHERE
        user_id IS NOT NULL 
        AND user_bcity IS NOT NULL PRIMARY KEY (user_bcity, user_id);
    
  4. Inserte filas en la tabla base.

    INSERT INTO
        uprofile.USER (user_id, user_name, user_bcity) 
    VALUES
        (
            101, 'johnjoe', 'New York' 
        );
    
    INSERT INTO
        uprofile.USER (user_id, user_name, user_bcity) 
    VALUES
        (
            102, 'james', 'New York' 
        );
    
  5. Consulte la vista materializada.

    SELECT * FROM user_by_bcity; 
    
  6. Observe la salida de la vista materializada.

     user_bcity | user_id | user_name 
    ------------+---------+----------- 
       New York |     101 |   johnjoe 
       New York |     102 |     james 
    
    (2 rows) 
    

Opcionalmente, también puede usar el proveedor de recursos para crear o actualizar una vista materializada.

Limitaciones actuales

Hay algunas limitaciones en la implementación de vistas materializadas de la versión preliminar de la API para Cassandra:

  • Las vistas materializadas no se pueden crear en una tabla que ya existiese antes de que se habilitase en esa cuenta la compatibilidad con las vistas materializadas. Para usar vistas materializadas, cree una tabla después de habilitar la característica.
  • En el caso de la cláusula WHERE de la definición de vista materializada, actualmente solo se permiten los filtros IS NOT NULL.
  • Después de crear una vista materializada en una tabla base, no se permiten operaciones ALTER TABLE ADD en el esquema de la tabla base. ALTER TABLE APP solo se permite si ninguna de las vistas materializadas ha seleccionado * en su definición.
  • Hay límites en el tamaño de la clave de partición (2 KB) y la longitud total del tamaño de clave de agrupación en clústeres (1 KB). Si se supera este límite de tamaño, el mensaje responsable acabará en la cola de mensajes dudosos.
  • Si una tabla base tiene tipos definidos por el usuario (UDT) y la definición de vista materializada incluye SELECT * FROM o tiene el UDT en una de las columnas proyectadas, las actualizaciones de UDT no se permiten en la cuenta.
  • Las vistas materializadas podrían ser incoherentes con la tabla base en algunas filas después de la conmutación por error regional automática. Para evitar esta incoherencia, vuelva a generar la vista materializada después de la conmutación por error.
  • No se admite la creación de instancias del generador de vistas materializadas con 32 núcleos. Si es necesario, puede crear varias instancias del generador con un número menor de núcleos.

Además de las limitaciones anteriores, tenga en cuenta las siguientes limitaciones adicionales:

  • Zonas de disponibilidad
    • Las vistas materializadas no se pueden habilitar en una cuenta que tenga regiones habilitadas para zona de disponibilidad.
    • No se admite agregar una nueva región con zona de disponibilidad una vez que enableMaterializedViews se haya establecido en true en la cuenta.
  • Copia de seguridad y restauración periódicas
    • Las vistas materializadas no se restauran automáticamente con el proceso de restauración. Deberá volver a crear las vistas materializadas una vez que se haya completado el proceso de restauración. Después, debe configurar enableMaterializedViews en la cuenta restaurada antes de volver a crear las vistas materializadas y los generadores.
  • Apache Cassandra
    • No se permite definir una directiva de resolución de conflictos en las vistas materializadas.
    • No se permiten las operaciones de escritura en las vistas materializadas.
    • No se permiten las consultas entre documentos y el uso de funciones de agregado en las vistas materializadas.
    • El esquema de una vista materializada no se puede modificar después de la creación.
    • No se permite eliminar la tabla base si hay al menos una vista materializada definida en ella. Todas las vistas deben eliminarse primero y, después, se puede eliminar la tabla base.
    • No se permite definir vistas materializadas en contenedores con columnas estáticas.

Pasos siguientes