Este é um gerenciador de documentos All-SQL para Letarette. Para conectar um armazenamento de documentos primários baseado em SQL à Letarette, apenas duas consultas precisam ser fornecidas. Verifique o exemplo para ver como eles podem ser básicos, já que o armazenamento primário tem uma estrutura semelhante.
Os seguintes drivers SQL são suportados:
Se você deseja apenas experimentá-lo, há uma configuração docker-compose que inicia um pequeno sistema completo de Letarette, alimentado pelo banco de dados e consultas do projeto de exemplo.
Basta executar docker-compose up para iniciar o sistema.
Quando o sistema terminar, você pode executar consultas (e outros comandos) executando o lrcli dentro do contêiner "Letarette":
$ docker-compose exec letarette ./lrcli search -i docs
search > carrots -celery
Query executed in 0.000564746 seconds with status " found in index "
Returning 2 of 2 total hits, capped: false
[135] …and a carrot ; boil until soft. When done, take out the…
[303] …pot, 1 carrot, 1 onion, thyme, bay leaf, salt and pepper, 2 cloves… O Serviço Letarette.SQL , lrsql , precisa saber como se conectar ao banco de dados SQL e onde encontrar as consultas que fornecem documentos ao Indexador Letarette .
Para tornar o serviço conectar -se a uma fonte postgreSQL e usar valores padrão para os locais do arquivo de consulta ( indexrequest.sql e documentrequest.sql ):
$ export LRSQL_DB_DRIVER= " postgres "
$ export LRSQL_DB_CONNECTION= " postgres://user:password@localhost/testdb?sslmode=verify-full "
$ ./lrsql A execução lrsql com qualquer argumento da linha de comando imprimirá as configurações disponíveis e seus valores padrão.
O ciclo de atualização do Lontarette Indexer possui duas etapas separadas, primeiro ele busca uma "lista de juros" de documentos mais recentes que a posição atual do índice (solicitação de índice) e, em seguida, busca os documentos nessa lista (solicitação de documento).
TIMESTAMPS são UTC - Nanossegundos de Epoch Referenciados.
A posição atual do índice é uma combinação de um ID do documento e o registro de data e hora atualizado desse documento. Para lidar com a situação em que o documento de posição do índice foi atualizado desde que foi buscado pela última vez, as consultas de solicitação de índice precisam seguir uma pedidos rígidos de documentos. Isso é melhor tratado, classificando -se principalmente no timestamp de atualização e secundariamente no ID do documento e no manuseio do caso em que o registro de data e hora de atualização permanece inalterado separadamente. Consulte IndexRequest.SQL do projeto de exemplo.
A consulta de solicitação de índice obtém três parâmetros vinculados: afterDocument (String), fromTimeNanos (Int64) e documentLimit (UINT16) e deve retornar linhas de duas colunas: id (string) e updatedNanos (int64). Os parâmetros dos limites são referidos por prefixá -los com um cólon:
where :afterDocument > 2 A implementação da solicitação de documento é ainda mais fácil, pois isso só precisa recuperar todos os documentos para uma lista de IDs de documentação: DocumentRequest.SQL. O parâmetro vinculado único wantedIDs será substituído por uma lista de IDs de documentos (string).
A consulta de solicitação de documentos deve retornar linhas de id (string), updatedNanos (int64), title (string), txt (string) e alive (bool).
Letarette.SQL usa tags de construção para controlar quais drivers são incorporados no binário de serviço. As tags de construção têm os mesmos nomes que os drivers que estão permitindo.
A lista atual de tags de construção do driver é:
Por exemplo, para construir um binário com suporte "Postgres" e "MySQL":
$ go build -tags " postgres,mysql "O serviço Letarette.SQL é configurado por variáveis de ambiente.
| Variável | Tipo | Descrição |
|---|---|---|
| Lrsql_nats_url | Corda | URL para o serviço NATS para se conectar, padrões aos nats://localhost:4222 . |
| Lrsql_nats_topic | Corda | Prefixo de tópicos do NATS Para todas as mensagens, padrões para leta . |
| Lrsql_index_space | Corda | O espaço de índice a ser servido, padrão para docs . |
| Lrsql_db_driver | Corda | Nome do driver do banco de dados |
| Lrsql_db_connection | Corda | String de conexão do banco de dados |
| Lrsql_sql_indexsqlfile | Corda | Arquivo de origem SQL para lidar com solicitações de índice. Padrão: indexrequest.sql . |
| Lrsql_sql_documentsqlfile | Corda | A SQL Source pediu o manuseio de solicitações de documentos. Padrão: documentrequest.sql . |