Panduan ini ditujukan untuk administrator konektor database Google Cloud Search, yaitu siapa saja yang bertanggung jawab untuk mendapatkan, menerapkan, mengonfigurasi, dan memelihara konektor database.
Isi panduan ini termasuk petunjuk untuk menjalankan tugas utama yang terkait dengan penerapan konektor:
- Mendownload Cloud Search Connector untuk software Database
- Mengonfigurasi konektor untuk digunakan dengan sumber data SQL tertentu
- Menjalankan konektor
Untuk memahami konsep dalam dokumen ini, Anda harus terbiasa dengan konsep database, Structured Query Language (SQL), dasar-dasar Daftar Kontrol Akses (ACL), dan sistem operasi Windows atau Linux.
Informasi tentang tugas yang harus dilakukan administrator G Suite untuk memetakan Google Cloud Search ke konektor database tidak muncul dalam panduan ini. Untuk informasi tentang tugas-tugas tersebut, lihat Mengelola sumber data pihak ketiga.
Ringkasan tentang konektor database Google Cloud Search
Secara default, Cloud Search dapat menemukan, mengindeks, dan menayangkan konten dari data G Suite, seperti dokumen dan spreadsheet. Namun, Anda dapat memperluas Cloud Search untuk menemukan dan mengindeks data dari repositori database Anda sendiri dengan menggunakan konektor database Google Cloud Search.
Konektor mengupload permintaan pengindeksan ke Cloud Search Indexing API dan menjaga agar indeks Cloud Search sesuai dengan repositori database pihak ketiga dengan secara berkala mengindeks ulang seluruh database.
Konektor database Cloud Search mendukung kontrol akses pengguna ke dokumen dalam hasil penelusuran dengan menggunakan ACL. Untuk informasi lebih lanjut tentang topik ini, lihat opsi Daftar Kontrol Akses.
Perilaku konektor
Sebagai administrator konektor, Anda mengontrol perilaku konektor database Cloud Search dengan membuat file konfigurasinya. Dalam file ini, Anda menentukan aspek-aspek utama dari perilaku konektor:
- Mengakses database target
- Mengidentifikasi konten yang dapat ditelusuri
- Menjalankan traversal
- Mengamati jadwal traversal
- Mengirim kueri SQL ke database untuk mengambil data
- Mengikuti Daftar Kontrol Akses (ACL)
Untuk menentukan perilaku konektor tertentu, isi file konfigurasi dengan key-value pair untuk setiap parameter konfigurasi yang ingin Anda sesuaikan. Untuk informasi terperinci tentang proses ini, lihat Mengonfigurasi konektor database.
Setelah selesai mengisi file konfigurasi, Anda memiliki pengaturan yang diperlukan untuk menerapkan konektor.
Pengindeksan konten database
Setelah diterapkan, konektor database Cloud Search berkomunikasi dengan sumber data yang Anda sambungkan ke akun G Suite dan menemukan kontennya melalui proses yang disebut traversal. Selama traversal, konektor mengirimkan kueri SQL select ke repositori untuk mengambil data dokumen. Konektor mengambil data dokumen dan menguploadnya ke Indexing API tempat terjadinya pengindeksan dan akhirnya ditayangkan kepada pengguna Anda.
Awalnya, konektor database melakukan traversal penuh, sambil membaca dan mengindeks setiap record database. Anda dapat menjadwalkan traversal penuh berikutnya pada interval waktu tetap. Selain traversal penuh, Anda dapat menjadwalkan traversal inkremental jika database Anda mendukungnya. Traversal inkremental hanya membaca dan mengindeks ulang record database yang dimodifikasi.
Penyiapan konektor
Anda dapat menginstal dan menjalankan konektor database Cloud Search di hampir semua lingkungan yang menjalankan aplikasi Java, asalkan konektor tersebut memiliki akses ke Internet dan database. Karena Anda menerapkan konektor database pada host yang terpisah dari Google Cloud Search atau repositori data, Anda harus terlebih dahulu memastikan bahwa Anda memiliki G Suite dan informasi database yang diperlukan untuk menjalin hubungan antara Google Cloud Search, konektor, dan repositori data. Untuk mengaktifkan konektor untuk mengakses database, berikan informasi spesifik ke konektor selama langkah-langkah konfigurasi yang dijelaskan dalam dokumen ini dalam Perilaku konektor.
Untuk mengatur akses konektor ke Cloud Search, Anda memerlukan akun layanan, ID akun layanan, dan ID sumber data. Anda perlu menambahkan ID sumber dan lokasi file kunci pribadi akun layanan ke konfigurasi konektor, seperti yang ditunjukkan dalam contoh file konfigurasi. Biasanya, administrator G Suite untuk domain dapat menyediakan kredensial ini untuk Anda.
Setelah Anda memastikan bahwa lingkungan Anda diatur dengan benar, Anda dapat memulai langkah-langkah penerapan.
Database yang didukung
Konektor database Cloud Search berfungsi dengan database SQL apa pun dengan driver yang sesuai dengan JDBC 4.0 atau yang lebih baru, termasuk yang berikut ini:
- MS SQL Server (2008, 2012, 2014, 2016)
- Oracle (11g, 12c)
- Google Cloud SQL
- MySQL
Anda memberikan informasi yang mengidentifikasi database target selama proses konfigurasi konektor. Untuk informasi terperinci, lihat Akses database.
Sebelum Anda menerapkan konektor database
Sebelum Anda menerapkan konektor database Cloud Search, pastikan bahwa lingkungan Anda memiliki semua komponen yang diperlukan berikut ini:
- Kunci pribadi G Suite (yang berisi id akun layanan)
- ID sumber data G Suite
- File .jar konektor database yang diinstal pada mesin host
- Database target yang didukung
- Driver SQL yang digunakan untuk mengakses database
Langkah-langkah penerapan
Untuk menerapkan konektor database Cloud Search, ikuti langkah-langkah dasar ini:
- Download dan simpan software konektor database Cloud Search.
- Konfigurasikan konektor database Cloud Search.
- Jalankan konektor database Cloud Search.
Langkah 1. Download dan simpan software konektor database
Instal SDK ke dalam repositori Maven lokal Anda.
- Lakukan clone repositori SDK dari GitHub.
- Lihat versi SDK yang diinginkan:
git checkout tags/v1-0.0.3
- Instal komponen SDK:
mvn install
git clone https://github.com/google-cloudsearch/connector-sdk.git cd connector-sdk
Buat konektor.
- Lakukan clone repositori konektor dari GitHub.
- Lihat versi konektor yang diinginkan dan buat file ZIP:
git checkout tags/v1-0.0.3 mvn package
(Untuk melewati tes ketika membuat konektor, gunakanmvn package -DskipTests
.) - Ekstrak file ZIP ke lokasi yang diinginkan.
git clone https://github.com/google-cloudsearch/database-connector.git cd database-connector
cp target/google-cloudsearch-database-connector-v1-0.0.3.zip <installDir> cd <installDir> unzip google-cloudsearch-database-connector-v1-0.0.3.zip cd google-cloudsearch-database-connector-v1-0.0.3
Langkah 2. Konfigurasikan konektor database
Agar konektor dapat mengakses database dengan benar dan mengindeks konten yang relevan, Anda harus terlebih dahulu membuat file konfigurasinya.
Untuk membuat file konfigurasi:
- Buka editor teks pilihan Anda.
- Tambahkan key-value pair ke konten file. Untuk panduan, lihat contoh file konfigurasi.
- Beri nama file konfigurasi.
Anda dapat memberikan nama file konfigurasi, misalnya:
Mysql.properties
. Google merekomendasikan konsistensi penamaan ekstensi file konfigurasi dengan menggunakan.properties
atau.config
Karena Anda dapat menentukan lokasi file konfigurasi pada command line, lokasi file standar tidak diperlukan. Namun, simpan file konfigurasi dalam direktori yang sama dengan konektor agar konektor mudah dilacak dan dijalankan.
Untuk memastikan konektor mengenali file konfigurasi Anda, tentukan lokasi di command line. Jika tidak, konektor akan menggunakan connector-config.properties
di direktori lokal Anda sebagai nama file default. Untuk informasi tentang cara menentukan lokasi konfigurasi pada command line, lihat Menjalankan konektor database.
Contoh file konfigurasi
Contoh file konfigurasi berikut menunjukkan key-value pair parameter yang menentukan perilaku konektor contoh. Banyak parameter memiliki default yang digunakan jika nilai parameter tidak ditentukan dalam file.
# # data source access api.sourceId=1234567890abcdef api.identitySourceId=0987654321lmnopq api.serviceAccountPrivateKeyFile=./PrivateKey.json # # database access db.url=jdbc:mysql://localhost:3306/mysql_test db.user=root db.password=passw0rd # # traversal SQL statements db.allRecordsSql=select customer_id, first_name, last_name, phone, change_timestamp from address_book db.incrementalUpdateSql=select customer_id, first_name, last_name, phone, change_timestamp from address_book where change_timestamp > ? # # schedule traversals schedule.traversalIntervalSecs=36000 schedule.performTraversalOnStart=true schedule.incrementalTraversalIntervalSecs=3600 # # column definitions db.allColumns=customer_id, first_name, last_name, phone, change_timestamp db.uniqueKeyColumns=customer_id url.columns=customer_id # # content fields contentTemplate.db.title=customer_id db.contentColumns=customer_id, first_name, last_name, phone # # setting ACLs to "entire domain accessible" defaultAcl.mode=fallback defaultAcl.public=true
Untuk deskripsi terperinci dari setiap parameter, lihat Referensi parameter konfigurasi.
Langkah 3. Jalankan konektor database
Contoh berikut mengasumsikan bahwa komponen yang diperlukan berada di direktori lokal pada sistem Linux.
Untuk menjalankan konektor dari command line, ketikkan perintah berikut:
java \ -cp "google-cloudsearch-database-connector-v1-0.0.3.jar:mysql-connector-java-5.1.41-bin.jar" \ com.google.enterprise.cloudsearch.database.DatabaseFullTraversalConnector \ -Dconfig=mysql.config
Detail perintah:
google-cloud-search-database-connector-[version number].jar
adalah file .jar konektor databasemysql-connector-java-5.1.41-bin.jar
adalah driver SQL yang digunakan untuk mengakses databasemysql.config
adalah file konfigurasi
Konektor mencoba mendeteksi error konfigurasi sedini mungkin. Misalnya, jika kolom database didefinisikan sebagai bagian dari konten record, tetapi tidak ada di kueri SQL database, kolom yang hilang tersebut akan dianggap sebagai error ketika konektor diinisialisasi.
Namun, konektor hanya mendeteksi error lain, seperti sintaks pernyataan SQL yang tidak valid ketika mencoba mengakses database untuk traversal pertama.
Referensi parameter konfigurasi
Bagian berikut ini menjelaskan parameter konfigurasi secara rinci. Di bagian ini, contoh in-line berada dalam format ini:
kunci = nilai
"kunci" (dicetak tebal) adalah nama parameter tertentu dan "nilai" (dalam huruf miring) adalah nilai spesifik dari parameter tersebut.
Akses sumber data
Parameter pertama yang harus ditentukan oleh setiap file konfigurasi adalah yang diperlukan untuk mengakses sumber data Cloud Search. Langkah-langkah yang diperlukan untuk menyiapkan sumber data dapat ditemukan di Mengelola sumber data pihak ketiga.
Setelan | Parameter |
---|---|
ID sumber data | api.sourceId = 1234567890abcdef
Wajib ada. ID sumber Cloud Search disiapkan oleh administrator G Suite. |
ID sumber identitas | api.identitySourceId = 0987654321lmnopq
Diperlukan jika menggunakan pengguna dan grup eksternal. ID sumber identitas Cloud Search disiapkan oleh administrator G Suite. |
Akun layanan | api.serviceAccountPrivateKeyFile = ./PrivateKey.json
Wajib ada. File kunci akun layanan Cloud Search yang dibuat oleh administrator G Suite untuk aksesibilitas konektor. |
Akses database
Sebelum konektor dapat melakukan traversal terhadap database, Anda harus mengidentifikasi lokasi ke database dan kredensial yang memungkinkan konektor masuk ke sana. Gunakan parameter akses database berikut untuk menambahkan informasi akses ke file konfigurasi.
Setelan | Parameter |
---|---|
URL database | db.url = jdbc:mysql://127.0.0.1/dbname
Wajib ada. Lokasi lengkap dari database yang akan diakses. |
Nama pengguna dan sandi database | db.user = dbadmin db.password = pas5w0rd
Wajib ada. Nama pengguna dan sandi yang valid yang digunakan konektor untuk mengakses database. Pengguna database ini harus memiliki akses baca ke record yang relevan dari database yang sedang dibaca. |
Driver JDBC | db.driverClass = oracle.jdbc.OracleDriver
Wajib ada hanya jika driver JDBC 4.0 belum ditentukan di lokasi kelas. |
Konfigurasikan pernyataan SQL traversal
Konektor mengakses dan mengindeks record database dengan melakukan traversal. Untuk mengaktifkan konektor untuk melakukan traversal terhadap record database, Anda harus memberikan kueri SQL select dalam file konfigurasi. Konektor mendukung dua jenis metode traversal:
- Traversal penuh—wajib
- Traversal inkremental—opsional
Konektor menjalankan traversal ini sesuai dengan jadwal yang Anda tentukan dalam opsi penjadwalan file konfigurasi, yang dijelaskan dalam Jadwal Traversal di bawah ini.
Traversal penuh
Traversal penuh membaca setiap record database yang dikonfigurasi untuk pengindeksan. Diperlukan traversal penuh untuk mengindeks record baru untuk Cloud Search dan juga untuk mengindeks ulang semua record yang ada.
Setelan | Parameter |
---|---|
Traversal penuh | db.allRecordsSql = SELECT customer_id, first_name,
last_name, employee_id, interesting_field FROM employee
ATAU
Wajib ada. Contoh ini mencakup kueri SQL select yang membaca setiap record minat dalam database karyawan untuk pengindeksan. Saat menggunakan penomoran dengan offset, kueri SQL harus memiliki placeholder ("?") untuk offset baris, dimulai dengan nol. Kueri akan dieksekusi beberapa kali dalam setiap traversal penuh sampai tidak ada hasil yang ditampilkan. |
db.allRecordsSql.pagination = offset
Opsi penomoran yang valid adalah:
|
Setiap nama kolom yang akan digunakan konektor dalam kapasitas apa pun (konten, id unik, ACL) harus ada dalam kueri ini. Konektor melakukan beberapa verifikasi awal saat startup untuk mendeteksi error dan kelalaian. Karena alasan ini, jangan gunakan kueri "SELECT * FROM…" umum.
Contoh penomoran
Untuk menentukan penomoran dengan offset dan memecah traversal penuh menjadi beberapa kueri:# For SQL Server 2012 or Oracle 12c (standard SQL 2008 syntax) db.allRecordsSql = SELECT customer_id, first_name, last_name, employee_id, interesting_field \ FROM employee \ ORDER BY key OFFSET ? ROWS FETCH FIRST 1000 ROWS ONLY db.allRecordsSql.pagination = offset
atau
# For MySQL or Google Cloud SQL db.allRecordsSql = SELECT customer_id, first_name, last_name, employee_id, interesting_field \ FROM employee \ ORDER BY key LIMIT 1000 OFFSET ? db.allRecordsSql.pagination = offset
Traversal inkremental
Secara default, konektor tidak melakukan traversal inkremental. Namun, jika database Anda berisi kolom stempel waktu untuk menunjukkan record yang dimodifikasi, Anda dapat mengonfigurasi konektor untuk melakukan traversal inkremental, yang membaca dan mengindeks ulang hanya record database yang baru dimodifikasi dan entri terbaru ke database. Karena traversal inkremental membaca kumpulan data yang lebih kecil, itu bisa jauh lebih efisien daripada traversal penuh.
Parameter traversal inkremental menentukan cakupan traversal dan mengidentifikasi stempel waktu database yang digunakan untuk mengidentifikasi penambahan record baru atau record database yang baru dimodifikasi.
Setelan | Parameter |
---|---|
Traversal inkremental | db.incrementalUpdateSql = select customer_id,
first_name, last_name, employee_id, interesting_field, last_update_time from
employee where last_update_time > ?
ATAU
Diperlukan saat menggunakan traversal inkremental. Untuk melacak kolom stempel waktu database untuk waktu pembaruan terakhir, tambahkan Contoh kueri SQL select akan membaca setiap record yang dimodifikasi dan harus diindeks ulang. Tanda "?" wajib dalam kueri adalah placeholder untuk nilai stempel waktu yang dilacak konektor dan dikelola antara kueri SQL traversal inkremental. Secara default, konektor menyimpan waktu mulai dari kueri inkremental untuk digunakan pada traversal inkremental berikut. Jika belum ada traversal inkremental yang pernah terjadi, waktu mulai eksekusi konektor akan digunakan. Setelah traversal inkremental pertama, Cloud Search menyimpan stempel waktu sehingga konektor yang dimulai kembali dapat mengakses stempel waktu traversal inkremental sebelumnya. |
Zona waktu database | db.timestamp.timezone = America/Los_Angeles
Menentukan zona waktu yang akan digunakan untuk stempel waktu database. Defaultnya adalah zona waktu lokal tempat konektor berjalan. |
Jadwalkan traversal
Parameter penjadwalan menentukan seberapa sering konektor menunggu di antara proses traversal.
Setelan | Parameter |
---|---|
Traversal penuh setelah interval yang ditentukan | schedule.traversalIntervalSecs = 7200
Menentukan interval antara traversal, yang dinyatakan dalam detik. Nilai default adalah 86400 (jumlah detik dalam satu hari). |
Traversal penuh pada startup konektor | schedule.performTraversalOnStart = false
Menentukan bahwa traversal penuh pertama harus terjadi segera pada setiap startup konektor (true) atau tidak (false). Nilai defaultnya adalah true. |
Traversal inkremental setelah interval yang ditentukan | schedule.incrementalTraversalIntervalSecs = 900
Menentukan interval antara traversal, yang dinyatakan dalam detik. Nilai default adalah |
Definisi kolom
Agar konektor dapat mengakses dan mengindeks record database, Anda harus memberikan informasi tentang definisi kolom dalam file konfigurasi. Konektor juga menggunakan definisi kolom ini untuk mendeteksi error konfigurasi saat startup konektor.
Setelan | Parameter |
---|---|
Semua kolom | db.allColumns = customer_id, first_name, last_name,
employee_id, interesting_field, last_update_time,
linked_url
Wajib ada. Mengidentifikasi semua kolom yang diperlukan dalam kueri SQL saat mengakses database. Kolom yang ditentukan dengan parameter ini harus direferensikan secara eksplisit dalam kueri. Setiap parameter definisi kolom lainnya dicek berdasarkan kumpulan kolom ini. |
Kolom kunci unik | db.uniqueKeyColumns = customer_id db.uniqueKeyColumns = last_name, first_name
Wajib ada. Membuat daftar kolom database tunggal yang berisi nilai-nilai unik atau dengan kombinasi kolom yang nilainya bersama-sama menentukan id unik. Cloud Search mengharuskan setiap dokumen yang dapat dicari untuk memiliki ID unik dalam sumber data. Untuk alasan ini, setiap record database harus dapat menggunakan nilai kolomnya untuk menentukan id unik. Berhati-hatilah untuk memberikan ID unik di semua dokumen jika menjalankan beberapa konektor pada database terpisah, tetapi mengindeks ke dalam kumpulan data umum. |
Kolom URL | url.format = https://www.example.com/{0}
Menentukan format URL tampilan. Parameter bernomor merujuk ke kolom yang ditentukan dalam db.columns, secara berurutan, dimulai dengan nol. Jika tidak ditentukan, defaultnya adalah "{0}." |
url.columns = customer_id
Wajib ada. Menentukan nama kolom yang valid dan didefinisikan yang digunakan untuk URL yang digunakan untuk hasil pencarian yang dapat diklik. Untuk database yang tidak memiliki URL relevan yang terkait dengan setiap record database, link statis dapat digunakan untuk setiap record. Namun, jika nilai kolom menentukan link yang valid untuk setiap record, kolom URL tampilan dan nilai konfigurasi format harus ditentukan. |
|
url.columnsToEscape = customer_id
Menentukan kolom dari db.columns yang nilainya akan dienkode dengan persen sebelum memasukkannya ke dalam string URL yang diformat. |
Contoh kolom URL
Untuk menentukan kolom yang digunakan dan format tampilan URL:
# static URL not using any database record values url.format = https://www.example.com url.columns = customer_id
atau
# single column value that is the view URL url.format = {0} url.columns = customer_url
atau
# single column value that will be substituted into the view URL at position {0} url.format = https://www.example.com/customer/id={0} url.columns = customer_id url.columnsToEscape = customer_id
atau
# multiple column values used to build the view URL (columns are order dependent) url.format = {1}/customer={0} url.columns = customer_id, linked_url url.columnsToEscape = customer_id
Parameter Konfigurasi Metadata
Parameter konfigurasi metadata menjelaskan kolom database yang digunakan untuk mengisi metadata item. Jika file konfigurasi tidak mengandung parameter ini, nilai default akan digunakan. Tabel berikut menunjukkan parameter ini.Setelan | Parameter |
Nama | itemMetadata.title.field=movieTitle
itemMetadata.title.defaultValue=Gone with the Wind
Atribut metadata yang berisi nilai yang sesuai dengan judul dokumen. Nilai defaultnya adalah string kosong. |
Stempel waktu pembuatan | itemMetadata.createTime.field=releaseDate
itemMetadata.createTime.defaultValue=1940-01-17
Atribut metadata yang berisi nilai untuk stempel waktu pembuatan dokumen. |
Waktu terakhir diubah | itemMetadata.updatetime.field=releaseDate
itemMetadata.updatetime.defaultValue=1940-01-17
Atribut metadata yang berisi nilai stempel waktu dokumen terakhir diubah. |
Bahasa dokumen | itemMetadata.contentLanguage.field=languageCode
itemMetadata.contentLanguage.defaultValue=en-US
Bahasa konten dokumen yang diindeks. |
Jenis objek skema | itemMetadata.objectType=movie
Jenis objek yang digunakan oleh konektor, sebagaimana didefinisikan dalam membuat dan mendaftarkan skema. Konektor tidak akan mengindeks data terstruktur apa pun jika properti ini tidak ditentukan. Jika berlaku, properti objek skema ini harus ditentukan dalam kueri SQL yang ditentukan dalam konfigurasi. Ini mungkin paling sering dilakukan dengan menambahkan alias ke pernyataan SQL. Sebagai contoh, misalkan untuk database film, skema sumber data berisi definisi properti bernama "ActorName", pernyataan SQL dapat berupa: Setiap kolom yang cocok dengan nama properti di objek skema secara otomatis diteruskan dengan record database yang diindeks dan digunakan sebagai data terstruktur dalam sumber data. Catatan: Properti konfigurasi ini menunjuk ke nilai daripada atribut metadata. Selain itu, akhiran.field dan .defaultValue tidak didukung.
|
Format datetime
Format datetime menentukan format yang diharapkan dalam atribut metadata. Jika file konfigurasi tidak berisi parameter ini, nilai default akan digunakan. Tabel berikut menunjukkan parameter ini.Setelan | Parameter |
Format datetime tambahan | structuredData.dateTimePatterns=MM/dd/uuuu HH:mm:ssXXX
Daftar yang dipisahkan titik koma dari daftar pola java.time.format.DateTimeFormatter tambahan. Pola digunakan saat mengurai nilai string untuk kolom tanggal atau tanggal-waktu pada metadata atau skema. Nilai default adalah daftar kosong, tetapi format RFC 3339 dan RFC 1123 selalu didukung. |
Kolom konten
Manfaat dari pengindeksan nilai record database ke dalam Cloud Search adalah membuat nilai tersebut dapat ditelusuri. Gunakan opsi konten untuk menentukan nilai record mana yang harus dijadikan bagian dari konten yang dapat ditelusuri.
Setelan | Parameter |
---|---|
Kolom data konten | db.contentColumns = customer_id, first_name, last_name
Menentukan kolom konten dalam database. Semua kolom yang Anda tunjuk sebagai kolom konten diformat dan diupload ke Cloud Search sebagai konten dokumen yang dapat ditelusuri. Jika Anda tidak menentukan nilai, defaultnya adalah "*" yang menunjukkan bahwa semua kolom harus digunakan untuk konten. |
Kolom template konten | contentTemplate.db.title = customer_id
Wajib ada. Kolom data konten diformat untuk diindeks berdasarkan pada template konten. Template menentukan prioritas setiap nilai kolom data untuk penelusuran. Definisi kolom kualitas tertinggi adalah kolom "judul" yang diperlukan. |
contentTemplate.db.quality.high = first_name,
last_name contentTemplate.db.quality.medium = interesting_field contentTemplate.db.quality.low = employee_id
Anda dapat menetapkan semua kolom konten lainnya sebagai kolom kualitas penelusuran tinggi, sedang, atau rendah. Setiap kolom konten yang tidak didefinisikan dalam kategori tertentu default ke rendah. |
|
Kolom Blob | db.blobColumn = blob_data
Mengindikasikan nama kolom blob tunggal untuk digunakan untuk konten dokumen dan bukan kombinasi kolom konten. Jika kolom blob ditentukan, akan dianggap error jika kolom konten juga ditentukan. Namun, definisi metadata dan kolom data terstruktur masih diizinkan bersama dengan kolom blob. |
Opsi daftar kontrol akses
Ada beberapa opsi untuk melindungi akses pengguna ke record yang diindeks dengan ACL.
Setelan | Parameter |
---|---|
Seluruh domain | defaultAcl.mode = override defaultAcl.public = true
Mode valid adalah:
Jika defaultAcl.mode ditetapkan menjadi override dan defaultAcl.public ditetapkan menjadi true, parameter ini menentukan akses "seluruh domain", di mana setiap catatan database yang diindeks dapat diakses secara publik oleh setiap pengguna dalam domain. Nilai mode menentukan waktu untuk menerapkan ACL publik. Jika defaultAcl.mode ditetapkan menjadi none, catatan akan menjadi tidak dapat ditelusuri tanpa ACL individu yang ditentukan. |
ACL yang ditetapkan umum | defaultAcl.mode = fallback defaultAcl.public = false defaultAcl.readers.users = user1, user2, google:user3 defaultAcl.readers.groups = google:group1, group2 defaultAcl.denied.users = user4, user5 defaultAcl.denied.groups = group3 Jika Anda mengatur semua parameter ini, seluruh rangkaian menentukan ACL "ditetapkan umum" yang akan digunakan untuk setiap record database jika record database tidak memiliki definisi ACL individu. ACL umum ini digunakan untuk mengontrol akses di seluruh database tergantung pada mode yang dipilih. Setiap pengguna dan grup diasumsikan sebagai pengguna/grup yang ditetapkan oleh domain lokal, kecuali diawali dengan "google:" (konstanta literal). |
ACL individual | Jika parameter konfigurasi menentukan ACL individual, setiap record berisi informasi ACL sendiri di dalam nilai kolomnya.
Jika setiap record database berisi informasi ACL individual yang dimaksudkan untuk aksesibilitasnya sendiri, kueri SQL harus berisi alias kolom konstanta literal yang dicadangkan supaya konektor tahu cara mengambil pengguna "pembaca" dan "ditolak". Jika literal yang dicadangkan berikut ini ada dalam kueri SQL, tidak ada konfigurasi tambahan yang diperlukan. readers_users readers_groups denied_users denied_groups |
Contoh kueri SQL ACL individual
Contoh berikut memperlihatkan kueri SQL select yang menggunakan ACL "individual":
db.allRecordsSql = select customer_id, first_name, last_name, employee_id, interesting_field, last_update_time, permitted_readers as readers_users, denied_readers as denied_users, permitted_groups as readers_groups, denied_groups as denied_groups from employee db.incrementalUpdateSql = select customer_id, first_name, last_name, employee_id, interesting_field, last_update_time, permitted_readers as readers_users, denied_readers as denied_users, permitted_groups as readers_groups, denied_groups as denied_groups from employee where last_update_time > ?
Referensi cepat
Tabel berikut mencantumkan parameter yang paling penting yang diperlukan dan opsional yang berkaitan dengan konektor database, serta nilai defaultnya.
Parameter | Deskripsi |
---|---|
db.driverClass |
Default: String kosong
Driver JDBC untuk konektor:
|
db.url |
Wajib
Menetapkan URL database: db.url = jdbc:mysql://localhost:3306/dbname |
db.user |
Default: String kosong
Pengguna database yang digunakan konektor untuk membuat kueri database:
|
db.password |
Default: String kosong
Kata sandi untuk pengguna database yang konektor gunakan untuk membuat kueri database: db.password = pas5w0rd |
db.allRecordsSql |
Wajib
Menentukan kueri SQL untuk mengambil semua kolom record yang relevan di database: db.allRecordsSql = select customer_id, first_name, last_name,
employee_id, interesting_field from employee |
db.allRecordsSql.pagination |
Default: none
Menentukan salah satu opsi penomoran berikut:
|
db.incrementalUpdateSql |
Default: Dinonaktifkan (string kosong)
Kueri traversal inkremental untuk mengambil dokumen yang baru saja diubah, biasanya dengan stempel waktu:
|
db.timestamp.timezone |
Default: Menggunakan zona waktu yang sama (string kosong)
Menentukan zona waktu server DB ketika ada perbedaan antara zona waktu server database dan zona waktu konektor: db.timestamp.timezone = America/Los_Angeles |
schedule. traversalIntervalSecs |
Default: 86400 (detik dalam sehari)
Interval traversal penuh - metode traversal() konektor dipanggil dengan jadwal berikut: schedule.traversalIntervalSecs = 7200 |
schedule. performTraversalOnStart |
Default: true
Meminta traversal penuh saat start up: schedule.performTraversalOnStart = false |
schedule. incrementalTraversalIntervalSecs |
Default: 300
Jumlah detik antara pemanggilan traversal inkremental untuk record yang dimodifikasi, (membutuhkan db.updataSql): schedule.incrementalTraversalIntervalSecs = 900 |
db.allColumns |
Wajib
Semua nama kolom dan alias dalam kueri SQL utama yang akan digunakan dalam definisi kolom lainnya: db.allColumns = customer_id, first_name, last_name, employee_id,
interesting_field, last_update_time, linked_url |
db.uniqueKeyColumns |
Wajib
Satu atau beberapa nama judul kolom (dari nama formulir: jenis) dipisahkan dengan koma yang menyediakan id unik untuk hasil kueri database: db.uniqueKeyColumns = customer_id |
url.format |
Default: {0}
Menentukan format kolom URL: url.format = https://www.example.com/employee/id={0} |
url.columns |
Wajib
Menentukan kolom dari kueri SQL yang akan digunakan untuk membuat URL yang dapat dilihat untuk hasil pencarian: url.columns = customer_id |
url.columnsToEscape |
Default: string kosong
Menentukan kolom dari db.columns yang nilainya akan dienkode dengan persen sebelum memasukkannya ke dalam string URL yang diformat: url.columnsToEscape = customer_id |
itemMetadata.title.field |
Default: string kosong
Menentukan kolom record yang akan digunakan untuk metadata "judul": itemMetadata.title.field = customer_id |
itemMetadata.createTime.field |
Default: string kosong
Menentukan kolom record yang akan digunakan untuk metadata "tanggal pembuatan": itemMetadata.createTime.field = created_timestamp |
itemMetadata.updatetime.field |
Default: string kosong
Menentukan kolom record yang akan digunakan untuk metadata "tanggal perubahan": itemMetadata.updatetime.field = last_update_time |
itemMetadata.contentLanguage.field |
Default: string kosong
Menentukan kolom record yang akan digunakan untuk metadata "bahasa": itemMetadata.contentLanguage.field = language_used |
itemMetadata.objectType |
Default: string kosong
Menentukan kolom record yang akan digunakan untuk skema "objek". Catatan: Ini adalah nama literal, bukan nilai kolom: itemMetadata.objectType = schema_object_name |
db.contentColumns |
Default: * (semua kolom dari db.allRecords.Sql)
Menentukan kolom kueri SQL yang akan digunakan untuk mengambil konten record database: db.contentColumns = customer_id, first_name, last_name |
contentTemplate.db.title |
Wajib
Menentukan judul HTML konten dan kolom kualitas pencarian tertinggi: contentTemplate.db.title = id |
contentTemplate.db.quality.high |
Default: string kosong
Menentukan kolom konten yang diberi nilai kualitas pencarian Tinggi: contentTemplate.db.quality.high = first_name, last_name |
contentTemplate.db.quality.medium |
Default: string kosong
Menentukan kolom konten yang diberi nilai kualitas pencarian Sedang: contentTemplate.db.quality.medium = interesting_field |
contentTemplate.db.quality.low |
Default: semua kolom yang tidak ditentukan ditetapkan ke nilai kualitas pencarian Rendah
Menentukan kolom konten yang diberi nilai kualitas pencarian Rendah: contentTemplate.db.quality.low = employee_id |
db.blobColumn |
Default: string kosong
Menentukan bahwa database menggunakan kolom BLOB tunggal untuk konten record: db.blobColumn=blob_data |
defaultAcl.mode |
Default: none
Menentukan salah satu mode ACL berikut:
|
defaultAcl.public |
Default: false
Menentukan bahwa ACL default yang digunakan untuk seluruh repositori adalah publik: defaultAcl.public=true |
defaultAcl.readers.users |
Hanya digunakan jika defaultAcl.mode disetel ke fallback dan defaultAcl.public disetel ke false.
Menentukan pembaca ACL yang umum dalam daftar yang dibatasi koma: defaultAcl.readers.users=user1,user2,user3 |
defaultAcl.readers.groups |
Hanya digunakan jika defaultAcl.mode disetel ke fallback dan defaultAcl.public disetel ke false.
Menentukan pembaca grup ACL yang umum dalam daftar yang dibatasi koma: defaultAcl.readers.groups=group1,group2 |
defaultAcl.denied.users |
Hanya digunakan jika defaultAcl.mode disetel ke fallback dan defaultAcl.public disetel ke false.
Menentukan pengguna yang ditolak untuk seluruh repositori: defaultAcl.denied.users=user4,user5 |
defaultAcl.denied.groups |
Hanya digunakan jika defaultAcl.mode disetel ke fallback dan defaultAcl.public disetel ke false.
Menentukan grup yang diizinkan untuk seluruh repositori: defaultAcl.denied.groups=group3 |
defaultAcl.name |
Default: DEFAULT_ACL_VIRTUAL_CONTAINER
Menentukan nama container virtual yang menerapkan ACL default: defaultAcl.name = employee-db-default-acl |
traverse.updateMode |
Default: SYNCHRONOUS
Menentukan bahwa traversal menggunakan mode pembaruan sinkron (versus pembaruan asinkron): traverse.updateMode = ASYNCHRONOUS |
traverse.exceptionHandler |
Default: 0
Menentukan apakah traversal harus diabaikan ("ignore"), selalu dibatalkan ("0"), atau batalkan setelah # pengecualian ditemukan ("10"): traverse.exceptionHandler = ignore |