Megosztás a következőn keresztül:


A PolyBase konfigurálása külső adatok eléréséhez a MongoDB-ben

A következőkre vonatkozik:SQL Server

A cikk bemutatja, hogyan használható a PolyBase egy SQL Server-példányon külső adatok lekérdezésére a MongoDB-ben.

Előfeltételek

Ha még nem telepítette a PolyBase-t, tekintse meg PolyBase telepítésicímű témakört.

Az adatbázis hatókörébe tartozó hitelesítő adatok létrehozása előtt az adatbázisnak rendelkeznie kell egy fő kulccsal a hitelesítő adatok védelméhez. További információ: CREATE MASTER KEY.

MongoDB külső adatforrás konfigurálása

Ha mongoDB-adatforrásból szeretné lekérdezni az adatokat, külső táblákat kell létrehoznia a külső adatokra való hivatkozáshoz. Ez a szakasz mintakódot biztosít ezeknek a külső tábláknak a létrehozásához.

Ebben a szakaszban a következő Transact-SQL parancsokat használjuk:

  1. Hozzon létre egy adatbázis-hatókörű hitelesítő adatot a MongoDB-forrás eléréséhez.

    A következő szkript létrehoz egy adatbázis-hatókörű hitelesítő adatot. A szkript futtatása előtt frissítse a környezetet:

    • Cserélje le a <credential_name>-t a hitelesítő adat nevére.
    • Cserélje le <username> a külső forrás felhasználónévre.
    • Cserélje le <password> a megfelelő jelszóra.
    CREATE DATABASE SCOPED CREDENTIAL [<credential_name>] WITH IDENTITY = '<username>', Secret = '<password>';
    

    Fontos

    A PolyBase-hez készült MongoDB ODBC-összekötő csak az alapszintű hitelesítést támogatja, a Kerberos-hitelesítést nem.

  2. Hozzon létre egy külső adatforrást.

    A következő szkript létrehozza a külső adatforrást. További információt CREATE EXTERNAL DATA SOURCEcímű témakörben talál. A szkript futtatása előtt frissítse a környezetet:

    • Frissítse a helyet. Állítsa be a <server> és <port> értékeket a környezetéhez.
    • Cserélje le <credential_name> az előző lépésben létrehozott hitelesítő adatok nevére.
    • Igény szerint megadhat PUSHDOWN = ON vagy PUSHDOWN = OFF, ha leküldéses számítást szeretne megadni a külső forrásnak.
    CREATE EXTERNAL DATA SOURCE external_data_source_name
    WITH (LOCATION = '<mongodb://<server>[:<port>]>'
    [ [ , ] CREDENTIAL = <credential_name> ]
    [ [ , ] CONNECTION_OPTIONS = '<key_value_pairs>'[,...]]
    [ [ , ] PUSHDOWN = { ON | OFF } ])
    [ ; ]
    
  3. A külső séma lekérdezése a MongoDB-ben.

    Az Azure Data Studio Adatvirtualizálási bővítményével csatlakozhat a MongoDB-illesztőHöz tartozó PolyBase ODBC-illesztő által észlelt sémán alapuló KÜLSŐ TÁBLA LÉTREHOZÁSA utasításhoz, és létrehozhatja azt. Manuálisan is testre szabhat egy szkriptet a rendszer által tárolt eljárás kimenete alapján, sp_data_source_objects (Transact-SQL). Az Azure Data Studio adatvirtualizálási bővítménye és sp_data_source_table_columns ugyanazokat a belső tárolt eljárásokat használják a külső sémaséma lekérdezéséhez.

    Ha tömböket tartalmazó MongoDB-gyűjteményekhez szeretne külső táblákat létrehozni, javasoljuk, hogy Data Virtualization bővítményt használja az Azure Data Studio. A meghajtó automatikusan végrehajtja a lapítási műveleteket. A sp_data_source_table_columns tárolt eljárás automatikusan elvégzi az összevonást a MongoDB-illesztőhöz készült PolyBase ODBC-illesztőprogramon keresztül.

  4. Hozzon létre egy külső táblát.

    Ha az Azure Data Studio Adatvirtualizálási bővítményét használja, kihagyhatja ezt a lépést, mivel a CREATE EXTERNAL TABLE utasítás automatikusan létrejön az Ön számára. Ha manuálisan szeretné megadni a sémát, fontolja meg a következő példaszkriptet egy külső tábla létrehozásához. További információt a CREATE EXTERNAL TABLEcímű témakörben talál.

    A szkript futtatása előtt frissítse a környezetet:

    • Frissítse a mezőket a nevükkel, a rendezéssel, és ha gyűjtemények, akkor adja meg a gyűjtemény nevét és a mező nevét. A példában a friends egy egyéni adattípus.
    • Frissítse a helyet. Adja meg az adatbázis nevét és a tábla nevét. Vegye figyelembe, hogy a háromrészes nevek nem engedélyezettek, ezért nem hozható létre a system.profile táblához. Emellett nem adhat meg nézetet, mert nem tudja lekérni belőle a metaadatokat.
    • Frissítse az adatforrást az előző lépésben létrehozott névvel.
    CREATE EXTERNAL TABLE [MongoDbRandomData](
      [_id] NVARCHAR(24) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
      [RandomData_friends_id] INT,
      [RandomData_tags] NVARCHAR(MAX) COLLATE SQL_Latin1_General_CP1_CI_AS)
    WITH (
      LOCATION='MyDb.RandomData',
      DATA_SOURCE=[MongoDb])
    
  5. Nem kötelező: Statisztikák létrehozása külső táblán.

    Javasoljuk, hogy hozzon létre statisztikákat a külső táblaoszlopokról, különösen az illesztésekhez, szűrőkhöz és összesítésekhez használt oszlopokról az optimális lekérdezési teljesítmény érdekében.

    CREATE STATISTICS statistics_name ON customer (C_CUSTKEY) WITH FULLSCAN; 
    

