Este es un administrador de documentos All-SQL para Letarette. Para conectar un almacenamiento de documentos primario basado en SQL a Letarette, solo se deben suministrar dos consultas. Verifique el ejemplo para ver qué tan básicos pueden ser, dado que el almacenamiento primario tiene una estructura similar.
Los siguientes controladores SQL son compatibles:
Si solo desea probarlo, hay una configuración docker-compose que inicia un pequeño sistema Letarette completo, alimentado por la base de datos y consultas del proyecto de ejemplo.
Simplemente ejecute docker-compose up para iniciar el sistema.
Cuando el sistema está arriba, puede ejecutar consultas (y otros comandos) ejecutando el lrcli dentro del contenedor "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… El servicio Letarette.sql , lrsql , necesita saber cómo conectarse a la base de datos SQL y dónde encontrar las consultas que proporcionan documentos al indexador de Letarette .
Para que el servicio se conecte a una fuente PostgreSQL y use los valores predeterminados para las ubicaciones de los archivos de consulta ( indexrequest.sql y documentrequest.sql ):
$ export LRSQL_DB_DRIVER= " postgres "
$ export LRSQL_DB_CONNECTION= " postgres://user:password@localhost/testdb?sslmode=verify-full "
$ ./lrsql Ejecutar lrsql con cualquier argumento de línea de comandos imprimirá la configuración disponible y sus valores predeterminados.
El ciclo de actualización del indexador de Letarette tiene dos pasos separados, primero obtiene una "lista de intereses" de documentos que son más nuevos que la posición de índice actual (solicitud de índice), y luego obtiene los documentos de esa lista (solicitud de documento).
Las marcas de tiempo son UTC - referenciadas Nanosegundos de la Epoch.
La posición del índice actual es una combinación de una ID de documento y la marca de tiempo actualizada de ese documento. Para manejar la situación en la que se ha actualizado el documento de posición del índice desde la última vez que se obtuvo, las consultas de solicitud de índice deben seguir un orden de documento estricto. Esto se maneja mejor clasificando principalmente en la marca de tiempo de actualización y secundariamente en ID de documento y manejando el caso donde la marca de tiempo de actualización no cambia por separado. Consulte IndexRequest.sql del proyecto de ejemplo.
La consulta de solicitud de índice obtiene tres parámetros límite: afterDocument (String), fromTimeNanos (int64) y documentLimit (UINT16) y debe devolver filas de dos columnas: id (String) y updatedNanos (INT64). Los parámetros de los límites se mencionan al prefijarlos con un colon:
where :afterDocument > 2 Implementar la solicitud de documento es aún más fácil, ya que esto solo necesita recuperar todos los documentos para una lista de ID de documento: DocumentRequest.sql. Los parámetros de un solo parámetro wantedIDs se reemplazarán con una lista de ID de documento (cadena).
La consulta de solicitud de documento debe devolver filas de id (String), updatedNanos (int64), title (String), txt (String) y alive (Bool).
LETARETTE.SQL utiliza etiquetas de compilación para controlar qué controladores están integrados en el binario de servicio. Las etiquetas de compilación tienen los mismos nombres que los controladores que habilitan.
La lista actual de etiquetas de compilación del controlador es:
Por ejemplo, para construir un binario con soporte "Postgres" y "MySQL":
$ go build -tags " postgres,mysql "El servicio Letarette.sql está configurado por variables de entorno.
| Variable | Tipo | Descripción |
|---|---|---|
| Lrsql_nats_url | Cadena | URL para que el servicio NATS se conecte, predeterminado a nats://localhost:4222 . |
| Lrsql_nats_topic | Cadena | Nats Topic prefijo para todos los mensajes, predeterminado a leta . |
| Lrsql_index_space | Cadena | El espacio de índice para servir, por defecto, docs . |
| Lrsql_db_driver | Cadena | Nombre del controlador de la base de datos |
| Lrsql_db_connection | Cadena | Cadena de conexión de base de datos |
| Lrsql_sql_indexsqlfile | Cadena | Archivo de origen SQL para el manejo de solicitudes de índice. Valor predeterminado: indexrequest.sql . |
| Lrsql_sql_documentsqlfile | Cadena | Fuente de SQL solicitó las solicitudes de documentos de manejo. Valor predeterminado: documentrequest.sql . |