אזהרה: מחברי ההפניה של Cloud Search מסופקים "כפי שהם" כקוד לדוגמה לשימוש ליצירת המחברים הפעילים שלך. קוד הדוגמה הזה דורש התאמה אישית ובדיקות משמעותיות לפני השימוש בסביבות הוכחת קונספט או סביבת ייצור. כדי להשתמש בייצור, מומלץ מאוד לקבל עזרה מאחד מהשותפים שלנו ב-Cloud Search. לעזרה נוספת במציאת שותף Cloud Search מתאים, פנו אל מנהל חשבון Google שלכם. |
אפשר להגדיר את Google Cloud Search כדי לגלות נתונים ממסדי הנתונים של הארגון שלך ולהוסיף אותם לאינדקס, באמצעות מחבר מסד הנתונים של Google Cloud Search.
שיקולים חשובים
ניתן להתקין ולהפעיל את מחבר מסד הנתונים של Cloud Search כמעט בכל סביבה שבה פועלות אפליקציות Java, כל עוד יש למחבר גישה הן לאינטרנט והן למסד הנתונים.
דרישות המערכת
דרישות המערכת | |
---|---|
מערכת הפעלה | Windows או Linux |
מסד נתונים של SQL | כל מסד נתונים מסוג SQL עם מנהל התקן JDBC 4.0 ואילך, כולל:
|
תוכנה | מנהל התקן JDBC עבור המחבר, כדי להשתמש בו לצורך גישה למסד הנתונים (הורדה והתקנה בנפרד) |
פריסת המחבר
השלבים הבאים מתארים כיצד להתקין את המחבר ולהגדיר אותו כדי ליצור אינדקס של מסדי הנתונים שצוינו ולהחזיר את התוצאות למשתמשי Cloud Search.
דרישות מוקדמות
לפני שתפרוס את מחבר מסד הנתונים של Cloud Search, עליך לאסוף את המידע הבא:
- מפתח פרטי של Google Workspace, שגם מכיל את מספר חשבון השירות. כדי ללמוד איך להשיג מפתח פרטי, יש לעבור אל הגדרת הגישה אל Google Cloud Search REST API.
- מזהה של מקור נתונים ב-Google Workspace. כדי ללמוד איך לקבל מזהה של מקור נתונים, עוברים אל הוספת מקור נתונים לחיפוש.
שלב 1. הורדה ויצירה של תוכנת מחבר מסד הנתונים
- שכפול מאגר המחברים מ-GitHub.
$ git clone https://github.com/google-cloudsearch/database-connector.git $ cd database-connector
- נסה את הגרסה הרצויה של המחבר:
$ git checkout tags/v1-0.0.3
- בונים את המחבר.
$ mvn package
כדי לדלג על הבדיקות כשיוצרים את המחבר, צריך להשתמש בפונקציהmvn package -DskipTests
. - מעתיקים את קובץ ה-ZIP של המחבר לספריית ההתקנה המקומית ומבטלים את הדחיסה שלו:
$ 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. הגדרת המחבר של מסד הנתונים
- יוצרים קובץ טקסט ונותנים לו שם
connector-config.properties
(ברירת המחדל) או שם דומה. Google ממליצה לתת שמות לקובצי תצורה עם הסיומת.properties
או.config
ולשמור את הקובץ באותה ספרייה כמו המחבר. אם אתה משתמש בשם או בנתיב אחרים, עליך לציין את הנתיב בעת הפעלת המחבר. - מוסיפים פרמטרים כצמדים של מפתח/ערך לתוכן הקובץ. קובץ התצורה חייב לציין את הפרמטרים עבור גישה למקור נתונים, גישה למסד נתונים, הצהרת SQL של מעבר מלא של מסד נתונים, כותרת שדה תוכן והגדרות עמודות. תוכל גם להגדיר התנהגות אחרת של מחברים
עם פרמטרים אופציונליים. לדוגמה:
# 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
לתיאורים מפורטים של הפרמטרים הספציפיים למסד הנתונים, יש לעיין ב מידע על הפרמטרים של התצורה בסוף המאמר הזה.
למידע נוסף על הפרמטרים המשותפים לכל המחברים ב-Cloud Search, כגון הגדרת מטא-נתונים, פורמטים של תאריך ושעה ואפשרויות ACL, עבור אל פרמטרים שסופקו על ידי Google למחבר.
אם רלוונטי, יש לציין מאפיינים של אובייקט הסכימה בפרמטרים של שאילתת ה-SQL למעבר. בדרך כלל אפשר להוסיף כינויים להצהרת ה-SQL. לדוגמה, אם יש לך מסד נתונים של סרטים וסכימת מקור הנתונים כוללת הגדרת נכס בשם "ActorName", הצהרת SQL יכולה להופיע בצורה:
SELECT …, last_name AS ActorName, … FROM …
.
שלב 3. הפעל את מחבר מסד הנתונים
הדוגמה הבאה מבוססת על ההנחה שהרכיבים הנדרשים נמצאים בספרייה המקומית במערכת Linux.
כדי להריץ את המחבר משורת הפקודה, הזן את הפקודה הבאה:
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]
כאשר:
google-cloud-search-database-connector-v1-0.0.3.jar
הוא קובץ ה-Jam במחבר מסד הנתוניםmysql-connector-java-5.1.41-bin.jar
הוא מנהל ההתקן של JDBC שבו נעשה שימוש לגישה למסד הנתוניםmysql.config
הוא קובץ תצורה עם שם בהתאמה אישית. כדי לוודא שהמחבר מזהה את קובץ התצורה, ציין את הנתיב שלו בשורת הפקודה. אחרת, המחבר משתמש ב-connector-config.properties
בספרייה המקומית שלך בתור שם הקובץ המוגדר כברירת מחדל.
המחבר מדווח על שגיאות תצורה כשהוא מזהה אותן. שגיאות מסוימות מדווחות כאשר
האתחול מופעל, למשל כאשר עמודה של מסד נתונים מוגדרת כחלק מתוכן הרשומה (ב-db.allColumns
), אך לא נעשה שימוש בעמודה בשאילתת SQL של מעבר במסד הנתונים (ב-db.allRecordsSql
). שגיאות אחרות מזוהות ומדווחות רק כאשר המחבר מנסה לגשת למסד הנתונים עבור המעבר הראשון, כגון תחביר לא חוקי של הצהרת SQL.
הסבר על פרמטרים של תצורה
פרמטרים של גישה למקור נתונים
הגדרה | הפרמטר |
---|---|
מזהה של מקור נתונים | api.sourceId = source-ID
נדרש. מזהה המקור של Cloud Search שהוגדר על ידי האדמין ב-Google Workspace. |
המזהה של מקור הזהות | api.identitySourceId = identity-source-ID
נדרש כדי להשתמש במשתמשים ובקבוצות חיצוניות עבור רשימות ACL. המזהה של מקור הזהות ב-Cloud Search שהאדמין של Google Workspace הגדיר. |
חשבון שירות | api.serviceAccountPrivateKeyFile = path-to-private-key
נדרש. הנתיב אל קובץ המפתח של חשבון השירות ב-Cloud Search שהאדמין של Google Workspace יצר. |
פרמטרים לגישה למסד נתונים
הגדרה | הפרמטר |
---|---|
כתובת URL של מסד נתונים | db.url = database-URL
נדרש. הנתיב המלא של מסד הנתונים, שיש לגשת אליו, כגון |
שם משתמש וסיסמה למסד נתונים | db.user = username db.password = password
נדרש. שם משתמש וסיסמה חוקיים שבהם המחבר משתמש כדי לגשת למסד הנתונים. למשתמש זה של מסד הנתונים חייבת להיות גישת קריאה לרשומות הרלוונטיות של מסד הנתונים שנקרא. |
נהג JDBC | db.driverClass = oracle.jdbc.OracleDriver
נדרש רק אם מנהל ההתקן JDBC 4.0 לא מצוין כבר בנתיב המחלקה. |
מעבר בין פרמטרי שאילתה של SQL
המחבר עובר את רשומות מסד הנתונים באמצעות שאילתות SQL SELECT בקובץ התצורה. עליך להגדיר שאילתת מעבר מלאה; שאילתות למעבר חצייה הן אופציונליות.
מעבר מלא קורא את כל רשומות מסד הנתונים שהוגדרו להוספה לאינדקס. יש צורך במעבר מלא כדי להוסיף רשומות חדשות לאינדקס של Cloud Search וגם להוסיף מחדש את כל הרשומות הקיימות.
מעבר מצטבר קורא ויוצר מחדש אינדקס רק לרשומות מסד נתונים שהשתנו לאחרונה ולרשומות האחרונות במסד הנתונים. מעברים מצטברים יכולים להיות יעילים יותר מאשר מעברים מלאים. כדי להשתמש במעברים מצטברים, מסד הנתונים חייב להכיל שדות חותמות זמן כדי לציין רשומות שהשתנו.
המחבר מבצע את המעברים האלה בהתאם ללוחות הזמנים שאתם מגדירים בפרמטרים של תזמון מעבר.
הגדרה | הפרמטר |
---|---|
שאילתת המעבר המלאה | db.allRecordsSql = SELECT column-1[, column-2,...] FROM database-name
נדרש. השאילתה מוצגת עבור כל המעבר המלא. כל שם של עמודה שבו המחבר ישתמש בכל קיבולת (תוכן, מזהה ייחודי, רשימות ACL) חייב להיכלל בשאילתה הזו. המחבר מבצע כמה בדיקות ראשוניות בזמן האתחול כדי לזהות שגיאות והשמטות. לכן, אין להשתמש בשאילתה כללית מסוג "SELECT * FROM ...". |
עימוד מלא של מעבר | db.allRecordsSql.pagination = {none | offset}
הערך יכול להיות:
|
שאילתת חצייה מצטברת | db.incrementalUpdateSql = SELECT column-1[, column-2,...] FROM database-name WHERE last_update_time > ?
נדרש אם מתזמנים מעברים מצטברים. הסימן "?" בשאילתה הוא placeholder נדרש עבור ערך חותמת זמן. המחבר משתמש בחותמת הזמן כדי לעקוב אחר שינויים בין שאילתות SQL מצטברות. כדי לעקוב אחר עמודת חותמת הזמן של מסד הנתונים עבור מועד העדכון האחרון, יש להוסיף את הכינוי
עבור המעבר המצטבר הראשון, המחבר משתמש בשעת ההתחלה של המחבר. לאחר החצייה המצטברת הראשונה, Cloud Search מאחסן את חותמת הזמן כך שהמחבר יופעל מחדש יוכל לגשת לחותמת הזמן המצטברת הקודמת. |
אזור הזמן של מסד הנתונים | db.timestamp.timezone = America/Los_Angeles
מציין את אזור הזמן לשימוש עבור חותמות זמן של מסד נתונים. חותמת הזמן של מסד הנתונים המשמשת לזיהוי רשומות של רשומות חדשות או רשומות מסד נתונים שהשתנו לאחרונה. ברירת המחדל היא אזור הזמן המקומי שבו המחבר פועל. |
מעבר בין שאילתות שאילתה של SQL
- שאילתה בסיסית למעבר מלא שקוראת כל רשומה של עניין במסד נתונים של עובדים להוספה לאינדקס:
db.allRecordsSql = SELECT customer_id, first_name, last_name, employee_id, interesting_field \ FROM employee
- הגדרת עימוד באמצעות היסט ופיצול של מעבר מלא למספר שאילתות.
עבור SQL Server 2012 או Oracle 12c (תחביר SQL סטנדרטי 2008):
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
או, עבור MySQL או Google Cloud SQL:
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
- שאילתת מעבר מלאה שמחילה רשימות ACL בודדות עם כינויים:
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 \ FROM employee \ WHERE last_update_time > ?
- שאילתת חצייה מצטברת המחילה רשימות ACL בודדות עם כינויים:
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 > ?
- שאילתת חצייה מצטברת שמשתמשת בחותמת הזמן של מסד הנתונים במקום בשעה הנוכחית:
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 > ?
פרמטרים של הגדרת עמודה
הפרמטרים הבאים מציינים את העמודות שבהן אתה משתמש בהצהרות המעבר ומזהים באופן ייחודי כל רשומה.
הגדרה | הפרמטר |
---|---|
כל העמודות | db.allColumns = column-1, column-2, ...column-N
נדרש. מזהה את כל העמודות הנדרשות בשאילתת SQL בעת גישה למסד הנתונים. בעמודות המוגדרות עם הפרמטר הזה יש לכלול הפניה מפורשת בשאילתות. מתבצעת השוואה בין כל פרמטר אחר של הגדרת עמודה לבין קבוצת העמודות הזו. דוגמה: db.allColumns = customer_id, first_name, last_name, phone, change_timestamp |
עמודות מפתח ייחודיות | db.uniqueKeyColumns = column-1[, column-2]
נדרש. הרשימה כוללת עמודה אחת במסד הנתונים, שמכילה ערכים ייחודיים או באמצעות שילוב של עמודות שהערכים שלהן מגדירים יחד מזהה ייחודי. Cloud Search מחייב שלכל מסמך ניתן לחיפוש יהיה מזהה ייחודי במקור נתונים. להיות מסוגלות להגדיר מזהה ייחודי לכל רשומת מסד נתונים מערכי העמודות. אם אתה מפעיל מספר מחברים במסדי נתונים נפרדים אך מוסיף אותם לאינדקס למערך נתונים משותף, הקפד לציין מזהה ייחודי בכל כל המסמכים. לדוגמה: db.uniqueKeyColumns = customer_id # or db.uniqueKeyColumns = last_name, first_name |
העמודה 'קישור לכתובת אתר' | url.columns = column-1[, column-2]
נדרש. מציין שם חוקי מוגדר אחד או יותר של העמודות המשמשות לכתובת האתר המשמשת עבור תוצאת חיפוש הניתנת ללחיצה. במסדי נתונים שאין להם כתובת אתר רלוונטית המשויכת לכל רשומת מסד נתונים, ניתן להשתמש בקישור סטטי לכל רשומה. עם זאת, אם ערכי העמודות מגדירים קישור חוקי לכל רשומה, צריך לציין את העמודות בתצוגת כתובת האתר ואת ערכי התצורה של הפורמט. |
פורמט של כתובת URL | url.format = https://www.example.com/{0}
הגדרת הפורמט של כתובת URL לתצוגה. פרמטרים ממוספרים מתייחסים לעמודות שצוינו ב-db.columns, בסדר, החל באפס. אם לא צוין, ברירת המחדל היא "." בטבלה הבאה מוצגות דוגמאות. |
עמודות מקודדות באחוזים עבור כתובת URL | url.columnsToEscape = column-1[, column-2]
מציין עמודות מ-db.columns שהערכים שלהן יקודדו באחוזים לפני שיכללו אותן במחרוזת הפורמט של כתובת האתר. |
דוגמאות לעמודות של כתובות URL
כדי לציין את העמודות המשמשות בשאילתות למעבר ואת הפורמט של כתובת האתר של התצוגה:
- כדי להשתמש בכתובת URL סטטית שלא נעשה בה שימוש בערכים של רשומת מסד נתונים:
url.format = https://www.example.com
- כדי להשתמש בערך אחד בעמודה שהוא כתובת ה-URL של התצוגה המפורטת:
url.format = {0} url.columns = customer_id
- כדי להשתמש בערך עמודה יחיד המוחלף בכתובת האתר של התצוגה המפורטת במיקום {0}:
url.format = https://www.example.com/customer/id={0} url.columns = customer_id url.columnsToEscape = customer_id
- כדי להשתמש בערכים מרובים של עמודות לבניית כתובת ה-URL של התצוגה המפורטת (העמודות תלויות בהזמנה):
url.format = {1}/customer={0} url.columns = customer_id, linked_url url.columnsToEscape = customer_id
שדות תוכן
אפשר להשתמש באפשרויות התוכן כדי לקבוע אילו ערכי רשומות צריכים להיות חלק מהתוכן בחיפוש.
הגדרה | הפרמטר |
---|---|
עמודת החיפוש האיכותית ביותר | contentTemplate.db.title = column-name
נדרש. העמודה באיכות הגבוהה ביותר ליצירת אינדקס בחיפוש ולקביעת סדר עדיפויות של תוצאות. |
תעדוף עמודות עבור חיפוש | contentTemplate.db.quality.high = column-1[, column-2...] contentTemplate.db.quality.medium = column-1[, column-2...] contentTemplate.db.quality.low = column-1[, column-2...]
ציון של עמודות התוכן (פרט לעמודות שהוגדרו עבור |
העמודות של נתוני התוכן | db.contentColumns = column-1[, column-2...]
יש לציין עמודות תוכן במסד הנתונים. הפורמטים האלה הועלו והועלו ל-Cloud Search כתוכן מסמך שניתן לחיפוש. אם לא מציינים ערך, ברירת המחדל היא "*" המציינת שיש להשתמש בכל העמודות עבור תוכן. |
עמודה Blob | db.blobColumn = column-name
יש לציין שם של עמודת blob אחת שתשמש לתוכן המסמך במקום שילוב של עמודות תוכן. אם מצוינת עמודת blob, היא נחשבת כשגיאה אם גם עמודות התוכן מוגדרות. עם זאת, ניתן להמשיך להשתמש בהגדרות העמודות של המטא נתונים ושל הנתונים המוב areנים יחד עם עמודות blob. |