Ini adalah manajer dokumen All-SQL untuk Letarette. Untuk menghubungkan penyimpanan dokumen primer berbasis SQL ke Letarette, hanya dua pertanyaan yang perlu disediakan. Periksa contoh untuk melihat seberapa mendasar mereka, mengingat bahwa penyimpanan utama memiliki struktur yang serupa.
Driver SQL berikut didukung:
Jika Anda hanya ingin mencobanya, ada konfigurasi docker-compose yang meluncurkan sistem Letarette kecil yang lengkap, diumpankan oleh database dan kueri dari contoh proyek.
Cukup jalankan docker-compose up untuk memulai sistem.
Saat sistem sudah habis, Anda dapat menjalankan kueri (dan perintah lainnya) dengan menjalankan lrcli di dalam wadah "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… Layanan Letarette.sql , lrsql , perlu tahu cara terhubung ke database SQL, dan di mana menemukan kueri yang memberikan dokumen kepada pengindeks Letarette .
Untuk membuat layanan terhubung ke sumber postgresql, dan menggunakan nilai default untuk lokasi file kueri ( indexrequest.sql dan documentrequest.sql ):
$ export LRSQL_DB_DRIVER= " postgres "
$ export LRSQL_DB_CONNECTION= " postgres://user:password@localhost/testdb?sslmode=verify-full "
$ ./lrsql Menjalankan lrsql dengan argumen baris perintah apa pun akan mencetak pengaturan yang tersedia dan nilai defaultnya.
Siklus Pembaruan Indeks Letarette memiliki dua langkah terpisah, pertama -tama mengambil "daftar bunga" dokumen yang lebih baru dari posisi indeks saat ini (permintaan indeks), dan kemudian mengambil dokumen pada daftar itu (permintaan dokumen).
Cap waktu adalah UTC - direferensikan unix nanoseconds.
Posisi indeks saat ini adalah kombinasi dari ID dokumen dan cap waktu yang diperbarui dari dokumen itu. Untuk menangani situasi di mana dokumen posisi indeks telah diperbarui sejak terakhir diambil, permintaan permintaan indeks perlu mengikuti pemesanan dokumen yang ketat. Ini paling baik ditangani dengan menyortir terutama pada cap waktu pembaruan dan kedua pada ID dokumen dan menangani kasus di mana cap waktu pembaruan tidak berubah secara terpisah. Lihat IndexRequest.sql dari proyek contoh.
Kueri permintaan indeks mendapat tiga parameter terikat: afterDocument (String), fromTimeNanos (int64) dan documentLimit (UInt16) dan harus mengembalikan baris dua kolom: id (String) dan updatedNanos (INT64). Parameter Bounds dirujuk dengan mengawali mereka dengan usus besar:
where :afterDocument > 2 Menerapkan permintaan dokumen bahkan lebih mudah, karena ini hanya perlu mengambil semua dokumen untuk daftar ID dokumen: DocumentRequest.sql. Parameter terikat tunggal wantedIDs akan diganti dengan daftar ID Dokumen (String).
Kueri permintaan dokumen harus mengembalikan baris id (string), updatedNanos (int64), title (string), txt (string) dan alive (bool).
Letarette.sql menggunakan tag build untuk mengontrol pengemudi mana yang dibangun ke dalam biner layanan. Tag build memiliki nama yang sama dengan driver yang mereka memungkinkan.
Daftar tag pembuatan driver saat ini adalah:
Misalnya, untuk membangun biner dengan dukungan "Postgres" dan "MySQL":
$ go build -tags " postgres,mysql "Layanan Letarette.sql dikonfigurasi oleh variabel lingkungan.
| Variabel | Jenis | Keterangan |
|---|---|---|
| Lrsql_nats_url | Rangkaian | URL untuk layanan NATS untuk terhubung ke, default ke nats://localhost:4222 . |
| Lrsql_nats_topic | Rangkaian | Awalan Topik NATS untuk semua pesan, default ke leta . |
| Lrsql_index_space | Rangkaian | Ruang indeks untuk melayani, default ke docs . |
| Lrsql_db_driver | Rangkaian | Nama Driver Database |
| Lrsql_db_connection | Rangkaian | String koneksi basis data |
| Lrsql_sql_indexsqlfile | Rangkaian | File sumber SQL untuk menangani permintaan indeks. Default: indexrequest.sql . |
| Lrsql_sql_documentsqlfile | Rangkaian | SQL Source mengajukan permintaan dokumen yang menangani. Default: documentrequest.sql . |