这是Letarette的全sql文档管理器。要将基于SQL的主文档存储连接到Letarette,只需要提供两个查询。鉴于主存储具有相似的结构,检查示例以查看它们的基础。
支持以下SQL驱动程序:
如果您只想尝试一下,就会有一个docker-compose配置,该配置启动了一个完整的小letarette系统,该系统由数据库和示例项目中的查询提供。
只需运行docker-compose up启动系统。
当系统启动时,您可以通过在“ Letarette”容器中运行lrcli来运行查询(和其他命令):
$ 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…LETARETTE.SQL服务lrsql需要知道如何连接到SQL数据库,以及在哪里找到向Letarette索引器提供文档的查询。
为了使服务连接到PostgreSQL源,并为查询文件位置使用默认值( indexrequest.sql和documentrequest.sql ):
$ export LRSQL_DB_DRIVER= " postgres "
$ export LRSQL_DB_CONNECTION= " postgres://user:password@localhost/testdb?sslmode=verify-full "
$ ./lrsql使用任何命令行参数运行lrsql将打印出可用的设置及其默认值。
Letarette索引器更新周期有两个单独的步骤,首先是比当前索引位置(索引请求)的文档的“兴趣列表”,然后在该列表上获取文档(文档请求)。
时间戳为UTC-引用的UNIX EPOCH纳米秒。
当前的索引位置是文档ID和该文档的更新时间戳的组合。为了处理自上次获取索引位置文档已更新的情况,索引请求查询需要遵循严格的文档订购。最好通过主要在更新时间戳上进行排序,其次是在文档ID上进行排序,并处理更新时间戳不变的情况。请参阅示例项目中的indexrequest.sql。
索引请求查询获取三个绑定参数: afterDocument (String), fromTimeNanos (INT64)和documentLimit (UINT16),并应返回两个列的行: id (String)和updatedNanos (INT64)。边界参数是通过将结肠前缀前缀来提及的:
where :afterDocument > 2 实施文档请求甚至更容易,因为这只需要检索文档ID列表的所有文档:documentRequest.sql。单界参数wantedIDs将被文档ID列表替换(字符串)。
文档请求查询应返回id (String), updatedNanos (INT64), title (String), txt (String)和alive (Bool)的行。
letarette.sql使用构建标签来控制服务二进制中的哪些驱动程序。构建标签具有与启用驱动程序相同的名称。
当前的驱动程序构建标签列表是:
例如,用“ Postgres”和“ MySQL”支持构建二进制文件:
$ go build -tags " postgres,mysql "letarette.sql服务由环境变量配置。
| 多变的 | 类型 | 描述 |
|---|---|---|
| lrsql_nats_url | 细绳 | url供NATS服务连接到nats://localhost:4222 。 |
| lrsql_nats_topic | 细绳 | NATS主题前缀所有消息,默认为leta 。 |
| lrsql_index_space | 细绳 | 索引空间,默认为docs 。 |
| lrsql_db_driver | 细绳 | 数据库驱动程序名称 |
| lrsql_db_connection | 细绳 | 数据库连接字符串 |
| lrsql_sql_indexssqlfile | 细绳 | 用于处理索引请求的SQL源文件。默认值: indexrequest.sql 。 |
| lrsql_sql_documentsqlfile | 细绳 | SQL源用于处理文档请求。默认值: documentrequest.sql 。 |