Fontos

Miután létrehozott egy külső adatforrást, a CREATE EXTERNAL TABLE paranccsal létrehozhat egy lekérdezésre képes táblát a forráson keresztül.

Például lásd Külső tábla létrehozása MongoDB-hez.

MongoDB-kapcsolat beállításai

A MongoDB kapcsolat beállítási lehetőségeiről bővebben a MongoDB dokumentációjában található: Kapcsolati karakterlánc URI formátum.

Laposítás

A laposítás engedélyezett a MongoDB-dokumentumgyűjteményekből származó beágyazott és ismétlődő adatok esetében. A felhasználónak engedélyeznie kell create an external table, és explicit módon meg kell adnia egy relációs sémát olyan MongoDB-dokumentumgyűjteményeken keresztül, amelyek beágyazott és/vagy ismétlődő adatokat tartalmazhatnak. A beágyazott/ismétlődő JSON-adattípusok az alábbiak szerint lesznek laposítva.

  • Objektum: rendezetlen kulcs/értékgyűjtemény, kapcsos zárójelek közé zárva (beágyazott)

    • Az SQL Server minden objektumkulcshoz létrehoz egy táblaoszlopot

      • Az oszlop neve: objectname_keyname
  • Tömb: rendezett értékek, vesszővel elválasztva, szögletes zárójelben (ismétlődő)

    • Az SQL Server minden tömbelemhez új táblázatsort ad hozzá

    • Az SQL Server tömbenként létrehoz egy oszlopot a tömbelem-index tárolásához

      • Oszlop neve: arrayname_index

      • Adattípus: bigint

Ezzel a technikával számos lehetséges probléma merül fel, amelyek közül kettő a következő:

  • Egy üres ismétlődő mező hatékonyan elfedi az ugyanazon rekord egybesimított mezőiben lévő adatokat

  • Több ismétlődő mező jelenléte az előállított sorok számának robbanásához vezethet

Az SQL Server például kiértékeli a MongoDB-mintaadatkészlet-éttermi gyűjteményt, amely nem relációs JSON formátumban van tárolva. Minden étteremhez tartozik egy beágyazott címmező és egy osztályzatok tömbje, amelyeket különböző napokon osztottak ki. Az alábbi ábra egy tipikus éttermet mutat beágyazott címmel és ismétlődően beágyazott osztályzatokkal.

MongoDB

Az objektumcím az alábbi módon lesz összesimulva:

  • A beágyazott mező restaurant.address.buildingrestaurant.address_building lesz
  • A beágyazott mező restaurant.address.coordrestaurant.address_coord-é változik
  • A beágyazott mező restaurant.address.streetrestaurant.address_street-re válik
  • A beágyazott mező restaurant.address.zipcoderestaurant.address_zipcode legyen

Az osztályzatok az alábbi módon lesznek lapítva:

jegyek_dátum osztályzatok_fokozat játékok_eredmény
1393804800000 Egy 2
1378857600000 Egy 6
135898560000 Egy 10
1322006400000 Egy 9
1299715200000 B 14

Cosmos DB-kapcsolat

A Cosmos DB Mongo API és a Mongo DB PolyBase-csatlakozó használatával létrehozhat egy külső táblát egy Cosmos DB-példány. Ezt a fenti lépések végrehajtásával érheti el. Győződjön meg arról, hogy az adatbázis hatókörébe tartozó hitelesítő adatok, kiszolgálói cím, port és hely sztring a Cosmos DB-kiszolgálóénak felel meg.

Példák

Az alábbi példa egy külső adatforrást hoz létre a következő paraméterekkel:

Paraméter Érték
Név external_data_source_name
Szolgáltatás mongodb0.example.com
Eset 27017
Replikakészlet myRepl
TLS true
Leküldéses számítás On
CREATE EXTERNAL DATA SOURCE external_data_source_name
    WITH (LOCATION = 'mongodb://mongodb0.example.com:27017',
    CONNECTION_OPTIONS = 'replicaSet=myRepl; tls=true',
    PUSHDOWN = ON ,
    CREDENTIAL = credential_name);

Következő lépések

További oktatóanyagok a külső adatforrások és külső táblák különböző adatforrásokhoz való létrehozásáról: PolyBase Transact-SQL referencia.

További információ a PolyBase-ről: Az SQL Server PolyBaseáttekintése.