이것은 Letarette의 All-SQL 문서 관리자입니다. SQL 기반 기본 문서 저장소를 Letarette에 연결하려면 두 개의 쿼리 만 제공하면됩니다. 기본 스토리지가 유사한 구조를 가지고 있기 때문에 예제를 확인하십시오.
다음 SQL 드라이버가 지원됩니다.
시도해 보려면 데이터베이스에 의해 공급 된 완전한 Little Letarette 시스템과 예제 프로젝트의 쿼리를 시작하는 docker-compose 구성이 있습니다.
시스템을 시작하려면 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 Indexer 업데이트주기에는 두 개의 별도 단계가 있습니다. 먼저 현재 인덱스 위치 (색인 요청)보다 새로운 문서의 "관심 목록"을 가져온 다음 해당 목록의 문서를 가져옵니다 (문서 요청).
타임 스탬프는 UTC- 참조 된 UNIX EPOCH NANOSECONDS입니다.
현재 인덱스 위치는 문서 ID와 해당 문서의 업데이트 된 타임 스탬프 의 조합입니다. 인덱스 위치 문서가 마지막으로 가져온 이후 업데이트 된 상황을 처리하려면 인덱스 요청 쿼리가 엄격한 문서 순서를 따라야합니다. 이는 주로 업데이트 타임 스탬프를 정렬하고 문서 ID를 두 번째로 정렬하고 업데이트 타임 스탬프가 별도로 변경되지 않은 경우를 처리하여 처리하는 것이 가장 좋습니다. 예제 프로젝트에서 indexrequest.sql을 참조하십시오.
인덱스 요청 쿼리는 fromTimeNanos (int64) 및 documentLimit (UINT16)의 afterDocument (String)의 세 가지 바운드 매개 변수를 가져 오며 두 열의 행 : id (String) 및 updatedNanos (int64)의 행을 반환해야합니다. 경계 매개 변수는 결장으로 접두사를 통해 참조됩니다.
where :afterDocument > 2 문서 요청을 구현하는 것이 더 쉽습니다. 이것은 문서 ID 목록에 대한 모든 문서를 검색하면 DocumentRequest.sql입니다. 단일 바인딩 파라미터 wantedIDs 문서 ID (String) 목록으로 대체됩니다.
문서 요청 쿼리는 id (string), updatedNanos (int64), title (string), txt (String) 및 alive (bool)의 행을 반환해야합니다.
Letarette.sql은 빌드 태그를 사용하여 서비스 바이너리에 내장 된 드라이버를 제어합니다. 빌드 태그는 활성화하는 드라이버와 동일한 이름을 가지고 있습니다.
드라이버 빌드 태그의 현재 목록은 다음과 같습니다.
예를 들어, "Postgres"및 "MySQL"지원으로 이진을 구축하려면 :
$ go build -tags " postgres,mysql "letarette.sql 서비스는 환경 변수로 구성됩니다.
| 변하기 쉬운 | 유형 | 설명 |
|---|---|---|
| lrsql_nats_url | 끈 | NATS 서비스에 대한 URL, nats://localhost:4222 에 기본값을 연결합니다. |
| lrsql_nats_topic | 끈 | 모든 메시지에 대한 NATS 주제 접두사, leta 에 대한 기본값. |
| lrsql_index_space | 끈 | 봉사 할 인덱스 공간, docs 의 불이행. |
| lrsql_db_driver | 끈 | 데이터베이스 드라이버 이름 |
| lrsql_db_connection | 끈 | 데이터베이스 연결 문자열 |
| lrsql_sql_indexsqlfile | 끈 | 인덱스 요청 처리를위한 SQL 소스 파일. 기본값 : indexrequest.sql . |
| lrsql_sql_documentsqlfile | 끈 | 문서 요청을 처리하기 위해 제출 된 SQL 소스. 기본값 : documentrequest.sql . |