t1 en MongoDB para hacer seguimiento de los pedidos de los clientes:
t1 de ClickHouse contendrá la siguiente fila:
Esquema de tabla
_id: Clave primaria de MongoDBdoc: Documento de MongoDB replicado como tipo de datos JSON_peerdb_synced_at: Registra cuándo se sincronizó por última vez la fila_peerdb_version: Lleva un seguimiento de la versión de la fila; se incrementa cuando la fila se actualiza o se elimina_peerdb_is_deleted: Indica si la fila está eliminada
Motor de tabla ReplacingMergeTree
ReplacingMergeTree. Con este motor, las actualizaciones se modelan como inserciones con una versión más reciente (_peerdb_version) del documento para una clave primaria determinada (_id), lo que permite gestionar de forma eficiente actualizaciones, reemplazos y eliminaciones como inserciones versionadas.
ReplacingMergeTree elimina los duplicados de forma asíncrona en segundo plano. Para garantizar la ausencia de duplicados en la misma fila, utilice el FINAL modificador. Por ejemplo:
Gestión de eliminaciones
_peerdb_is_deleted. Normalmente, querrás excluirlas de tus consultas:
Consultas de datos JSON
Query
Result
^:
Query
Result
Tipo Dynamic
Dynamic. El tipo Dynamic permite a ClickHouse almacenar valores de cualquier tipo sin conocerlo de antemano. Puede comprobarlo con la función toTypeName:
Query
Result
dynamicType. Ten en cuenta que puede haber distintos tipos de datos para un mismo nombre de campo en diferentes filas:
Query
Result
Query
Result
Query
Result
Query
Result
Conversión de tipos en campos
sum a un tipo Dynamic, obtendrás el siguiente error:
CAST o la sintaxis :::
Query
Result
La conversión del tipo Dynamic al tipo de dato subyacente (determinado por
dynamicType) ofrece un rendimiento muy alto, ya que ClickHouse ya almacena internamente el valor en ese tipo subyacente.Aplanado de JSON
Vista normal
Vista materializada actualizable
FINAL se ejecuta solo una vez durante la actualización, lo que elimina la necesidad de usar FINAL en las consultas posteriores sobre la tabla de destino.
Una desventaja es que los datos de la tabla de destino solo están actualizados hasta la última actualización. Para muchos casos de uso, intervalos de actualización de varios minutos a unas pocas horas ofrecen un buen equilibrio entre la frescura de los datos y el rendimiento de las consultas.
flattened_t1 directamente sin el modificador FINAL:
Vista materializada incremental
FINAL en su vista materializada, ya que cada actualización desencadenará una fusión. En su lugar, puede deduplicar los datos en tiempo de consulta creando una vista normal sobre la vista materializada.
flattened_t1_final de la siguiente manera: