Veritabanı bağlayıcısı dağıtma

Uyarı: Cloud Search referans bağlayıcıları "olduğu gibi" sağlanmıştır örnek kod olarak oluşturmanız gerekir. Bu örnek kod için gerekenler kavramın kanıtlanmasında kullanılmadan önce önemli özelleştirme ve test aşamalarının çok önemlidir. Üretimde kullanım için yardım almanız önemle tavsiye edilir. ile ilgili birçok inceleme yaptık. Uygun bir Cloud bulma konusunda daha fazla yardım almak için Arama Ağı iş ortağı, Google Hesap Yöneticinizle iletişime geçin.

Kuruluşunuzun bilgilerindeki verileri keşfedip dizine eklemek için Google Cloud Search'ü Google Cloud Search veritabanı bağlayıcısını kullanarak veri tabanlarını yeniden düzenleyebilirsiniz.

Dikkat edilmesi gerekenler

Bağlayıcı hem interneti ve veritabanını içeriyor.

Sistem gereksinimleri

Sistem gereksinimleri
İşletim sistemi Windows veya Linux
SQL veritabanı JDBC 4.0 veya sonraki sürümlerle uyumlu bir sürücüye sahip, aşağıdakiler de dahil herhangi bir SQL veritabanı:
  • MS SQL Server (2008, 2012, 2014, 2016)
  • Oracle (11g, 12c)
  • Google Cloud SQL
  • MySQL
Yazılım Veritabanına erişmek için bağlayıcının kullanacağı JDBC sürücüsü (ayrı olarak indirilir ve yüklenir)

Bağlayıcıyı dağıtma

Aşağıdaki adımlarda bağlayıcının nasıl yükleneceği ve yapılandırılacağı açıklanmaktadır dizine eklemek ve sonuçları Cloud Search kullanıcılarına döndürmek için kullanılır.

Ön koşullar

Cloud Search veritabanı bağlayıcısını dağıtmadan önce aşağıdaki bilgileri toplayın:

1. Adım: Veritabanı bağlayıcı yazılımını indirin ve derleyin

  1. GitHub'dan bağlayıcı deposunu klonlayın.
    $ git clone https://github.com/google-cloudsearch/database-connector.git
    $ cd database-connector
  2. İstediğiniz bağlayıcı sürümü olup olmadığını kontrol edin:
    $ git checkout tags/v1-0.0.3
  3. Bağlayıcıyı oluşturun.
    $ mvn package
    Bağlayıcıyı oluştururken testleri atlamak için mvn package -DskipTests işlevini kullanın.
  4. Bağlayıcı zip dosyasını yerel yükleme dizininize kopyalayın ve sıkıştırılmış dosyayı açın:
    $ cp target/google-cloudsearch-database-connector-v1-0.0.3.zip installation-dir
    $ cd installation-dir
    $ unzip google-cloudsearch-database-connector-v1-0.0.3.zip
    $ cd google-cloudsearch-database-connector-v1-0.0.3

