Connectors SPI

Π˜Π½ΡΡ‚Π°Π½Ρ ΠΊΠΎΠ½Π½Π΅ΠΊΡ‚ΠΎΡ€ создаСтся Π² ConnectorFactory ΠΊΠΎΠ³Π΄Π° Trino Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ getConnectorFactory() для нашСго ΠΏΠ»Π°Π³ΠΈΠ½Π°. ConnectorFactory это просто интСрфСйс ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠΉ Π·Π° прСдоставлСниС ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠΎΠ½Π½Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΈ Π΅Π³ΠΎ экзСмпляра.

ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ ΠΊΠΎΠ½Π½Π΅ΠΊΡ‚ΠΎΡ€ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π½ΠΎ Π½Π΅ запись Π² источникС Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ экзСмпляры ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… сСрвисов:

  • ConnectorMetadata
  • ConnectorSplitManager
  • И ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π΄Π²ΡƒΡ…:
    • ConnectorRecordSetProvider
    • ConnectorPageSourceProvider

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ

ΠœΠ΅Ρ‚ΠΎΠ΄ create() класса ConnectorFactory ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΌΠ°ΠΏΡƒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ:

Connector create(String catalogName,
 Map<String,String> config,
 ConnectorContext context)

ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ всС значСния Π±ΡƒΠ΄ΡƒΡ‚ строками, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ ΠΈ прСобразования Π² Π½ΡƒΠΆΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ этих слоТностСй (ΠΈ огрСсти Π½ΠΎΠ²Ρ‹Π΅) Π°Π²Ρ‚ΠΎΡ€Ρ‹ Trino ΡΠΎΠ²Π΅Ρ‚ΡƒΡŽΡ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ: child:: Configuration class

ConnectorMetadata

Π­Ρ‚ΠΎΡ‚ интСрфСйс позволяСт Trino ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ списки схСм, Ρ‚Π°Π±Π»ΠΈΡ†, ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ источникС Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ ΠΊΠΎΠ½Π½Π΅ΠΊΡ‚ΠΎΡ€ (read-only) Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹:

  • listSchemaNames
  • listTables
  • streamTableColumns
  • getTableHandle
  • getTableMetadata
  • getColumnHandles
  • getColumnMetadata ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Ссли источник ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ схСмы, Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ Ρ‚ΠΎ рСализация этого интСрфСйса довольно ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Π°. Если ΠΆΠ΅ Π½Π΅Ρ‚ придётся ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π°Ρ‚ΡŒ.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ интСрфСйс позволяСт Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ возмоТности:

  • Schema management, which is creating, altering and dropping schemas, tables, table columns, views, and materialized views.
  • Support for table and column comments, and properties.
  • Schema, table and view authorization.
  • Executing Table functions.
  • Providing table statistics used by the Cost Based Optimizer (CBO) and collecting statistics during writes and when analyzing selected tables.
  • Data modification, which is:
    • inserting, updating, and deleting rows in tables,
    • refreshing materialized views,
    • truncating whole tables,
    • and creating tables from query results.
  • Role and grant management.
  • Pushing down:
    • Limit and Top N - limit with sort items
    • Predicates
    • Projections
    • Sampling
    • Aggregations
    • Joins
    • Table function invocation