Este motor permite integrar o ClickHouse ao RocksDB.
Parâmetros do motor:
ttl - tempo de vida dos valores. O TTL é aceito em segundos. Se o TTL for 0, uma instância regular do RocksDB será usada (sem TTL).
rocksdb_dir - caminho para o diretório de um RocksDB existente ou caminho de destino do RocksDB criado. Abre a tabela com o rocksdb_dir especificado.
read_only - quando read_only é definido como true, o modo somente leitura é usado. Para armazenamento com TTL, a compactação não será acionada (nem manual nem automaticamente), portanto nenhuma entrada expirada será removida.
primary_key_name – qualquer nome de coluna na lista de colunas.
- a
primary key deve ser especificada; ela oferece suporte a apenas uma coluna na chave primária. A chave primária será serializada em formato binário como uma rocksdb key.
- colunas diferentes da chave primária serão serializadas em formato binário como valor
rocksdb, na ordem correspondente.
- consultas com filtragem por chave
equals ou in serão otimizadas para busca de várias chaves no rocksdb.
Configurações do motor:
optimize_for_bulk_insert – A tabela é otimizada para inserções em massa (o pipeline de insert criará arquivos SST e os importará para o banco de dados rocksdb, em vez de gravar em memtables); valor padrão: 1.
bulk_insert_block_size - Tamanho mínimo dos arquivos SST (em número de linhas) criados por inserção em massa; valor padrão: 1048449.
Exemplo:
Há também a tabela system.rocksdb, que expõe estatísticas do RocksDB:
Você também pode alterar qualquer uma das opções do RocksDB usando config:
Por padrão, a otimização trivial de contagem aproximada vem desativada, o que pode afetar o desempenho das consultas count(). Para ativar essa
otimização, defina optimize_trivial_approximate_count_query = 1. Além disso, essa configuração afeta system.tables para o motor EmbeddedRocksDB;
ative essa configuração para ver valores aproximados de total_rows e total_bytes.
Quando novas linhas forem inseridas em EmbeddedRocksDB, se a chave já existir, o valor será atualizado; caso contrário, uma nova chave será criada.
Exemplo:
As linhas podem ser excluídas com a consulta DELETE ou com TRUNCATE.
Os valores podem ser atualizados por meio da consulta ALTER TABLE. A chave primária não pode ser atualizada.
Há suporte a uma direct join especial com tabelas EmbeddedRocksDB.
Essa junção direta evita a criação de uma tabela hash na memória e acessa
os dados diretamente do EmbeddedRocksDB.
Em junções grandes, você pode observar um uso de memória muito menor com junções diretas,
porque a tabela hash não é criada.
Para habilitar junções diretas:
Quando join_algorithm estiver definido como direct, hash, as junções diretas serão usadas
sempre que possível; caso contrário, será usado hash.
Criar e popular uma tabela EmbeddedRocksDB
Crie e popule uma tabela para fazer junção com a tabela rdb
Defina o algoritmo de junção como direct
Um INNER JOIN