2. adım: Veritabanı bağlayıcısını yapılandırma

  1. Bir metin dosyası oluşturun ve dosyayı connector-config.properties (varsayılan) veya benzeri bir adla adlandırın. Google'ın önerisi yapılandırma dosyalarına .properties veya .config uzantısını ekleyin ve dosyayı bağlayıcıyla aynı dizinde tutun. Farklı bir ad veya yol kullanırsanız bağlayıcıyı çalıştırırken yolu belirtmeniz gerekir.
  2. Parametreleri, dosya içeriğine anahtar/değer çiftleri olarak ekleyin. Yapılandırma dosyası şunu belirtmelidir: veri kaynağı erişimi, veritabanı erişimi, veritabanı tam geçişi SQL ifadesi, içerik alanı başlığı ve sütun tanımları. Diğer bağlayıcı davranışlarını da yapılandırabilirsiniz. parametresini kullanabilirsiniz. Örneğin:
    # Required parameters for data source access
    api.sourceId=1234567890abcdef
    api.identitySourceId=0987654321lmnopq
    api.serviceAccountPrivateKeyFile=./PrivateKey.json
    #
    # Required parameters for database access
    db.url=jdbc:mysql://localhost:3306/mysql_test
    db.user=root
    db.password=passw0rd
    #
    # Required full traversal SQL statement parameter
    db.allRecordsSql=select customer_id, first_name, last_name, phone, change_timestamp from address_book
    #
    # Required parameters for column definitions and URL format
    db.allColumns=customer_id, first_name, last_name, phone, change_timestamp
    db.uniqueKeyColumns=customer_id
    url.columns=customer_id
    #
    # Required content field parameter
    contentTemplate.db.title=customer_id
    #
    # Optional parameters to set ACLs to "entire domain" access
    defaultAcl.mode=fallback
    defaultAcl.public=true
    #
    # Optional parameters for schedule traversals
    schedule.traversalIntervalSecs=36000
    schedule.performTraversalOnStart=true
    schedule.incrementalTraversalIntervalSecs=3600
    

    Veritabanına özgü parametrelerin ayrıntılı açıklamaları için Bu makalenin sonundaki Yapılandırma parametreleri referansı.

    Tüm Cloud Search'te ortak olan parametreler hakkında bilgi edinmek için bağlayıcıları (ör. meta veri yapılandırması, tarih ve saat biçimleri ve EKL seçenekleri) Google tarafından sağlanan bağlayıcı parametreleri.

    Mümkünse geçiş SQL'inde şema nesnesinin özelliklerini belirtin. sorgu parametreleridir. Genellikle SQL'e takma adlar ekleyebilirsiniz. ifade eder. Örneğin, bir film veri kaynağı şeması, adlı bir mülk tanımını "ActorName", bir SQL ifadesi şu biçimde olabilir: SELECT …, last_name AS ActorName, … FROM … .

3. Adım: Veritabanı bağlayıcısını çalıştırma

Aşağıdaki örnekte, gerekli bileşenlerin yerel dizini olur.

Bağlayıcıyı komut satırından çalıştırmak için aşağıdaki komutu girin:

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]

Burada:

  • google-cloud-search-database-connector-v1-0.0.3.jar veritabanı bağlayıcısı .jar dosyası
  • mysql-connector-java-5.1.41-bin.jar, kullanılan JDBC sürücüsü (veri tabanına erişmek için)
  • mysql.config, özel olarak adlandırılmış bir yapılandırma dosyasıdır. Bağlayıcının yapılandırma dosyasını yüklemek için komut satırındaki yolunu belirtin. Aksi halde, bağlayıcı Yerel para biriminizde connector-config.properties dizinini varsayılan dosya adı olarak ayarlar.

Bağlayıcı, yapılandırma hatalarını algıladığında bunları bildirir. Bazı hatalar aşağıdaki durumlarda bildirilir bağlayıcı başlatılırken (örneğin, bir veritabanı sütunu kayıt içeriğinin bir parçası olarak tanımlandığında) (db.allColumns içinde), ancak sütun veritabanı (db.allRecordsSql içinde). Diğer hatalar yalnızca şu durumlarda tespit edilir ve bildirilir: bağlayıcı, geçersiz SQL ifadesi söz dizimi gibi ilk geçiş için veritabanına erişmeye çalışır.

Yapılandırma parametreleri referansı

Veri kaynağı erişim parametreleri

Yer Parametre
Veri kaynağı kimliği api.sourceId = source-ID

Zorunlu. Cloud Search Google Workspace yöneticisinin ayarladığı kaynak kimliği.

Kimlik kaynağı kimliği api.identitySourceId = identity-source-ID

EKL'ler için harici kullanıcıların ve grupların kullanılması gerekir. Cloud Search Google Workspace yöneticisinin ayarladığı kimlik kaynağı kimliği.

