اخطار: رابطهای مرجع Cloud Search «همانطور که هست» بهعنوان کد نمونه برای استفاده در ایجاد رابطهای کاری خودتان ارائه میشوند. این کد نمونه قبل از استفاده در محیط های اثبات مفهوم یا تولید نیاز به سفارشی سازی و آزمایش قابل توجهی دارد. برای استفاده در تولید، ما به شدت توصیه می کنیم از یکی از شرکای Cloud Search ما کمک بگیرید. برای کمک بیشتر در یافتن شریک جستجوی ابری مناسب، با مدیر حساب Google خود تماس بگیرید. |
میتوانید Google Cloud Search را برای کشف و فهرستبندی دادهها از پایگاههای داده سازمان خود با استفاده از رابط پایگاه داده Google Cloud Search راهاندازی کنید.
ملاحظات مهم
شما می توانید رابط پایگاه داده Cloud Search را تقریباً در هر محیطی که برنامه های جاوا می توانند اجرا شوند نصب و اجرا کنید، تا زمانی که رابط به اینترنت و پایگاه داده دسترسی داشته باشد.
سیستم مورد نیاز
سیستم مورد نیاز | |
---|---|
سیستم عامل | ویندوز یا لینوکس |
پایگاه داده SQL | هر پایگاه داده SQL با درایور سازگار با JDBC 4.0 یا بالاتر، از جمله موارد زیر:
|
Software | 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. اتصال دهنده پایگاه داده را اجرا کنید
در مثال زیر فرض می شود که اجزای مورد نیاز در فهرست محلی یک سیستم لینوکس قرار دارند.
برای اجرای کانکتور از خط فرمان، دستور زیر را وارد کنید:
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
رابط پایگاه داده است. فایل jarmysql-connector-java-5.1.41-bin.jar
درایور JDBC است که برای دسترسی به پایگاه دادهmysql.config
استفاده می شود. 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 در فایل پیکربندی طی می کند. شما باید یک جستجوی پیمایش کامل را پیکربندی کنید. پرس و جو برای پیمایش های افزایشی اختیاری است.
یک پیمایش کامل هر رکورد پایگاه داده را که برای نمایه سازی پیکربندی شده است می خواند. یک پیمایش کامل برای فهرستبندی رکوردهای جدید برای جستجوی ابری و همچنین فهرستبندی مجدد همه رکوردهای موجود لازم است.
یک پیمایش افزایشی فقط رکوردهای پایگاه داده تازه اصلاح شده و ورودی های اخیر به پایگاه داده را می خواند و دوباره فهرست می کند. پیمایش افزایشی می تواند کارآمدتر از پیمایش کامل باشد. برای استفاده از پیمایش های افزایشی، پایگاه داده شما باید دارای فیلدهای مهر زمانی باشد تا رکوردهای اصلاح شده را نشان دهد.
رابط این پیمایش ها را طبق برنامه زمانی که شما در پارامترهای برنامه پیمایش تعریف کرده اید اجرا می کند.
تنظیم | پارامتر |
---|---|
کوئری پیمایش کامل | 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 > ? اگر پیمایش های تدریجی را برنامه ریزی می کنید، الزامی است. "؟" در پرس و جو یک مکان نگهدار اجباری برای مقدار مهر زمانی است. رابط از مهر زمانی برای ردیابی تغییرات بین جستجوهای SQL پیمایش افزایشی استفاده می کند. برای ردیابی ستون مهر زمانی پایگاه داده برای آخرین زمان به روز رسانی، نام مستعار برای اولین پیمایش افزایشی، کانکتور از زمان شروع کانکتور استفاده می کند. پس از اولین پیمایش افزایشی، Cloud Search مهر زمانی را ذخیره میکند تا راهاندازی مجدد رابط قادر به دسترسی به مهر زمانی پیمایش افزایشی قبلی باشد. |
منطقه زمانی پایگاه داده | db.timestamp.timezone = America/Los_Angeles منطقه زمانی مورد استفاده برای مهرهای زمانی پایگاه داده را مشخص می کند. مهر زمانی پایگاه داده برای شناسایی رکوردهای اضافه شده جدید یا رکوردهای تازه اصلاح شده پایگاه داده استفاده می شود. پیش فرض منطقه زمانی محلی است که کانکتور در آن اجرا می شود. |
نمونههای پرسوجو SQL Traversal
- Query پیمایش کامل پایه که هر رکورد مورد علاقه در پایگاه داده کارمندان را برای نمایهسازی میخواند:
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 | url.columns = column-1 [, column-2 ] الزامی است. یک یا چند نام معتبر و تعریف شده از ستون های مورد استفاده برای URL مورد استفاده برای یک نتیجه جستجوی قابل کلیک را مشخص می کند. برای پایگاههای دادهای که هیچ URL مرتبطی با هر رکورد پایگاه داده ندارند، میتوان از یک پیوند ثابت برای هر رکورد استفاده کرد. با این حال، اگر مقادیر ستونها یک پیوند معتبر برای هر رکورد تعریف میکنند، ستونهای URL مشاهده و مقادیر پیکربندی قالب باید مشخص شوند. |
فرمت URL | url.format = https://www.example.com/{0} قالب URL مشاهده را مشخص می کند. پارامترهای شماره گذاری شده به ستون های مشخص شده در db.columns ، به ترتیب، با صفر شروع می شود. اگر مشخص نشده باشد، پیشفرض « {0}» است. نمونههایی از این جدول پیروی میکنند. |
ستونهای درصد رمزگذاریشده برای URL | url.columnsToEscape = column-1 [, column-2 ] ستونهایی را از db.columns مشخص میکند که مقادیر آنها قبل از گنجاندن آنها در رشته URL قالببندیشده، با درصد رمزگذاری میشوند. |
نمونههای ستون URL
برای تعیین ستونهای مورد استفاده در جستارهای پیمایش و قالب نمای URL:
- برای استفاده از URL ثابت بدون استفاده از مقادیر رکورد پایگاه داده:
url.format = https://www.example.com
- برای استفاده از یک مقدار ستونی که URL view است:
url.format = {0} url.columns = customer_id
- برای استفاده از یک مقدار ستونی که در موقعیت {0} در URL view جایگزین می شود:
url.format = https://www.example.com/customer/id={0} url.columns = customer_id url.columnsToEscape = customer_id
- برای استفاده از چندین مقدار ستون برای ساخت URL view (ستون ها وابسته به ترتیب هستند):
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 مشخص شده باشد، اگر ستون های محتوا نیز تعریف شده باشند، خطا محسوب می شود. با این حال، ابرداده و تعاریف ستون داده ساختاریافته همراه با ستونهای حباب مجاز هستند. |