یک رابط پایگاه داده را مستقر کنید

اخطار: رابط‌های مرجع Cloud Search «همان‌طور که هست» به‌عنوان کد نمونه برای استفاده در ایجاد رابط‌های کاری خودتان ارائه می‌شوند. این کد نمونه قبل از استفاده در محیط های اثبات مفهوم یا تولید نیاز به سفارشی سازی و آزمایش قابل توجهی دارد. برای استفاده در تولید، ما به شدت توصیه می کنیم از یکی از شرکای Cloud Search ما کمک بگیرید. برای کمک بیشتر در یافتن شریک جستجوی ابری مناسب، با مدیر حساب Google خود تماس بگیرید.

می‌توانید Google Cloud Search را برای کشف و فهرست‌بندی داده‌ها از پایگاه‌های داده سازمان خود با استفاده از رابط پایگاه داده Google Cloud Search راه‌اندازی کنید.

ملاحظات مهم

شما می توانید رابط پایگاه داده Cloud Search را تقریباً در هر محیطی که برنامه های جاوا می توانند اجرا شوند نصب و اجرا کنید، تا زمانی که رابط به اینترنت و پایگاه داده دسترسی داشته باشد.

سیستم مورد نیاز

سیستم مورد نیاز
سیستم عامل ویندوز یا لینوکس
پایگاه داده SQL هر پایگاه داده SQL با درایور سازگار با JDBC 4.0 یا بالاتر، از جمله موارد زیر:
  • MS SQL Server (2008, 2012, 2014, 2016)
  • Oracle (11g, 12c)
  • Google Cloud SQL
  • MySQL
Software JDBC درایور برای اتصال برای دسترسی به پایگاه داده (دانلود و نصب جداگانه)

استقرار کانکتور

مراحل زیر نحوه نصب را شرح می دهد اتصال دهنده و پیکربندی آن به گونه ای که پایگاه های داده مشخص شده را فهرست کرده و نتایج را به کاربران Cloud Search برگرداند.

پیش نیازها

قبل از استقرار رابط پایگاه داده Cloud Search، اطلاعات زیر را جمع آوری کنید:

مرحله 1. نرم افزار رابط پایگاه داده را دانلود و بسازید

  1. مخزن رابط را از GitHub کلون کنید.
    $ git clone https://github.com/google-cloudsearch/database-connector.git
    $ cd database-connector
  2. نسخه دلخواه کانکتور را بررسی کنید:
    $ git checkout tags/v1-0.0.3
  3. کانکتور را بسازید.
    $ mvn package
    برای رد شدن از آزمایش ها هنگام ساخت کانکتور، mvn package -DskipTests استفاده کنید.
  4. فایل فشرده رابط را در دایرکتوری نصب محلی خود کپی کرده و آن را از حالت فشرده خارج کنید:
    $ 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. پیکربندی رابط پایگاه داده

  1. یک فایل متنی ایجاد کنید و نام آن را connector-config.properties (پیش فرض) یا موارد مشابه بگذارید. Google توصیه می‌کند که فایل‌های پیکربندی را با پسوند .properties یا .config نام‌گذاری کنید و فایل را در همان دایرکتوری با رابط نگه دارید. اگر از نام یا مسیر دیگری استفاده می کنید، هنگام اجرای کانکتور باید مسیر را مشخص کنید.
  2. پارامترها را به عنوان جفت کلید/مقدار به محتویات فایل اضافه کنید. فایل پیکربندی باید پارامترهای دسترسی به منبع داده، دسترسی به پایگاه داده، بیانیه 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 کانکتور پایگاه داده است. فایل jar
  • 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

مورد نیاز است. مسیر کامل پایگاه داده قابل دسترسی، مانند jdbc:mysql://127.0.0.1/dbname .

نام کاربری و رمز عبور پایگاه داده 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}

مقدار می‌تواند:

  • هیچ‌کدام : از صفحه‌بندی افست استفاده نشود
  • : استفاده از صفحه‌بندی با افست ردیف

    برای استفاده از صفحه‌بندی با افست، پرس و جوی SQL باید دارای علامت سؤال ( ? ) برای جابه‌جایی ردیف باشد که با صفر شروع می‌شود. در هر پیمایش کامل، پرس و جو به طور مکرر اجرا می شود تا زمانی که هیچ نتیجه ای برگردانده نشود.

جستجوی پیمایش افزایشی db.incrementalUpdateSql = SELECT column-1 [, column-2 ,...] FROM database-name WHERE last_update_time > ?

اگر پیمایش های تدریجی را برنامه ریزی می کنید، الزامی است.

"؟" در پرس و جو یک مکان نگهدار اجباری برای مقدار مهر زمانی است. رابط از مهر زمانی برای ردیابی تغییرات بین جستجوهای SQL پیمایش افزایشی استفاده می کند.

برای ردیابی ستون مهر زمانی پایگاه داده برای آخرین زمان به روز رسانی، نام مستعار timestamp_column را به دستور 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
    placeholderl0
  • :
    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 > ?

پارامترهای تعریف ستون

پارامترهای زیر ستون هایی را مشخص می کنند که در عبارات پیمایش استفاده می کنید. هر رکورد

l10n-placeholder15
تنظیم پارامتر
همه ستون ها 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
ستون پیوند URLurl.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 است:
    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 ...]

ستون های محتوا (به جز مجموعه ستون برای contentTemplate.db.title ) را به عنوان فیلدهای با کیفیت جستجوی بالا، متوسط ​​یا پایین تعیین کنید. ستون های نامشخص به طور پیش فرض روی کم است.

ستون های داده های محتوا db.contentColumns = column-1 [, column-2 ...]

ستون های محتوا را در پایگاه داده مشخص کنید. اینها قالب بندی شده و به عنوان محتوای سند قابل جستجو در Cloud Search آپلود می شوند.

اگر مقداری را مشخص نکنید، پیش‌فرض " * " است که نشان می‌دهد همه ستون‌ها باید برای محتوا استفاده شوند.

ستون Blob db.blobColumn = column-name

نام یک ستون تک لکه ای را برای استفاده برای محتوای سند به جای ترکیبی از ستون های محتوا مشخص کنید.

اگر یک ستون blob مشخص شده باشد، اگر ستون های محتوا نیز تعریف شده باشند، خطا محسوب می شود. با این حال، ابرداده و تعاریف ستون داده ساختاریافته همراه با ستون‌های حباب مجاز هستند.