Hizmet hesabı api.serviceAccountPrivateKeyFile = path-to-private-key

Zorunlu. Cloud Search'e giden yol Google Workspace yöneticisinin oluşturduğu hizmet hesabı anahtar dosyası.

Veritabanı erişim parametreleri

Yer Parametre
Veritabanı URL'si db.url = database-URL

Zorunlu. İlgili içeriği oluşturmak için kullanılan jdbc:mysql://127.0.0.1/dbname gibi, erişilecek veritabanının tam yolunu gösterir.

Veritabanı kullanıcı adı ve şifresi db.user = username
db.password = password

Zorunlu. Geçerli bir kullanıcı adı ve bağlayıcının veritabanına erişmek için kullandığı şifredir. Bu veritabanı kullanıcısı, okunmakta olan veritabanının ilgili kayıtlarına okuma erişimine sahip olmalıdır.

JDBC sürücüsü db.driverClass = oracle.jdbc.OracleDriver

Yalnızca JDBC 4.0 sürücüsü sınıf yolunda önceden belirtilmemişse gereklidir.

Geçiş SQL sorgu parametreleri

Bağlayıcı, SQL SELECT ile veritabanı kayıtları arasında gezinir sorgu sayısı. Tam geçiş sorgusu yapılandırmanız gerekir; sorgu artımlı geçişler isteğe bağlıdır.

Tam geçiş, dizine ekleme için yapılandırılan her veritabanı kaydını okur. Tam Cloud Search için yeni kayıtları dizine eklemek ve ayrıca yeniden dizine eklemek için geçiş gerekir Mevcut tüm kayıtlarda

Artımlı geçiş, yalnızca yeni değiştirilen veritabanını okur ve yeniden dizine ekler kayıtları ve son girişleri kapsar. Artımlı geçişler, tam geçişleri sağlar. Artımlı geçişleri kullanmak için veritabanınızın zaman damgası alanları içermesi gerekir kullanın.

Bağlayıcı, bu geçişleri geçiş zamanlaması parametrelerine dikkat edin.

Yer Parametre
Tam geçiş sorgusu db.allRecordsSql = SELECT column-1[, column-2,...] FROM database-name

Zorunlu. Her tam geçiş için çalıştırılan sorgu.

