Menerapkan konektor database

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.

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:

  1. Download dan simpan software konektor database Cloud Search.
  2. Konfigurasikan konektor database Cloud Search.
  3. Jalankan konektor database Cloud Search.

Langkah 1. Download dan simpan software konektor database

Instal SDK ke dalam repositori Maven lokal Anda.

  1. Lakukan clone repositori SDK dari GitHub.
  2. git clone https://github.com/google-cloudsearch/connector-sdk.git
    cd connector-sdk
  3. Lihat versi SDK yang diinginkan:
    git checkout tags/v1-0.0.3
  4. Instal komponen SDK:
    mvn install

Buat konektor.

  1. Lakukan clone repositori konektor dari GitHub.
  2. git clone https://github.com/google-cloudsearch/database-connector.git
    cd database-connector
  3. Lihat versi konektor yang diinginkan dan buat file ZIP:
    git checkout tags/v1-0.0.3
    mvn package
    (Untuk melewati tes ketika membuat konektor, gunakan mvn package -DskipTests.)
  4. Ekstrak file ZIP ke lokasi yang diinginkan.
  5. 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:

  1. Buka editor teks pilihan Anda.
  2. Tambahkan key-value pair ke konten file. Untuk panduan, lihat contoh file konfigurasi.
  3. 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 database
  • mysql-connector-java-5.1.41-bin.jar adalah driver SQL yang digunakan untuk mengakses database
  • mysql.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:

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

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

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:

  • none: tidak menggunakan penomoran
  • offset: menggunakan penomoran dengan offset baris

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

db.incrementalUpdateSql = select customer_id, first_name, last_name, employee_id, interesting_field, last_update_time as timestamp_column from employee where last_update_time > ?

Diperlukan saat menggunakan traversal inkremental. Untuk melacak kolom stempel waktu database untuk waktu pembaruan terakhir, tambahkan timestamp_column ke pernyataan SQL; jika tidak, gunakan stempel waktu saat ini dari konektor traversal.

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 300 (jumlah detik dalam 5 menit). Parameter ini tidak digunakan jika SQL traversal inkremental tidak ditentukan.

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: select …, last_name as ActorName, … from … .

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:

  • none: tidak menggunakan ACL default
  • fallback: menggunakan ACL default hanya jika ACL belum ada
  • append: menambahkan ACL default ke ACL yang ada
  • override: mengganti ACL yang ada dengan ACL default

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.driverClass = oracle.jdbc.OracleDriver

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.user = dbadmin

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:

  • none: tidak menggunakan penomoran
  • offset: menggunakan penomoran dengan offset baris

db.allRecordsSql.pagination = offset

db.incrementalUpdateSql Default: Dinonaktifkan (string kosong)

Kueri traversal inkremental untuk mengambil dokumen yang baru saja diubah, biasanya dengan stempel waktu:

db.incrementalUpdateSql = select customer_id, first_name, last_name, employee_id, interesting_field, last_update_time from employee where last_update_time > ?

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:

  • none: tidak menggunakan ACL default
  • fallback: menggunakan ACL default hanya jika ACL belum ada
  • append: menambahkan ACL default ke ACL yang ada
  • override: mengganti ACL yang ada dengan ACL default

defaultAcl.mode = override

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