นี่คือตัวจัดการเอกสาร All-SQL สำหรับ Letarette ในการเชื่อมต่อที่เก็บเอกสารหลักที่ใช้ SQL กับ Letarette จำเป็นต้องจัดทำแบบสอบถามเพียงสองแบบเท่านั้น ตรวจสอบตัวอย่างเพื่อดูว่าพวกเขาเป็นพื้นฐานได้อย่างไรเนื่องจากที่เก็บข้อมูลหลักมีโครงสร้างที่คล้ายกัน
รองรับไดรเวอร์ SQL ต่อไปนี้:
หากคุณต้องการลองใช้จะมีการกำหนดค่า docker-compose ที่เปิดตัวระบบ Letarette เล็ก ๆ ที่สมบูรณ์ซึ่งป้อนโดยฐานข้อมูลและการสืบค้นจากโครงการตัวอย่าง
เพียงเรียกใช้ docker-compose up ในการเริ่มระบบ
เมื่อระบบขึ้นคุณสามารถเรียกใช้แบบสอบถาม (และคำสั่งอื่น ๆ ) โดยเรียกใช้ lrcli ภายในคอนเทนเนอร์ "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… บริการ 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 มีสองขั้นตอนแยกกันก่อนที่จะดึง "รายการดอกเบี้ย" ของเอกสารที่ใหม่กว่าตำแหน่งดัชนีปัจจุบัน (คำขอดัชนี) จากนั้นจะดึงเอกสารในรายการนั้น (คำขอเอกสาร)
Timestamps คือ UTC - Nanoseconds unix Epoch
ตำแหน่งดัชนีปัจจุบันคือการรวมกันของรหัสเอกสารและ การประทับเวลาที่อัปเดต ของเอกสารนั้น ในการจัดการกับสถานการณ์ที่เอกสารตำแหน่งดัชนีได้รับการอัปเดตตั้งแต่ถูกดึงครั้งล่าสุดข้อความค้นหา การร้องขอดัชนี จำเป็นต้องติดตามการสั่งซื้อเอกสารที่เข้มงวด สิ่งนี้ได้รับการจัดการที่ดีที่สุดโดยการเรียงลำดับเป็นหลักใน การอัปเดตการประทับเวลา และครั้งที่สองใน ID เอกสาร และจัดการเคสที่การ อัปเดตการประทับเวลา ไม่เปลี่ยนแปลงแยกกัน ดู indexrequest.sql จากโครงการตัวอย่าง
แบบสอบถามคำขอดัชนีได้รับพารามิเตอร์ที่ถูกผูกไว้สามพารามิเตอร์: afterDocument (String), fromTimeNanos (INT64) และ documentLimit (UINT16) และควรส่งคืนแถวของสองคอลัมน์: id (String) และ updatedNanos (INT64) พารามิเตอร์ขอบเขตจะถูกอ้างถึงโดยนำหน้าด้วยลำไส้ใหญ่:
where :afterDocument > 2 การใช้ คำขอเอกสาร นั้นง่ายยิ่งขึ้นเนื่องจากสิ่งนี้จำเป็นต้องดึงเอกสารทั้งหมดสำหรับรายการรหัสเอกสาร: DocumentRequest.sql พารามิเตอร์ที่ถูกผูกไว้เดียว wantedIDs จะถูกแทนที่ด้วยรายการรหัสเอกสาร (สตริง)
แบบสอบถามคำขอเอกสารควรส่งคืนแถวของ id (String), updatedNanos (INT64), title (สตริง), 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_indexsqlfile | สาย | ไฟล์แหล่ง SQL สำหรับการจัดการคำขอดัชนี ค่าเริ่มต้น: indexrequest.sql |
| lrsql_sql_documentsqlfile | สาย | SQL Source ยื่นขอคำขอเอกสาร ค่าเริ่มต้น: documentrequest.sql |