Bağlayıcının kapasite (içerik, benzersiz kimlik, EKL'ler) bulunmalıdır. İlgili içeriği oluşturmak için kullanılan bağlayıcı, hataları algılamak için başlatma sırasında bazı ön doğrulamalar gerçekleştirir ve eksiklikler. Bu nedenle, genel "SELECT * FROM ..." koşulunu kullanmayın. emin olun.

Tam geçiş sayfalandırması db.allRecordsSql.pagination = {none | offset}

Değer şöyle olabilir:

  • none: sayfalara ayırmaz
  • ofset: Satır ofsetine göre sayfalandırmayı kullan

    Ofsete göre sayfalandırmayı kullanmak için SQL sorgusunda bir yer tutucu soru işareti (?) olmalıdır değerini girin. Her tam geçişte, sorgu tekrar tekrar yürütülür bu işlemi yapabilirsiniz.

Artımlı geçiş sorgusu db.incrementalUpdateSql = SELECT column-1[, column-2,...] FROM database-name WHERE last_update_time > ?

Artımlı geçişler planlarsanız gereklidir.

"?" değeri, zaman damgası değeri için zorunlu bir yer tutucudur. İlgili içeriği oluşturmak için kullanılan bağlayıcısı, artımlı geçiş SQL sorguları arasındaki değişiklikleri izlemek için zaman damgasını kullanır.

Son güncelleme zamanına ait veritabanı zaman damgası sütununu izlemek için SQL ifadesi için timestamp_column takma ad; Aksi takdirde, bağlayıcı geçişini tıklayın.

İlk artımlı geçiş için bağlayıcı, bağlayıcının başlangıç zamanını kullanır. ilk artımlı geçişi içeriyorsa Cloud Search, zaman damgasını saklar. bağlayıcı yeniden başlatmalarının önceki artımlı geçişe [timestamp].

Veritabanı saat dilimi db.timestamp.timezone = America/Los_Angeles

Veritabanı zaman damgaları için kullanılacak saat dilimini belirtir. Yeni kayıt eklemelerini veya yeni kayıt eklemelerini tanımlamak için kullanılan veritabanı zaman damgası emin olun. Varsayılan değer, bağlayıcının çalıştırıldığı yerel saat dilimidir.

Geçiş SQL sorgu örnekleri

  • Dizine eklemek üzere çalışan veritabanındaki her önemli kaydı okuyan temel tam geçiş sorgusu:
    db.allRecordsSql = SELECT customer_id, first_name, last_name, employee_id, interesting_field \
        FROM employee
  • Ofsete göre sayfalandırmayı belirtin ve bir tam geçişi birden fazla sorguya ayırın.

    SQL Server 2012 veya Oracle 12c için (standart SQL 2008 söz dizimi):

    db.allRecordsSql = SELECT customer_id, first_name, last_name, employee_id, interesting_field \
        FROM employee \
        ORDER BY customer_id OFFSET ? ROWS FETCH FIRST 1000 ROWS ONLY
    db.allRecordsSql.pagination = offset
    

    veya MySQL ya da Google Cloud SQL için:

    db.allRecordsSql = SELECT customer_id, first_name, last_name, employee_id, interesting_field \
        FROM employee \
        ORDER BY customer_id LIMIT 1000 OFFSET ?
    db.allRecordsSql.pagination = offset
  • Takma adlarla EKL'leri tek tek uygulayan tam geçiş sorgusu:
    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
  • Temel artımlı geçiş sorgusu:
    db.incrementalUpdateSql = SELECT customer_id, first_name, last_name, employee_id, interesting_field, last_update_time \
         FROM employee \
         WHERE last_update_time > ?
  • Takma adlarla ayrı EKL'leri uygulayan artımlı geçiş sorgusu:
    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 > ?
  • Geçerli zaman yerine veritabanı zaman damgasını kullanan artımlı geçiş sorgusu:
    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 > ?

Sütun tanımı parametreleri

Aşağıdaki parametreler, geçiş ifadelerinde kullandığınız sütunları belirtir ve benzersiz bir şekilde tanımlar.

Yer Parametre
Tüm sütunlar db.allColumns = column-1, column-2, ...column-N

Zorunlu. Tüm sütunları tanımlar Bunlar, veritabanına erişirken SQL sorgusunda gereklidir. Sütunlar bu parametreyle tanımlanan tüm özelliklere sorgularda açıkça referans verilmelidir. Hepsini diğer sütun tanımı parametresi bu sütun grubuyla karşılaştırılır.

Örnek:

db.allColumns = customer_id, first_name, last_name, phone, change_timestamp
Benzersiz anahtar sütunları db.uniqueKeyColumns = column-1[, column-2]

Zorunlu. Şunlardan birini listeler: tek bir veritabanı sütunu olabilir. Sütun, değerleri birlikte benzersiz bir kimlik tanımlayan sütunlar.

Cloud Search, aranabilir her belgenin benzersiz bir tanımlayıcıya sahip olmasını gerektirir. tek bir veri kaynağında olması gerekir. Her veritabanı kaydı için benzersiz bir kimlik tanımlayabilmeniz gerekir kaldırın. Ayrı veritabanlarında birden fazla bağlayıcı çalıştırıyorsanız ortak bir veri kümesi kullanıyorsanız benzersiz bir kimlik belirttiğinizden emin olun tüm dokümanlarda sağlayın.

Örnekler:

db.uniqueKeyColumns = customer_id
# or
db.uniqueKeyColumns = last_name, first_name
URL bağlantısı sütunu url.columns = column-1[, column-2]

Zorunlu. Tanımlanmış bir veya daha fazla geçerli tıklanabilir arama sonucu için kullanılan URL için kullanılan sütunların adları. Her veritabanı kaydı ile ilişkili alakalı bir URL'ye sahip olmayan veritabanları için bir statik bağlantı her kayıt için kullanılabilir.

Bununla birlikte, sütun değerleri her kayıt için geçerli bir bağlantı tanımlarsa, görünüm URL sütunları ve biçim yapılandırma değerleri belirtilmelidir.

URL biçimi url.format = https://www.example.com/{0}

Görüntüleme URL'sinin biçimini tanımlar. Numaralı parametreler, db.columns sütununda sıfır ile başlayacak şekilde belirtilir.

Belirtilmezse varsayılan olarak "{0}" kullanılır.

Örnekler aşağıdaki tabloda verilmiştir.

URL için yüzde olarak kodlanmış sütunlar url.columnsToEscape = column-1[, column-2]

db.columns sütununda değerleri yüzde olarak kodlanacak sütunları belirtir biçimlendirilmiş URL dizesine eklemeden önce

URL sütunu örnekleri

Geçiş sorgularında kullanılan sütunları ve görüntüleme URL'sinin biçimini belirtmek için:

  • Herhangi bir veritabanı kaydı değeri kullanmadan statik URL kullanmak için:
    url.format = https://www.example.com
  • Görüntüleme URL'si olan tek bir sütun değeri kullanmak için:
    url.format = {0}
    url.columns = customer_id
  • {0} konumundaki görüntüleme URL'siyle değiştirilecek tek bir sütun değeri kullanmak için:
    url.format = https://www.example.com/customer/id={0}
    url.columns = customer_id
    url.columnsToEscape = customer_id
  • Görüntüleme URL'sini oluşturmak üzere birden çok sütun değeri kullanmak için (sütunlar sıraya bağlıdır):
    url.format = {1}/customer={0}
    url.columns = customer_id, linked_url
    url.columnsToEscape = customer_id

İçerik alanları

Hangi kayıt değerlerini tanımlamak için içerik seçeneklerini kullanın aranabilir içeriğin bir parçası haline getirilmelidir.

Yer Parametre
En yüksek kaliteli arama sütunu contentTemplate.db.title = column-name

Zorunlu. Arama dizine ekleme ve sonuç önceliklendirme için en yüksek kaliteli sütun.

Arama için sütun önceliklendirme contentTemplate.db.quality.high = column-1[, column-2...]
contentTemplate.db.quality.medium = column-1[, column-2...]
contentTemplate.db.quality.low = column-1[, column-2...]

İçerik sütunlarını belirt (contentTemplate.db.title için ayarlanan sütun hariç) yüksek, orta veya düşük arama kalitesi alanları oluşturabilirsiniz. Belirtilmemiş sütunlar varsayılan olarak düşük değerine ayarlanır.

İçerik verisi sütunları db.contentColumns = column-1[, column-2...]

Veritabanındaki içerik sütunlarını belirtin. Bunlar biçimlendirilmiş ve Cloud Search'e, aranabilir belge içeriği olarak yüklenir.

Bir değer belirtmezseniz varsayılan olarak "*" kullanılır Bu örnekte tüm sütunları içerik için kullanılmalıdır.

Blob sütunu db.blobColumn = column-name

Tek bir blobun adını belirtme içerik sütunlarının bir kombinasyonu yerine doküman içeriği için kullanılacak sütunu seçin.

Bir blob sütunu belirtilirse içerik sütunlarının bu bir hata olarak kabul edilmesi tanımlanmıştır. Ancak meta veri ve yapılandırılmış veri sütunu tanımları blob sütunlarıyla birlikte kullanılmasına izin verilir.